Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
09241 Crash/Freeze Minor Always 11 days ago 4 days ago
Tester Robbbert View Status Public Platform MAME (Self-compiled)
Assigned To Resolution Open OS Windows 11/10 (64-bit)
Status [?] Confirmed Driver
Version 0.279 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary 09241: lx_frozen, rizstals: chd diff conflict
Description The DIFF path does not include a gamename folder, therefore it's possible for CHD name collisions to occur. Currently there's 2 sets of 2 games that use the same-named chd, but of course with loose software any number of collisions could conceivably occur. Of the 2 sets, only one of them makes a DIF file - lx_frozen and rizstals. If you run one of them you get a dif, now run the other and you get the confusing message:

sdcard.chd DIFF CHD ERROR: Invalid parent
Fatal error: Required files are missing, the machine cannot be run.


The first line conveys no meaningful info, while the 2nd line is just wrong.

Right now, those 2 games don't work, but that could change.

I suggest that a gamename folder be automatically added, same as the nvram folder is now, so that no such problem can occur now or in the future.
Steps To Reproduce See above
Additional Information List of duplicated chd names with different SHA1:

r00.chd : used in mtchxlgld and mtchxlti - fortunately no dif from these

sdcard.chd : used in lx_frozen and rizstals - dif collision prevents both games being able to be started

There's many more cases of different games using the same identical CHD, and I didn't test to find out if any DIF files produced are compatible.
Github Commit
Flags
Regression Version
Affected Sets / Systems lx_frozen, rizstals
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
1
User avatar
No.23600
cuavas
Administrator
8 days ago
This has always been an issue. It doesn’t affect loose software, though – MAME shouldn’t make diff files for loose CHDs, it should just mount them write-only if they aren’t uncompressed. You have to consider interaction with software lists, though.

You could change it to use <system>/<label>.dif for CHDs specified by systems. It would mean clones that share a CHD would get different diff files, whether they’re compatible or not. This may be considered a good or bad thing.

For software, there’s the question of whether the system should be in the path. You could use <system>/<list>/item/<label>.dif or just <list>/<item>/<label>.dif if the system is included or excluded.

The latter would be more convenient for things like Mac hard disks, as the same disk image can usually boot a variety of systems, and you can install software then run it on multiple machines.

However Windows installations have always required a lot more messing around to move from one machine to another, so PC hard disk software lists would still require making uncompressed copies of the disk image to use them with multiple emulated systems. Newer Linux distros tend to be reasonably portable across platforms, but older Linux distros and more traditional UNIX systems tend to require more effort to move to a different system (e.g. recreating device files).