static int set_joystick_fire(int value, void *param) { ULONG portstate; int port_idx = vice_ptr_to_int(param); int joy_dev = joystick_port_map[port_idx]; joy_arch_init(); if (joy_dev != JOYDEV_NONE) { if (joy_dev >= JOYDEV_JOY0 && joy_dev <= JOYDEV_JOY3) { portstate = ReadJoyPort(joy_dev - JOYDEV_JOY0); if ((portstate & JP_TYPE_MASK) != JP_TYPE_GAMECTLR) { if (value != JPF_BUTTON_RED) { ui_error(translate_text(IDMES_DEVICE_NOT_GAMEPAD)); value = JPF_BUTTON_RED; } } } else { ui_error(translate_text(IDMES_NOT_MAPPED_TO_AMIGA_PORT)); return -1; } } else { if (value != JPF_BUTTON_RED) { ui_error(translate_text(IDMES_NOT_MAPPED_TO_AMIGA_PORT)); return -1; } } joystick_fire[port_idx] = value; return 0; }
int joy_arch_set_device(int port_idx, int joy_dev) { ULONG portstate; switch (joy_dev) { case JOYDEV_NONE: case JOYDEV_NUMPAD: case JOYDEV_KEYSET1: case JOYDEV_KEYSET2: case JOYDEV_JOY0: case JOYDEV_JOY1: case JOYDEV_JOY2: case JOYDEV_JOY3: break; default: return -1; } joy_arch_init(); if (joy_dev >= JOYDEV_JOY0) { portstate = ReadJoyPort(joy_dev - JOYDEV_JOY0); if ((portstate & JP_TYPE_MASK) == JP_TYPE_JOYSTK) { joystick_fire[port_idx] = JPF_BUTTON_RED; } } return 0; }
static int set_joystick_fire_4(int value, void *param) { ULONG portstate; joy_arch_init(); if (joystick_device[3] != JOYDEV_NONE) { if (joystick_device[3] >= JOYDEV_JOY0 && joystick_device[3] <= JOYDEV_JOY3) { portstate = ReadJoyPort(joystick_device[3] - JOYDEV_JOY0); if ((portstate & JP_TYPE_MASK) != JP_TYPE_GAMECTLR) { if (value != JPF_BUTTON_RED) { ui_error(translate_text(IDMES_DEVICE_NOT_GAMEPAD)); value = JPF_BUTTON_RED; } } } else { ui_error(translate_text(IDMES_NOT_MAPPED_TO_AMIGA_PORT)); return -1; } } else { if (value != JPF_BUTTON_RED) { ui_error(translate_text(IDMES_NOT_MAPPED_TO_AMIGA_PORT)); return -1; } } joystick_fire[3] = value; return 0; }
int joystick_init(void) { joystick_alarm = alarm_new(maincpu_alarm_context, "Joystick", joystick_latch_handler, NULL); #ifdef COMMON_KBD kbd_initialize_numpad_joykeys(joykeys[0]); #endif return joy_arch_init(); }
static int set_joystick_device_2(int val, void *param) { ULONG portstate; joy_arch_init(); if (val >= JOYDEV_JOY0 && val <= JOYDEV_JOY3) { portstate = ReadJoyPort(val - JOYDEV_JOY0); if ((portstate & JP_TYPE_MASK) == JP_TYPE_JOYSTK) { joystick_fire[1] = JPF_BUTTON_RED; } } joystick_device[1] = val; return 0; }
static int set_joystick_device(int val, void *param) { int nr = vice_ptr_to_int(param); switch (val) { case JOYDEV_NONE: case JOYDEV_NUMPAD: case JOYDEV_KEYSET1: case JOYDEV_KEYSET2: break; default: return -1; } joy_arch_init(); joystick_device[nr] = val; return 0; }