Laurens Holst wrote:
> > Indeed, this is even more intuitive than numbering.
> > Let's them make the strings be "MSX", "MSX2",
> > "MSX2+" and "MSX turboR".
>
> What if I write MSX 2+ and MSX turbo R??? No, a number is much more clear I
> think.
Then you write a syntax error. That is always possible, in the case of
numbers you could write a "5" which is not defined, or an "A" which is not
even a number.
No matter whether we choose numbers or strings, you still need a
documentation file when writing the INI. But strings are more readable. It's
hard to remember what "1" means, is it MSX1 or is it MSX2 (as in the #002D ID
byte)?
> And if you use my 'system' I proposed in my prev. message, you can
> define a seperate 'option' named 'altered CPU speed'.
That option is a good idea, but it can be used in a text-based info file as
well.
> I don't like the idea of AND a seperate file AND those seperate files
> compressed again in one file, it can be done the way I described too which
> is much more transparant and easy, the emulator doesn't need difficult
> unzip routines for example.
Unzip consists of two parts:
- decompression
- archive directory handling
You can avoid decompression only by not compressing the data. This choice is
independant of the choice between single file and archive.
About archive directory handling, this is similar to the chunks system you
described. Archive directories are more complex, but also more powerful.
So there is really not that much of a difference. The advantage of using a
known archive and compression format, is that there are no new tools needed
to create such files.
> You can edit it through emulators and/or an
> external tool. Like editing the ID3 information in MP3's through Winamp. I
> don't think that's a pain...
Adding this functionality to the emulator is not a good idea, because it
hardly has any overlap with existing emulator functionality. A separate tool
is possible, but it's easier to use existing tools like a unzip and a text
editor.
Consider what has to be done when the format is extended. A new specification
document must be released. In the case of a text-based info file, that's all
there is to it. But if there is a separate tool, the tool has to be upgraded
as well.
> And I DO think files with lots of text in it
> are suited for configuration files etc, but they are an awful waste of
> space when they are used for every ROM file on your computer's hard disk.
How large are those files anyway? Probably a couple of hunderd bytes. Since
they are stored in an archive file, they don't use an entire cluster on a FAT
filesystem, which is the main reason why many small files eat up a lot of
space.
> There is a big difference between what you describe and what I describe.
> Your idea is dedicated to emulator use (including preview images etc.), and
> mine is, as the title describes, an extended ROM format, purely about the
> ROM information, to which as well useful (ROM mapper type) as unuseful
> (release date) can be added. It can easily be extended, and it doesn't need
> a lots-of-work unzip routine and a harder-to-code parser (from an MSX
> perspective).
If ROM mapper type is all you care about, just write a good auto-detection
algorithm. The one in fMSX is pretty simple, but I haven't seen it guess
wrong yet.
The power of a unified MSX game format comes from combining a number of
different features:
- losing the distinction between ROM/DSK/BASIC/COM
- info like full name, company etc
- a screen shot to easily recognise the game
- knowing the system requirements
- generic mapper algorithm
- finding related info on the web
Note that most of those features are independant, for example a screen shot
can be used for both ROM and DSK games. If we made an extended ROM format,
we'd have to duplicate all the work when we want an extended DSK format.
> I think it's essential to keep it all in one file, 'cause multiple files
> mess up your directory and make it less simple to copy (imho lots of
> seperate sram and save game files in your game directory are a crime). I
> also think it's not the task of this file format to compress the file (it's
> an extended ROM format, not an emulator-optimized "ROM in a zip-file"
> format, which actually is two formats in one).
Why do you consider keeping it in a single file a task of the file format,
but not compression?
> The user can decide if he
> wants to compress the file or not, it should be seperate from the file
> format.
That's the philosophy of .tar.gz, separating the archive directory (tar) from
the compression (gz). But we would actually need the opposite order (.gz.tar)
for optimal performance, so that a single file could be decompressed. The
info file and the screenshot have to be decompressed before the rest. In the
case of large ROMs or DSK images, this makes a difference. And if the
screenshot is a PNG, it could be stored in the archive with zero compression
to allow fast extraction (it wouldn't compress well anyway).
> And if you want your emulator to be able to read compressed games,
> then simply let it read the first ROM file when a user opens a ZIP file
> (just like zSNES, Winamp, and some arcade emulators do).
Since ZIP has an archive directory, why not use it and put multiple files
inside?
There is no way were going to agree on a single design if we have
incompatible goals. So it's better to realise that and separate them. We can
create the MSX game format just for emulators and distribution. For running
those files on a real MSX, intermediate steps are necessary.
Create an MSX ROM loader (or extend LoadROM) and give that it's own extended
ROM format. Then write a converter for the MSX game format. That way, you'll
combine the advantages of both approaches: there is a format optimized for
real MSX (single file, no screenshot, no compression) and there is a format
optimized for emulators (more complex and more powerful).
Bye,
Maarten
--
For info, see http://www.stack.nl/~wynke/MSX/listinfo.html