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; }
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; }
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(); }