mirror of
https://github.com/mist-devel/mist-firmware.git
synced 2026-05-02 22:43:45 +00:00
Add analogue joystick scaling options
This commit is contained in:
16
ini_parser.c
16
ini_parser.c
@@ -226,8 +226,8 @@ static void* ini_get_var(const ini_cfg_t* cfg, int cur_section, char* buf)
|
||||
break;
|
||||
case INT8:
|
||||
*(int8_t*)(cfg->vars[var_id].var) = strtol(&(buf[i]), NULL, 0);
|
||||
if (*(int8_t*)(cfg->vars[var_id].var) > cfg->vars[var_id].max) *(int8_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max;
|
||||
if (*(int8_t*)(cfg->vars[var_id].var) < cfg->vars[var_id].min) *(int8_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min;
|
||||
if (*(int8_t*)(cfg->vars[var_id].var) > (int8_t)cfg->vars[var_id].max) *(int8_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max;
|
||||
if (*(int8_t*)(cfg->vars[var_id].var) < (int8_t)cfg->vars[var_id].min) *(int8_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min;
|
||||
break;
|
||||
case UINT16:
|
||||
*(uint16_t*)(cfg->vars[var_id].var) = strtoul(&(buf[i]), NULL, 0);
|
||||
@@ -236,8 +236,8 @@ static void* ini_get_var(const ini_cfg_t* cfg, int cur_section, char* buf)
|
||||
break;
|
||||
case INT16:
|
||||
*(int16_t*)(cfg->vars[var_id].var) = strtol(&(buf[i]), NULL, 0);
|
||||
if (*(int16_t*)(cfg->vars[var_id].var) > cfg->vars[var_id].max) *(int16_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max;
|
||||
if (*(int16_t*)(cfg->vars[var_id].var) < cfg->vars[var_id].min) *(int16_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min;
|
||||
if (*(int16_t*)(cfg->vars[var_id].var) > (int16_t)cfg->vars[var_id].max) *(int16_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max;
|
||||
if (*(int16_t*)(cfg->vars[var_id].var) < (int16_t)cfg->vars[var_id].min) *(int16_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min;
|
||||
break;
|
||||
case UINT32:
|
||||
*(uint32_t*)(cfg->vars[var_id].var) = strtoul(&(buf[i]), NULL, 0);
|
||||
@@ -246,8 +246,8 @@ static void* ini_get_var(const ini_cfg_t* cfg, int cur_section, char* buf)
|
||||
break;
|
||||
case INT32:
|
||||
*(int32_t*)(cfg->vars[var_id].var) = strtol(&(buf[i]), NULL, 0);
|
||||
if (*(int32_t*)(cfg->vars[var_id].var) > cfg->vars[var_id].max) *(int32_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max;
|
||||
if (*(int32_t*)(cfg->vars[var_id].var) < cfg->vars[var_id].min) *(int32_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min;
|
||||
if (*(int32_t*)(cfg->vars[var_id].var) > (int32_t)cfg->vars[var_id].max) *(int32_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max;
|
||||
if (*(int32_t*)(cfg->vars[var_id].var) < (int32_t)cfg->vars[var_id].min) *(int32_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min;
|
||||
break;
|
||||
case UINT64:
|
||||
*(uint64_t*)(cfg->vars[var_id].var) = strtoull(&(buf[i]), NULL, 0);
|
||||
@@ -256,8 +256,8 @@ static void* ini_get_var(const ini_cfg_t* cfg, int cur_section, char* buf)
|
||||
break;
|
||||
case INT64:
|
||||
*(int64_t*)(cfg->vars[var_id].var) = strtoll(&(buf[i]), NULL, 0);
|
||||
if (*(int64_t*)(cfg->vars[var_id].var) > cfg->vars[var_id].max) *(int64_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max;
|
||||
if (*(int64_t*)(cfg->vars[var_id].var) < cfg->vars[var_id].min) *(int64_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min;
|
||||
if (*(int64_t*)(cfg->vars[var_id].var) > (int64_t)cfg->vars[var_id].max) *(int64_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max;
|
||||
if (*(int64_t*)(cfg->vars[var_id].var) < (int64_t)cfg->vars[var_id].min) *(int64_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min;
|
||||
break;
|
||||
#ifdef INI_ENABLE_FLOAT
|
||||
case FLOAT:
|
||||
|
||||
@@ -35,6 +35,7 @@ void mist_ini_parse()
|
||||
data_io_rom_upload(NULL, 0); // prepare upload
|
||||
memset(&mist_cfg, 0, sizeof(mist_cfg));
|
||||
mist_cfg.mouse_speed = 100;
|
||||
mist_cfg.joystick_analog_mult = 128;
|
||||
minimig_cfg.kick1x_memory_detection_patch = 1;
|
||||
ini_parse(&mist_ini_cfg, user_io_get_core_name());
|
||||
data_io_rom_upload(NULL, 2); // upload done
|
||||
@@ -55,6 +56,8 @@ mist_cfg_t mist_cfg = {
|
||||
.joystick0_prefer_db9 = 0,
|
||||
.joystick_db9_fixed_index = 0,
|
||||
.joystick_emu_fixed_index = 0,
|
||||
.joystick_analog_mult = 128,
|
||||
.joystick_analog_offset = 0,
|
||||
.key_menu_as_rgui = 0,
|
||||
.keyrah_mode = 0,
|
||||
.reset_combo = 0,
|
||||
@@ -99,6 +102,8 @@ const ini_var_t mist_ini_vars[] = {
|
||||
{"JOYSTICK0_PREFER_DB9", (void*)(&(mist_cfg.joystick0_prefer_db9)), UINT8, 0, 1, 1},
|
||||
{"JOYSTICK_DB9_FIXED_INDEX", (void*)(&(mist_cfg.joystick_db9_fixed_index)), UINT8, 0, 1, 1},
|
||||
{"JOYSTICK_EMU_FIXED_INDEX", (void*)(&(mist_cfg.joystick_emu_fixed_index)), UINT8, 0, 1, 1},
|
||||
{"JOYSTICK_ANALOG_MULTIPLIER", (void*)(&(mist_cfg.joystick_analog_mult)), UINT8, 1, 128, 1},
|
||||
{"JOYSTICK_ANALOG_OFFSET", (void*)(&(mist_cfg.joystick_analog_offset)), INT8, -127, 127, 1},
|
||||
{"KEY_MENU_AS_RGUI", (void*)(&(mist_cfg.key_menu_as_rgui)), UINT8, 0, 1, 1},
|
||||
{"SDRAM64", (void*)(&(mist_cfg.sdram64)), UINT8, 0, 1, 1},
|
||||
#ifndef INI_PARSER_TEST
|
||||
|
||||
@@ -25,6 +25,8 @@ typedef struct {
|
||||
uint8_t joystick0_prefer_db9;
|
||||
uint8_t joystick_db9_fixed_index;
|
||||
uint8_t joystick_emu_fixed_index;
|
||||
uint8_t joystick_analog_mult;
|
||||
int8_t joystick_analog_offset;
|
||||
uint8_t key_menu_as_rgui;
|
||||
uint8_t reset_combo;
|
||||
uint8_t ypbpr;
|
||||
|
||||
13
user_io.c
13
user_io.c
@@ -410,11 +410,16 @@ static unsigned short usb2ps2code( unsigned char k) {
|
||||
|
||||
void user_io_analog_joystick(unsigned char joystick, char valueX, char valueY, char valueX2, char valueY2) {
|
||||
if(core_type == CORE_TYPE_8BIT || core_type == CORE_TYPE_MINIMIG2) {
|
||||
int16_t valueXX = valueX*mist_cfg.joystick_analog_mult/128 + mist_cfg.joystick_analog_offset;
|
||||
int16_t valueYY = valueY*mist_cfg.joystick_analog_mult/128 + mist_cfg.joystick_analog_offset;
|
||||
int16_t valueXX2 = valueX2*mist_cfg.joystick_analog_mult/128 + mist_cfg.joystick_analog_offset;
|
||||
int16_t valueYY2 = valueY2*mist_cfg.joystick_analog_mult/128 + mist_cfg.joystick_analog_offset;
|
||||
//iprintf("analog: x=%d, y=%d, xx=%d, yy=%d, mult=%d, offs=%d\n", valueX, valueY, valueXX, valueYY, mist_cfg.joystick_analog_mult, mist_cfg.joystick_analog_offset);
|
||||
spi_uio_cmd8_cont(UIO_ASTICK, joystick);
|
||||
spi8(valueX);
|
||||
spi8(valueY);
|
||||
spi8(valueX2);
|
||||
spi8(valueY2);
|
||||
spi8(valueXX);
|
||||
spi8(valueYY);
|
||||
spi8(valueXX2);
|
||||
spi8(valueYY2);
|
||||
DisableIO();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user