Пример #1
0
static int input_autofire_function(fs_emu_menu_item *menu_item,
                                   void **result_data) {
    int port = fs_emu_menu_item_get_idata(menu_item);
    g_fs_uae_input_ports[port].new_autofire_mode = \
            !g_fs_uae_input_ports[port].new_autofire_mode;
    fs_log("[menu] port %d toggle autofire mode %d\n", port,
           g_fs_uae_input_ports[port].new_autofire_mode);
    fs_uae_reconfigure_input_ports_amiga();
    return FS_EMU_MENU_RESULT_NONE;
}
Пример #2
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;
}
Пример #3
0
static void event_handler(int line)
{
    // printf("%d\n", line);
    if (line >= 0) {
        input_handler_loop(line);
        return;
    }
    //static int busy = 0;
    //static int idle = 0;
    //static int64_t last_time = 0;
    g_fs_uae_frame = g_fs_uae_frame + 1;

#if 0
    if (g_fs_uae_frame != amiga_get_vsync_counter()) {
        printf("g_fs_uae_frame %d amiga_get_vsync_count %d\n", g_fs_uae_frame, amiga_get_vsync_counter());
    }
#endif
    //printf("event_handler frame=%d\n", frame);

    fs_uae_record_frame(g_fs_uae_frame);

    /*
    int64_t t = fs_emu_monotonic_time();
    if (last_time > 0) {
        int dt = (t - last_time) / 1000;
        printf("%d\n", dt);
    }
    */

    //fs_emu_lua_run_handler("on_fs_uae_frame_start");

    fs_emu_wait_for_frame(g_fs_uae_frame);
    if (g_fs_uae_frame == 1) {
        // we configure input ports after first frame are confirmed,
        // because otherwise configure events would get lost if initially
        // connected to the server (for net play game), but aborted connection
        // before game started
        fs_uae_reconfigure_input_ports_amiga();
    }

    if (fs_emu_is_quitting()) {
        if (fs_emu_is_paused()) {
            fs_emu_pause(0);
        }
        static int quit_called = 0;
        if (quit_called == 0) {
            fs_log("calling amiga_quit\n");
            amiga_quit();
            quit_called = 1;
        }
        //return;
    }
    while (fs_emu_is_paused()) {
        /*
        if (!event_handler_loop()) {
            break;
        }
        */
        pause_throttle();
        if (fs_emu_is_quitting()) {
            break;
        }
    }

    //last_time = fs_emu_monotonic_time();

}