[Feature Request] better error handling
For a long time now, i've been thinking the way RA is silently failing when something goes wrong at game launch is horrible, some use cases :
- bad dump (unsupported format for iso dump, bad romset for arcade emulators, ...)
- bad video driver (trying to launch an opengl only core with incompatible video driver like vulkan)
- missing bios (i know there have been attempts at handling this through the info file, imho it's the wrong way to do this though, only the core knows what it needs, at runtime, for a specific game, which might be different for another game supported by the core, see emulators handling arcade games, the core can also use several fallback paths for those bioses which might be hard to handle through the info files)
Core maintainers need a way to explain what's wrong to the user through the RA UI when "load content" fails, and provide tips to fix their issue, otherwise we spend our time asking for logs over those trivial setup issues (time that could be better spent), because final user never check logs by himself in the first place.
On the same topic, having a way to also provide warnings at launch would be a good idea (with a "ignore" action to launch the game anyway), one use case is for discrete switching to HLE bioses in several cores, those things are never on par with real bioses, so switching to them if bios is missing without telling the user "it would probably work better if you had the real bios" feels totally wrong.
bad dump (unsupported format for iso dump, bad romset for arcade emulators, ...)
There's not really a good way for us to check for this, since the bad dump may be intentional. A patched translation, mod, etc. You could try using clrmamepro or similar program to verify your files.
bad video driver
Agreed there could be more feedback provided. The drivers do pretty well outputting to the console, but it could output more info there.
missing bios
There is the Firmware section of Core Info. But you're right checking in runtime and outputting that info to the user would be mucho helpfulo. What cores need this? Mind posting an issue for each one that could benefit from it?

Core maintainers need a way to explain what's wrong to the user through the RA UI
Which core? What error? It would be best to create an issue in the cores' issue queue to add this. RetroArch has no responsibility for how cores function. It'll just run them... Cores can output messages, and post to logs as much as they want :wink:
There's not really a good way for us to check for this, since the bad dump may be intentional
That's why it's already done at runtime by arcade cores, and they will fail "loading content" if something is wrong, the issue here is that we have no way to present that information to the users, apart from the logs which they won't look.
You could try using clrmamepro or similar program to verify your files.
That's already what is recommend to the users in the documentation they won't read.
Agreed there could be more feedback provided.
There is new stuff about this in the info files, it's not really sufficient though because the requirement can be dynamic depending on core options.
Cores can output messages, and post to logs as much as they want
Logs are already explicit, but that's expecting the users will read them, which is not likely to happen for 99.99% of them. In the API there is a callback to send some message to screen, but it expects that the core is rendering something in the first place, which won't happen if it failed "loading content".
Which core? What error?
I work on FBNeo, the 3 Yabause-based cores, and flycast, those bug reports happen in various places (forums like libretro, retropie, ...) and not only on github, linking a few from github : https://github.com/libretro/FBNeo/issues/137 => i should be able to tell the user that the romset doesn't exist for this core, and recommending him to validate his romsets through clrmamepro + the dat files i provide. https://github.com/libretro/FBNeo/issues/130 https://github.com/libretro/yabause/issues/73 => i shouldn't have to go through info files to deal with this, those cores are doing checks at runtime for bioses, with several fallback paths https://github.com/libretro/yabause/issues/104 => vulkan selected, opengl required
It's a lot worse on forums (happens generally several times a week) because users are less tech savvy there. All of those issues could benefit from a good error callback allowing the dev to provide information he already gathered to the user.