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.
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.
It shouldn't be RGUI browser dir. Instead it is a more developer centric
option for when libretro apps are distributed (along with RetroArch for
example). Also facilitates a standardized assets folder later on if
applicable.