I was trying advscan to manage my samples and found out it messed
invaders.zip's sample. According to the available zip at mame.net, it
should include the files 0 to 18.wav.
Not all those samples are used by the rom "invaders". "invaders" only
uses 1 to 9.wav. The rest are specific to other roms, but are still
supposed to be stored in the archive of samples "invaders.zip" (see
below). Some others samples are common to the rom "invaders" and to
those other roms using some other additional samples (0 and 10 to
18.wav). This is supposedly managed internally by mame as seen in the
info.xml (I am no programmer, so I do not know how relevant the
info.xml that mame generates is to the inner workings of mame). In
info.xml each game's description using samples starts, for example,
<game name="kamikaze" sourcefile="astinvad.c" cloneof="astinvad"
Note how the "sampleof" directive tells mame where to look for samples.
Reusing samples like this avoids having unnecessary duplicate samples
inside different archives.
AdvScan, however, seems to like having a different sample archive for
each rom that needs any. And hence, it will try to archive the samples,
following with the example above, for the rom "kamikaze" in a separate
kamikaze.zip sample archive that will have some identical samples than
those included in the sample archive invaders.zip.
If it was all a matter of duplicates, it would be a minor hassle, since
samples are not that many anyhow. But the problem is that advscan will
also trim the sample archive invaders.zip by removing any sample that
is not used by the rom "invaders" (even though the info.xml clearly
states that samples used by "kamikaze" should be stored inside
invaders.zip whether they are used by the rom "invader" or not). Hence,
if any mame port uses the sampleof directive to look for samples it
will not be able to find some of the samples of, following with the
example, kamikaze, since the archive invaders.zip will be missing them
(because advscan will have move them to kamikaze.zip, contradicting the
Why not make everything easier and use the directive to what it was
intended for? AdvScan uses info.xml to ask for info on how to archive
roms, sample and disks. Why was it decided to not use it to its full
I found out that this was actually submitted as a bug report by the
begining of 2003:
> advscan incorrectly handles sampleof directive
> advscan seems to honour cloneof in favour of sampleof
> in case of games that use samples from different game
> than it's parent.
> affected games are (.63)
> game_sample_miss astinvad Astro Invader
> game_sample_miss invad2ct Space Invaders II (Midway, cocktail)
> game_sample_miss kamikaze Kamikaze
> game_sample_miss spaceint Space Intruder
> game_sample_miss spcking2 Space King 2"
And it was closed with a followup that makes me think that either I am
not understanding the answer or the person answering did not understand
the issue being submitted:
> Probably advscan reports the sample as missing because it's
> incomplete. For example the "kamikaze" game requires
> the sample 0.wav which isn't an "invaders" sample.
Precisely what the person submitting the bug disagrees on: sample 0.wav
is an "invaders" sample because the info.xml says so, by declaring that
kamikaze's samples are 'sampleof="invaders"'
> Note that if the 0.wav file is present in the invaders.zip
> archive, it will be removed because it isn't needed by the
> game invaders.
> Try copying manually the missing samples in a new
> kamikaze.zip archive.
What are we using a manager for if we need to do things manually?
Shouldn't it be easier just to follow the directives that info.xml
gives us, which is why they are there from the beginning?
Just my humble opinion, of course.