Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
03264 Misc. Minor Always Jun 15, 2009, 07:01 Jul 20, 2017, 04:23
Tester pintcat View Status Public Platform SDLMAME
Assigned To Resolution Unable to reproduce OS Linux
Status [?] Closed Driver
Version 0.132 Fixed in Version Build I686
Fixed in Git Commit Github Pull Request #
Summary 03264: SNK/NeoGeo games won't start via mame's native GUI
Description If I try to start any any game which uses the neogeo rom set (tested with Metal Slug & King Of Fighters series) from the integrated GUI I get this error message:

"The selected game is missing one or more required ROM or CHD images. Please select a different game."

I've placed all my rom sets to a separate folder and changed the mame.ini settings to access this folder as well. All this worked with earlier versions and I didn't change anything, just updated the mame binaries.
Even more strange: If I try to start mame directly with one of these games from command line everything works fine.

This happens in the same way with the official (Windows) MAME binaries and at least with version 0.131x too.
Steps To Reproduce
Additional Information
Github Commit
Flags
Regression Version 0.131
Affected Sets / Systems
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
2
User avatar
No.04507
etabeta
Developer
Jun 15, 2009, 08:34
I cannot reproduce. you probably miss some rom in the bios romset: look for the missing file.
User avatar
No.13995
cuavas
Administrator
Jul 20, 2017, 04:23
The issue is likely that the internal UI requires ROMs for all BIOS variants to be present before it will launch a system while launching it from the command line only requires the selected BIOS variant to be present. When a new version of MAME adds support for a new BIOS variant (e.g. a new NeoGeo UniBIOS hack), you need to update your ROMs of you can't launch games from the internal UI. There are reasons for this which are partly artefacts of how MAME works (or doesn't).

Firstly, the internal UI audits the system set before showing the BIOS selection menu. This makes the code simpler because it only has to be able to audit (and display results) when the software or system selection menu is at the top of the menu stack. Changing it would require it to do this from the BIOS or software part selection menu as well. If the selected BIOS isn't known at the point where the audit happens, you can't audit the selected BIOS only.

Secondly, the internal UI uses the audit class to audit ROM sets. The audit class doesn't really have a good way to specify a BIOS, and changing that would be complicated since it works on sets of systems, not individual systems.

Changing the internal UI to run the system and catch the result of the initial ROM load would hurt the user experience. It would slow down the response as you'd have to tear down the running empty machine and UI, do the hard reset, then when the load fails tear down the running machine, do the hard reset and start the empty machine again to display the internal UI again. You'd lose all your menu stack state along the way. It's also hard to get the results of the ROM load out of the core in a usable form.

This is partly due to the way the internal UI has been hacked into MAME. You're effectively emulating an empty machine with a particular in-emulation menu displayed over the top of it. MAME doesn't really provide a way to run with no machine loaded. Changing this would be a huge amount of work. It would be nice as a long-term goal, but in the short term it isn't realistic to be considering changing it.