mame icon indicating copy to clipboard operation
mame copied to clipboard

'Hide Romless machines from available' setting not respected after internal audit.

Open john-iv opened this issue 1 year ago • 22 comments

MAME version

0.262 (mame0262-207-g70e3bc24e71)

System information

Windows 11 Pro x64 22H2 OS Build 22621.3155 Asus ROG Strix Z690-F Intel i7-12700K @ 5.2Ghz Corsair 64GB 5200Mhz DDR5 RAM 6TB (3x2TB) Samsung 980 Pro NVMe in RAID-0 XFX AMD Radeon RX 5600XT 6GB 2 x Samsung G5 Odyssey 32" FreeSync Enabled 2560x1440 Fullscreen

INI configuration details

No mame.ini

Emulated system/software

No response

Incorrect behaviour

206 machines shown in UI filter 'Available' after an audit with only puckman.zip in \roms folder. The setting hide_romless 1 in ui.ini does not appear to be respected after the audit and subsequent launches.

Expected behaviour

Only show the present in \roms puckman and its clones. Hide romless to be respected.

Steps to reproduce

  1. Create new folder.
  2. Put only mame.exe in it, create roms folder.
  3. Place merged set of puckman.zip in roms folder (merged set will contain all the puckman children/clones)
  4. Launch mame.exe
  5. Go to General Settings / Misc. Settings confirm 'Hide Romless machines from available' is 'On', confirm this also in ui.ini
  6. Hit F1 and audit all machines.
  7. Choose available filter on left.
  8. Observe 206 machines.

Available machines attached.

mame_avail.zip

Additional details

No response

john-iv avatar Feb 16 '24 07:02 john-iv

I had a quick look, and that appears to be a list of systems without ROMs, as well as Puck Man clones. Please think before opening pointless issues to waste everyone's time.

cuavas avatar Feb 16 '24 07:02 cuavas

Just to note, there is an option in the UI to "Hide romless machines from available list" by navigating GENERAL SETTINGS > MISCELLANEOUS SETTINGS.

Tafoid avatar Feb 16 '24 10:02 Tafoid

With only the mame.exe and puckman.zip as the only rom, the default ui.ini that's created after first run defaults to hide_romless 1. It appears the hide_romless 1 in ui.ini does not take any more after an audit.

john-iv avatar Feb 16 '24 23:02 john-iv

I can reproduce this here.

The bug is due to audit creating a ui/mame_avail.ini containing the ROMless machines without the ROMless machines filtered out, and no mechanism being in place to filter this list out later.

When ui/mame_avail.ini is not present, a completely separate code path is used to discover available ROMs, specifically menu_select_game::build_available_list(). This code, rather than using the media_auditor subsystem in src/frontend/mame/audit.cpp, separately looks for ROM files, and then if it is enabled, separately looks for ROMless machines.

The relevant code is about here: https://github.com/mamedev/mame/blob/master/src/frontend/mame/ui/selgame.cpp#L74. If the mame_avail.ini file exists, load_available_machines() returns true and build_available_list(), where the filtering takes place, does not ever run.

Audit seemed quite fast on my computer; is there a reason we don't always audit, and instead have two code paths for the same function? It seems like it might be best to refactor the "build drivers list" to use the audit code, and add the ability to the audit code to generate or detect a separate list of ROMless machines (I'm looking for guidance on preferred approach here).

balr0g avatar Feb 17 '24 01:02 balr0g

I don't like the "hide ROMless machines" option in the first place. It makes the NES, Mega Drive etc. disappear, and is a source of confusion in general. It was added to appease a small number of people complaining, but I don't think it's worth putting much effort into supporting the feature.

Auditing on every start would increase startup time, which is never good. It would particularly impact developers who are frequently starting MAME. It has more impact if ROMs are on slower media (e.g. a network drive). It also does a lot of I/O, and uses a fair bit of energy, which is bad for battery-operated devices. The more systems MAME supports, the higher the impact gets.

It also causes a different usability issue in that most people expect to see "present but some ROMs missing/incorrect" systems in the available list, and get an error message on attempting to start. Hiding them (as the old MAME32 used to do) leads to frequent, "I downloaded ROMs, why doesn't MAME see them?" questions.

cuavas avatar Feb 17 '24 02:02 cuavas

I think the feature should be removed to completely solve the confusion!

ghost avatar Feb 17 '24 05:02 ghost

If the "hide ROMless machines" option is removed, it would be nice if there was another way to only show systems available due to the ROMs the user has decided to add. Maybe a filter option like "Available (requiring ROMs)". Requiring a user to scroll through 205 extra systems instead of just the systems associated with the ROMs that they have added is a really bad user experience. I hit this specific issue about a month ago, when I added a few ROMs, then ran the audit. Instead of my list going from about 10 systems to 12, it now listed hundreds to scroll through. Forced me to manually create a 'favorites' list instead of just being able to use the 'available' filter, that I had been using prior to the audit. Screenshot 2024-02-17 at 12 46 34 AM

mgarlanger avatar Feb 17 '24 07:02 mgarlanger

The number of supported systems is so high that the vast majority of people aren’t going to be scrolling through the list. They’re going to be searching.

It’s an even worse experience if systems that don’t have system-specific ROMs are hard to find/use. We’ll immediately get complaints like, "Why did MAME remove NES and Mega Drive?” when it comes to popular systems, and it will lead to people not discovering more obscure systems at all.

How would someone even “decide to add” ROMs for a system that doesn’t have any?

I’m also very wary of adding more complexity to hide things people don’t want to see after last time someone’s misguided attempt at that made it impossible to launch systems that have device ROMs but not system ROMs from the internal UI (e.g. SNES/Super Famicom couldn’t be launched). Having one or more releases go out in that state reflects very poorly on the project.

cuavas avatar Feb 17 '24 07:02 cuavas

What about

  • removing "hide ROMless machines": in this way software list machines like the NES, mega drive, ... are not hidden "by accident". There is no real need to hide machines without ROMs (see confusion @cuavas explained)
  • add instead a feature "hide software list machines": this is specific for people who don't use software lists and want a "pure" MAME vanilla list (before the merge with MESS). So it hides the NES, mega drive, ... (= all machines supporting 1 or more software lists)

Both things above don't generate any confusion and add a cool new feature: going back to MAME's roots without MESS for people who are not interested in the software lists.

ghost avatar Feb 17 '24 17:02 ghost

That would also hide Neo Geo and ST-V arcade systems, and Golden Tee Fore! games. It also wouldn’t hide all the non-arcade systems that have fixed software (e.g. numerous TV games and hand-helds), or systems that just don’t have software lists for whatever reason.

cuavas avatar Feb 17 '24 17:02 cuavas

If the "hide ROMless machines" option is removed, it would be nice if there was another way to only show systems available due to the ROMs the user has decided to add. Maybe a filter option like "Available (requiring ROMs)".

After removing "hide ROMless machines" option, "Available ROMs" should show machine with ROMs found AND machines that don't require any ROMs (available at any time of course).

ghost avatar Feb 17 '24 17:02 ghost

That would also hide Neo Geo and ST-V arcade systems, and Golden Tee Fore! games. It also wouldn’t hide all the non-arcade systems that have fixed software (e.g. numerous TV games and hand-helds), or systems that just don’t have software lists for whatever reason.

Yes Neo Geo and ST-V are 2 exceptions, but the Golden Tee Fore! games will all be in the list since they don't support software lists. Where you see a Golden Tee Fore! game that supports a software list and which software list would that be?

The TV and handheld games can be hidden fine, because those are part of MESS. So my suggestion "hide software list machines" is pretty close to a vanilla MAME game list, a list of arcade games only which were the subject of early MAME.

ghost avatar Feb 17 '24 17:02 ghost

Golden Tee Fore! games have software lists for update CD media.

There is no “MESS” any more, and hasn’t been for close to a decade. Most TV games and hand-held games in question were never part of MESS as they were added to MAME after MESS ceased to exist.

Your suggestion is not something we’re interested in implementing, besides being unworkable.

cuavas avatar Feb 17 '24 17:02 cuavas

Golden Tee Fore! games have software lists for update CD media.

I didn't know there were machines supporting software list WITHOUT having a "softwarelist" tag in the XML. Very strange. Is it forgotten?

There is no “MESS” any more, and hasn’t been for close to a decade. Most TV games and hand-held games in question were never part of MESS as they were added to MAME after MESS ceased to exist.

No matter when they were added, my suggestion filters them out (as not being part of the arcade game list)

Your suggestion is not something we’re interested in implementing, besides being unworkable.

Since in the XML it's clearly visible which games use a software list or not ("softwarelist" tag in the XML) and MAME writes this XML file all by itself, it would be perfectly possible to filter them out by doing a check on the machine. It's also perfectly possible to do this in a frontend (by using the XML).

ghost avatar Feb 17 '24 17:02 ghost

I didn't know there were machines supporting software list WITHOUT having a "softwarelist" tag in the XML. Very strange. Is it forgotten?

What do you think hash/gtfore.xml is for? It’s hooked up to multiple Golden Tee Fore! games.

No matter when they were added, my suggestion filters them out (as not being part of the arcade game list)

There is no “arcade games list” – MAME does not maintain any artificial separation between “arcade games” and other systems.

Since in the XML it's clearly visible which games use a software list or not ("softwarelist" tag in the XML) and MAME writes this XML file all by itself, it would be perfectly possible to filter them out by doing a check on the machine.

But filtering based on whether a system has a software list or not would not achieve what you want.

It's also perfectly possible to do this in a frontend (by using the XML).

Go ahead and write a front-end that does this.

I’d advise you to stop arguing and derailing the conversation, or either this issue will need to be locked or you’ll need to be blocked.

cuavas avatar Feb 17 '24 17:02 cuavas

I didn't know there were machines supporting software list WITHOUT having a "softwarelist" tag in the XML. Very strange. Is it forgotten?

What do you think hash/gtfore.xml is for? It’s hooked up to multiple Golden Tee Fore! games.

yes, but in the XML there is no "softwarelist" tag. It's forgotten there (all other software list machines have this tag).

No matter when they were added, my suggestion filters them out (as not being part of the arcade game list)

There is no “arcade games list” – MAME does not maintain any artificial separation between “arcade games” and other systems.

Yes of course, but there was in the early days of MAME and my suggestion filters out all non-arcade games.

Since in the XML it's clearly visible which games use a software list or not ("softwarelist" tag in the XML) and MAME writes this XML file all by itself, it would be perfectly possible to filter them out by doing a check on the machine.

But filtering based on whether a system has a software list or not would not achieve what you want.

Yes it does (but Neo Geo and ST-V are 2 exceptions because they have a softwarelist too)

I’d advise you to stop arguing and derailing the conversation, or either this issue will need to be locked or you’ll need to be blocked.

No need to, what I tell above is true. I won't discuss any further.

ghost avatar Feb 17 '24 18:02 ghost

So to return to the original issue, I think removing "hide ROMless machines" is the best. (and not introducing any other filter, also not my "software list" filter)

ghost avatar Feb 17 '24 18:02 ghost

I'm constantly astonished by the extent to which people get mad because we let them play more free games.

rb6502 avatar Feb 17 '24 19:02 rb6502

I think there are three options here that would keep the UI consistent:

Option 1: Remove the "Hide Romless machines from available" entirely.

Option 2: a. When attempting audit, check if "Hide Romless machines from available" is enabled. If yes, warn the user that an audit will force this setting disabled. b. When attempting to enable the "Hide Romless machines from available" setting, check if the cached machine list has been created. If yes, warn the user and delete the cached machine list.

Option 3: If "Hide Romless machines from available" is enabled, ignore the cached machine list. The problem here is that this leads to a hidden inconsistency in behavior which is not preferred.

balr0g avatar Feb 18 '24 18:02 balr0g

From a user normal user perspective, the OP has a point that, if they made the effort to Audit the "roms" , they just want to see what is going to run/work without any drama. = "just show me what is going to run or not" .

So if they have a handful of roms/chds they downloaded 20 mins ago and or some folder they have from another drive, the whole point is, they just want some way to LIST/SHOW what is going to work or not.

So, it could be a matter of adding another strict "short list" or what ever it's called just to simply say "all these here will work".

The average user doesn't want to scroll through some big list of 200+ "items" that show up, but won't actually work, but might, or might not or kinda do, but don't really because of 1 rom etc missing.

So, perhaps there is a way to improve this? - again, could be another category? or just renaming the current one that says "Available" to something else? - because currently I do see the OP's point - it isn't really quite user friendly or even true (from a user perspective) showing a big list of things when they specifically and know they only have a handful of "roms" and just want to them and go from there.

randomuser4444 avatar Feb 20 '24 09:02 randomuser4444

From a user normal user perspective, the OP has a point that, if they made the effort to Audit the "roms" , they just want to see what is going to run/work without any drama. = "just show me what is going to run or not" .

The 200 or so items are going to work, because they don’t need system ROMs.

cuavas avatar Feb 20 '24 09:02 cuavas

The number of uninformed comments is getting ridiculous. Limiting conversation to team members.

cuavas avatar Feb 20 '24 09:02 cuavas