implemented save/load config

also big refactor of config (options and button mappings) management
This commit is contained in:
Shaun Inman 2023-01-28 11:12:39 -05:00
parent 3d24d19659
commit 515aa13b60
10 changed files with 904 additions and 591 deletions

File diff suppressed because it is too large Load diff

View file

@ -4,13 +4,15 @@
typedef struct OptionOverride {
char* key;
char* value;
int disable; // TODO: hide option from user
int lock; // TODO: prevent changing this value
} OptionOverride;
typedef struct ButtonMapping {
char* name;
int retro;
int local;
int local; // TODO: dislike this name...
int mod;
int default_;
} ButtonMapping;
typedef struct CoreOverrides {

View file

@ -9,19 +9,19 @@ static CoreOverrides fceumm_overrides = {
{NULL,NULL},
},
.button_mapping = (ButtonMapping[]){
{"UP", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"LEFT", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"RIGHT", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"SELECT", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"START", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"A BUTTON", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"B BUTTON", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"A TURBO", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_NONE},
{"B TURBO", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_NONE},
{"CHANGE DISK", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_NONE},
{"INSERT DISK", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_NONE},
{"INSERT COIN", RETRO_DEVICE_ID_JOYPAD_R2, BTN_ID_NONE},
{"Up", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"Down", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"Left", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"Right", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"Select", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"Start", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"A Button", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"B Button", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"A Turbo", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_NONE},
{"B Turbo", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_NONE},
{"Change Disk", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_NONE},
{"Insert Disk", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_NONE},
{"Insert Coin", RETRO_DEVICE_ID_JOYPAD_R2, BTN_ID_NONE},
{NULL,0,0},
},
};

View file

@ -10,18 +10,18 @@ CoreOverrides gambatte_overrides = {
{NULL,NULL},
},
.button_mapping = (ButtonMapping[]){
{"UP", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"LEFT", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"RIGHT", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"SELECT", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"START", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"A BUTTON", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"B BUTTON", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"A TURBO", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_NONE},
{"B TURBO", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_NONE},
{"PREV PAL", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_NONE},
{"NEXT PAL", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_NONE},
{"Up", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"Down", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"Left", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"Right", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"Select", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"Start", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"A Button", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"B Button", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"A Turbo", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_NONE},
{"B Turbo", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_NONE},
{"Prev. Palette", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_NONE},
{"Next Palette", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_NONE},
{NULL,0,0},
},
};

View file

@ -7,18 +7,18 @@ static CoreOverrides gpsp_overrides = {
{NULL,NULL},
},
.button_mapping = (ButtonMapping[]){
{"UP", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"LEFT", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"RIGHT", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"SELECT", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"START", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"A BUTTON", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"B BUTTON", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"A TURBO", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_NONE},
{"B TURBO", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_NONE},
{"L BUTTON", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_L1},
{"R BUTTON", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_R1},
{"Up", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"Down", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"Left", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"Right", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"Select", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"Start", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"A Button", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"B Button", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"A Turbo", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_NONE},
{"B Turbo", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_NONE},
{"L Button", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_L1},
{"R Button", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_R1},
{NULL,0,0},
},
};

View file

@ -3,20 +3,20 @@
static CoreOverrides pcsx_rearmed_overrides = {
.core_name = "pcsx_rearmed",
.button_mapping = (ButtonMapping[]){
{"UP", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"LEFT", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"RIGHT", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"SELECT", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"START", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"CIRCLE", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"CROSS", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"TRIANGLE", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_X},
{"SQUARE", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_Y},
{"L1 BUTTON", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_L1},
{"R1 BUTTON", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_R1},
{"L2 BUTTON", RETRO_DEVICE_ID_JOYPAD_L2, BTN_ID_L2},
{"R2 BUTTON", RETRO_DEVICE_ID_JOYPAD_R2, BTN_ID_R2},
{"Up", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"Down", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"Left", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"Right", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"Select", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"Start", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"Circle", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"Cross", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"Triangle", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_X},
{"Square", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_Y},
{"L1 Button", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_L1},
{"R1 Button", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_R1},
{"L2 Button", RETRO_DEVICE_ID_JOYPAD_L2, BTN_ID_L2},
{"R2 Button", RETRO_DEVICE_ID_JOYPAD_R2, BTN_ID_R2},
{NULL,0,0},
},
};

View file

@ -7,18 +7,18 @@ static CoreOverrides picodrive_overrides = {
{NULL,NULL},
},
.button_mapping = (ButtonMapping[]){
{"UP", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"LEFT", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"RIGHT", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"MODE", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"START", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"A BUTTON", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_Y},
{"B BUTTON", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_X},
{"C BUTTON", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"X BUTTON", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_B},
{"Y BUTTON", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_L1},
{"Z BUTTON", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_R1},
{"Up", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"Down", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"Left", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"Right", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"Mode", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"Start", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"A Button", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_Y},
{"B Button", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_X},
{"C Button", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"X Button", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_B},
{"Y Button", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_L1},
{"Z Button", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_R1},
{NULL,0,0},
},
};

View file

@ -11,15 +11,15 @@ static CoreOverrides pokemini_overrides = {
{NULL,NULL},
},
.button_mapping = (ButtonMapping[]){
{"UP", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"LEFT", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"RIGHT", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"A BUTTON", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"B BUTTON", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"C BUTTON", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_R1},
{"SHAKE", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_L1},
{"POWER", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"Up", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"Down", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"Left", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"Right", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"A Button", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"B Button", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"C Button", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_R1},
{"Shake", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_L1},
{"Power", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{NULL,0,0},
},
};

View file

@ -3,18 +3,18 @@
static CoreOverrides snes9x2005_plus_overrides = {
.core_name = "snes9x2005_plus",
.button_mapping = (ButtonMapping[]){
{"UP", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"LEFT", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"RIGHT", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"SELECT", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"START", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"Y BUTTON", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_Y},
{"X BUTTON", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_X},
{"B BUTTON", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"A BUTTON", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"L BUTTON", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_L1},
{"R BUTTON", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_R1},
{"Up", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP},
{"Down", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN},
{"Left", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT},
{"Right", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT},
{"Select", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT},
{"Start", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START},
{"Y Button", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_Y},
{"X Button", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_X},
{"B Button", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B},
{"A Button", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A},
{"L Button", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_L1},
{"R Button", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_R1},
{NULL,0,0},
},
};