Beispiel #1
0
static int input_device_function(fs_emu_menu_item *menu_item,
                                 void **result_data) {
    int port = fs_emu_menu_item_get_idata(menu_item);
    int index = port & 0xff;
    port = port >> 8;

    if (index == 255) {
        fs_log("[menu] port %d set device to \"%s\"\n", port, "");
        set_input_port(port, "", 0);
    }
#if 0
    else if (index == 254) {
        fs_log("[menu] port %d set device to \"%s\"\n", port, "MOUSE");
        set_input_port(port, "MOUSE", 1);
    }
    else if (index == 253) {
        fs_log("[menu] port %d set device to \"%s\"\n", port, "KEYBOARD");
        set_input_port(port, "KEYBOARD", 1);
    }
#endif
    else {
        fs_emu_input_device device;
        if (!fs_ml_input_device_get(index, &device)) {
            return FS_EMU_MENU_RESULT_NONE;
        }
        fs_log("[menu] port %d set device to %s\n", port, device.name);
        set_input_port(port, device.name, 1);
    }
    fs_uae_reconfigure_input_ports_host();
    return FS_EMU_MENU_RESULT_BACK;
}
Beispiel #2
0
static void change_port_device_mode(int data)
{
    int modes = INPUTEVENT_AMIGA_JOYPORT_MODE_0_LAST -
            INPUTEVENT_AMIGA_JOYPORT_MODE_0_NONE + 1;
    int port = data / modes;
    int mode = data % modes;
    if (port >= 0 && port < FS_UAE_NUM_INPUT_PORTS) {
        g_fs_uae_input_ports[port].mode = mode;
        g_fs_uae_input_ports[port].new_mode = mode;
        // The fifth port isn't an Amiga port, but rather a fake
        // port used with custom input mapping only
        if (port < 4) {
            amiga_set_joystick_port_mode(port, mode);
        }
        fs_uae_reconfigure_input_ports_host();
        fs_emu_menu_update_current();
    }
}
Beispiel #3
0
static int input_type_function(fs_emu_menu_item *menu_item,
                               void **result_data) {
    int port = fs_emu_menu_item_get_idata(menu_item);
    int mode = port & 0xff;
    port = port >> 8;
    if (port < 4) {
        fs_log("[menu] port %d set mode to %d\n", port, mode);
        g_fs_uae_input_ports[port].new_mode = mode;
        fs_uae_reconfigure_input_ports_amiga();
    }
    else {
        // this is set directly, locally, for custom joystick ("port 4")
        g_fs_uae_input_ports[port].mode = mode;
        g_fs_uae_input_ports[port].new_mode = mode;
        fs_uae_reconfigure_input_ports_host();
    }
    return FS_EMU_MENU_RESULT_BACK;
}
Beispiel #4
0
static void select_port_0_device(int data)
{
    printf("--> device index %d\n", data);
    int port = 0;
    if (data == 9) {
        // 9 is currently a hack to indicate the local mouse
        g_fs_uae_input_ports[port].mode = AMIGA_JOYPORT_MOUSE;
        g_fs_uae_input_ports[port].new_mode = AMIGA_JOYPORT_MOUSE;
        strcpy(g_fs_uae_input_ports[port].device, "MOUSE");
        amiga_set_joystick_port_mode(port, AMIGA_JOYPORT_MOUSE);
        // FIXME: not a warning, rather a notification
        fs_emu_warning(_("Port 0: %s"), _("Mouse"));
    }
    else {
        int count = 0;
        int new_mode = AMIGA_JOYPORT_DJOY;
        if (g_fs_uae_amiga_model == MODEL_CD32) {
            new_mode = AMIGA_JOYPORT_CD32JOY;
        }
        fs_emu_input_device *devices = fs_emu_get_input_devices(&count);
        if (data < count) {
            g_fs_uae_input_ports[port].mode = new_mode;
            g_fs_uae_input_ports[port].new_mode = new_mode;
            uae_strlcpy(g_fs_uae_input_ports[port].device, devices[data].name,
                        sizeof(g_fs_uae_input_ports[port].device));
            amiga_set_joystick_port_mode(port, new_mode);
            // FIXME: not a warning, rather a notification
            fs_emu_warning(_("Port 0: %s"), devices[data].name);
        }
    }
    fs_uae_reconfigure_input_ports_host();
    fs_emu_menu_update_current();

    //fs_emu_get_input_devices()
    //g_fs_uae_input_ports[port].mode = mode;
    //amiga_set_joystick_port_mode(port,  mode);
    //g_fs_uae_input_ports[port].new_mode = mode;
    //fs_uae_reconfigure_input_ports_host();
    //fs_emu_menu_update_current();
}