BizHawk
BizHawk copied to clipboard
Preferred core picker is intransparent and inflexible
The current core preferences picker (Config->Preferred Cores) is not fully transparent in how it works, and does not allow configuring everything. On top of that, it is also manually maintained and needs to be updated when cores get added or modified, which does / did not always happen.
Let's take this example:
What happens when
Gambatte is selected here? The preferred core for GB and GBC will be set to Gambatte. The fact that both GB and GBC are affected is not made clear anywhere and can only be determined by testing it out.
One might argue that this could be "user-friendly" by not overloading them with redundant options, but I'd say having preferences made explicit is preferable over implicitly assuming GB implies GBC.
We can already see that it is impossible to set different core preferences for GB and GBC games, and the same is true for a number of other options.
One thing I was only recently made aware of in the context of #3635: It is currently impossible to choose the SubBSNESv115+ core for Satellaview games, even though it does have the corresponding CoreConstructor attribute, because it isn't exposed in the preferred core picker. Adding it to the SNES group is problematic because then the preference for SNES is applied to Satellaview, even though some SNES cores don't support Satellaview at all!
My suggestion is to make choices for all SystemIDs explicit and automatically generated. That would guarantee that
- all SystemIDs can have a preferred core set via config
- all cores can be selected without having to manually add them to the config
CoreConstructorattributes have user-facing meaning
I have #4033 that shows my suggested approach.
see also #2289