This PR makes the following improvements to the core options interface:
Core options have been updated to v2 format, with sublabels and categories
Irrelevant core options are now hidden dynamically on frontends that support the RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY and RETRO_ENVIRONMENT_SET_CORE_OPTIONS_UPDATE_DISPLAY_CALLBACK environment callbacks
A significant number of existing core options cause undefined behaviour if they are changed via the frontend at runtime. These are now flagged as requiring a core restart, and runtime changes are ignored. Note that these parameters can still be changed at any time via the in-game menu. (In truth, these options do not strictly require a core restart, but the values can only change at specific times - this is handled correctly by the in-game menu, but attempting to do this via the frontend options interface produces highly confusing results for the user...)
All settings modified via the in-game menu now update the corresponding frontend option values on frontends that support the RETRO_ENVIRONMENT_SET_VARIABLE environment callback (i.e. changes made via the in-game menu are now properly saved)
This PR makes the following improvements to the core options interface:
RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY
andRETRO_ENVIRONMENT_SET_CORE_OPTIONS_UPDATE_DISPLAY_CALLBACK
environment callbacksRETRO_ENVIRONMENT_SET_VARIABLE
environment callback (i.e. changes made via the in-game menu are now properly saved)In addition, this PR backports the upstream commit https://github.com/djyt/cannonball/commit/0e8be275b601cd26457d76d20284bfa59f07396f, which fixes a segfault when launching time trial mode from the menu. This is unrelated to core options, but it was difficult to test the other changes when the core kept crashing... :)
Closes #20 (XML configs are depreciated, but settings do save correctly now)