Use a cleaner approach which can feasibly work on all platforms.
Uses input_push/pop_analod_dpad to modify the joyaxis field before
polling input. This way, the RetroPad D-pad binds can inherit the
joyaxis fields from ANALOG_LEFT_X_PLUS and friends.
Also add support for the field in RGUI and saves settings.
If a missing core is trying to be loaded it can end up deleting the
entire ROM history because core_name is not found and history read from
file would then exit early.
Also, need to enforce that g_settings.core_specific_config is true
after loading core specific config. It's possible that core specific
option is set to false before loading a different core (using global
config only).
Merging yesterday was probably a bit premature.
One issue I overlooked was that per-core configs were not flushed to disk
when loading a new core on PC. The per-core flushing only happened on
main_exit(), which is only run on application termination. This hence
would only work with consoles with exitspawn.
config_set_defaults() must be called when loading per-core-specifics as
well or lots of options silently leak into other core specific configs
when cores are changed.
The handling with g_extern.config_path and original_config_path was
difficult logic and very error prone considering it was mutated aribitrarily by RGUI.
I've removed the original config path concept and stuck
with that config_path is *only* for global config, and
core_specific_config_path is for core-specifics (which are resolved
during config load). Saves some memory too,
which is always nice.
The block_config_read solution I proposed yesterday was not good after
all (in fact, broken on PC), and the current solution should work better.
"RetroArch Config" option in RGUI now only shows global config.