Joystick swap option for Archie.
This commit is contained in:
16
menu.cpp
16
menu.cpp
@@ -864,13 +864,16 @@ void HandleUI(void)
|
||||
OsdWrite(6, s, menusub == 3, 0);
|
||||
|
||||
OsdWrite(7, "", 0, 0);
|
||||
|
||||
sprintf(s, " Stereo mix: %s", config_stereo_msg[archie_get_amix()]);
|
||||
OsdWrite(8, s, menusub == 4, 0);
|
||||
|
||||
for (int i = 9; i<15; i++) OsdWrite(i, "", 0, 0);
|
||||
OsdWrite(9, "", 0, 0);
|
||||
sprintf(s, " Swap joysticks: %s", user_io_get_joyswap() ? "Yes" : "No");
|
||||
OsdWrite(10, s, menusub == 5, 0);
|
||||
|
||||
OsdWrite(15, STD_EXIT, menusub == 5, 0);
|
||||
for (int i = 11; i<15; i++) OsdWrite(i, "", 0, 0);
|
||||
|
||||
OsdWrite(15, STD_EXIT, menusub == 6, 0);
|
||||
menustate = MENU_ARCHIE_MAIN2;
|
||||
parentstate = MENU_ARCHIE_MAIN1;
|
||||
|
||||
@@ -911,7 +914,12 @@ void HandleUI(void)
|
||||
menustate = MENU_ARCHIE_MAIN1;
|
||||
break;
|
||||
|
||||
case 5: // Exit
|
||||
case 5:
|
||||
user_io_set_joyswap(!user_io_get_joyswap());
|
||||
menustate = MENU_ARCHIE_MAIN1;
|
||||
break;
|
||||
|
||||
case 6: // Exit
|
||||
menustate = MENU_NONE1;
|
||||
break;
|
||||
}
|
||||
|
||||
23
user_io.cpp
23
user_io.cpp
@@ -523,11 +523,24 @@ void user_io_init()
|
||||
system(cmd);
|
||||
}
|
||||
|
||||
static int joyswap = 0;
|
||||
void user_io_set_joyswap(int swap)
|
||||
{
|
||||
joyswap = swap;
|
||||
}
|
||||
|
||||
int user_io_get_joyswap()
|
||||
{
|
||||
return joyswap;
|
||||
}
|
||||
|
||||
void user_io_analog_joystick(unsigned char joystick, char valueX, char valueY)
|
||||
{
|
||||
uint8_t joy = (!joyswap) ? joystick : joystick ? 0 : 1;
|
||||
|
||||
if (core_type == CORE_TYPE_8BIT)
|
||||
{
|
||||
spi_uio_cmd8_cont(UIO_ASTICK, joystick);
|
||||
spi_uio_cmd8_cont(UIO_ASTICK, joy);
|
||||
if(io_ver) spi_w((valueY<<8) | (uint8_t)(valueX));
|
||||
else
|
||||
{
|
||||
@@ -540,9 +553,11 @@ void user_io_analog_joystick(unsigned char joystick, char valueX, char valueY)
|
||||
|
||||
void user_io_digital_joystick(unsigned char joystick, uint16_t map, int newdir)
|
||||
{
|
||||
uint8_t joy = (!joyswap) ? joystick : joystick ? 0 : 1;
|
||||
|
||||
if (is_minimig())
|
||||
{
|
||||
spi_uio_cmd16(UIO_JOYSTICK0 + joystick, map);
|
||||
spi_uio_cmd16(UIO_JOYSTICK0 + joy, map);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -550,11 +565,11 @@ void user_io_digital_joystick(unsigned char joystick, uint16_t map, int newdir)
|
||||
// but only for joystick 1 and 2
|
||||
if (core_type == CORE_TYPE_MIST)
|
||||
{
|
||||
ikbd_joystick(joystick, (uint8_t)map);
|
||||
ikbd_joystick(joy, (uint8_t)map);
|
||||
return;
|
||||
}
|
||||
|
||||
spi_uio_cmd16(UIO_JOYSTICK0 + joystick, map);
|
||||
spi_uio_cmd16(UIO_JOYSTICK0 + joy, map);
|
||||
if (joy_transl == 1 && newdir)
|
||||
{
|
||||
user_io_analog_joystick(joystick, (map & 2) ? 128 : (map & 1) ? 127 : 0, (map & 8) ? 128 : (map & 4) ? 127 : 0);
|
||||
|
||||
@@ -210,6 +210,8 @@ char* user_io_create_config_name();
|
||||
int user_io_get_joy_transl();
|
||||
void user_io_digital_joystick(unsigned char, uint16_t, int);
|
||||
void user_io_analog_joystick(unsigned char, char, char);
|
||||
void user_io_set_joyswap(int swap);
|
||||
int user_io_get_joyswap();
|
||||
char user_io_osd_is_visible();
|
||||
void user_io_send_buttons(char);
|
||||
void parse_video_mode();
|
||||
|
||||
Reference in New Issue
Block a user