void ksymp_get_picture(KSYMediaPlayer *mp, char* buf,int width, int height, int stride) { assert(mp); pthread_mutex_lock(&mp->mutex); video_screenshot(mp->ffplayer, buf,width,height,stride); pthread_mutex_unlock(&mp->mutex); }
int input_do (game_t * g) { static SDL_Event ev; if (SDL_PollEvent (&ev) != 0) switch (ev.type) { case SDL_KEYDOWN: if (ev.key.keysym.sym == 27) return 0; else if (ev.key.keysym.sym == SDLK_F10) video_screenshot (); else state[ev.key.keysym.sym] = 1; break; case SDL_KEYUP: state[ev.key.keysym.sym] = 0; break; } if (state[SDLK_RIGHT]) g->player[PLAYER].X += 4.0 * timer_delta (); if (state[SDLK_LEFT]) g->player[PLAYER].X -= 4.0 * timer_delta (); return 1; }
bool jet__handle_event(event_t *event) { if(event->type == EVENT_TYPE_QUIT) { jet__quit = true; return true; } if(event->type == EVENT_TYPE_SCREENSHOT) video_screenshot(); if(event->type == EVENT_TYPE_KEYDOWN && event->data.key == EVENT_KEY_TURBO) game_turbo_enable(); else if(event->type == EVENT_TYPE_KEYUP && event->data.key == EVENT_KEY_TURBO) game_turbo_disable(); return false; }
void gtkui_screenshot_save() { // Save a screenshot from the GUI GtkWidget *dialog = gtk_file_chooser_dialog_new("Save screenshot (.png)", GTK_WINDOW(gtkwindow), GTK_FILE_CHOOSER_ACTION_SAVE, "Cancel", GTK_RESPONSE_CANCEL, "Save", GTK_RESPONSE_ACCEPT, NULL); char sshotpath[512]; char sshotfile[768]; snprintf(sshotpath, sizeof(sshotpath), "%sscreenshots/", nstpaths.nstdir); snprintf(sshotfile, sizeof(sshotfile), "%s%s.png", sshotpath, nstpaths.gamename); gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), sshotfile); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), sshotpath); if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); video_screenshot(filename); g_free(filename); } gtk_widget_destroy(dialog); }
void input_match_keyboard(Input::Controllers *controllers, SDL_Event event) { // Match NES buttons to keyboard buttons nesinput_t input; input.nescode = 0x00; input.player = 0; input.pressed = 0; input.turboa = 0; input.turbob = 0; if (event.type == SDL_KEYDOWN) { input.pressed = 1; } for (int i = 0; i < NUMGAMEPADS; i++) { if (player[i].u == event.key.keysym.scancode) { input.nescode = Input::Controllers::Pad::UP; input.player = i; } else if (player[i].d == event.key.keysym.scancode) { input.nescode = Input::Controllers::Pad::DOWN; input.player = i; } else if (player[i].l == event.key.keysym.scancode) { input.nescode = Input::Controllers::Pad::LEFT; input.player = i; } else if (player[i].r == event.key.keysym.scancode) { input.nescode = Input::Controllers::Pad::RIGHT; input.player = i; } else if (player[i].select == event.key.keysym.scancode) { input.nescode = Input::Controllers::Pad::SELECT; input.player = i; } else if (player[i].start == event.key.keysym.scancode) { input.nescode = Input::Controllers::Pad::START; input.player = i; } else if (player[i].a == event.key.keysym.scancode) { input.nescode = Input::Controllers::Pad::A; input.player = i; } else if (player[i].b == event.key.keysym.scancode) { input.nescode = Input::Controllers::Pad::B; input.player = i; } else if (player[i].ta == event.key.keysym.scancode) { input.nescode = Input::Controllers::Pad::A; input.player = i; input.turboa = 1; } else if (player[i].tb == event.key.keysym.scancode) { input.nescode = Input::Controllers::Pad::B; input.player = i; input.turbob = 1; } } input_inject(controllers, input); if (event.key.keysym.scancode == ui.altspeed && event.type == SDL_KEYDOWN) { timing_set_altspeed(); } if (event.key.keysym.scancode == ui.altspeed && event.type == SDL_KEYUP) { timing_set_default(); } const Uint8 *keys = SDL_GetKeyboardState(NULL); // Insert Coins controllers->vsSystem.insertCoin = 0; if (keys[ui.insertcoin1]) { controllers->vsSystem.insertCoin |= Input::Controllers::VsSystem::COIN_1; } if (keys[ui.insertcoin2]) { controllers->vsSystem.insertCoin |= Input::Controllers::VsSystem::COIN_2; } // Process non-game events if (keys[ui.fdsflip]) { nst_flip_disk(); } if (keys[ui.fdsswitch]) { nst_switch_disk(); } if (keys[ui.qsave1]) { nst_state_quicksave(0); } if (keys[ui.qsave2]) { nst_state_quicksave(1); } if (keys[ui.qload1]) { nst_state_quickload(0); } if (keys[ui.qload2]) { nst_state_quickload(1); } // Screenshot if (keys[ui.screenshot]) { video_screenshot(NULL); } // Reset if (keys[ui.reset]) { nst_reset(0); } // Rewinder if (keys[ui.rwstart]) { nst_set_rewind(0); } if (keys[ui.rwstop]) { nst_set_rewind(1); } // Video if (keys[ui.fullscreen]) { video_toggle_fullscreen(); } if (keys[ui.filter]) { video_toggle_filter(); } if (keys[ui.scalefactor]) { video_toggle_scalefactor(); } // NSF if (nst_nsf) { Nsf nsf(emulator); if (keys[SDL_SCANCODE_UP]) { nsf.PlaySong(); video_clear_buffer(); video_disp_nsf(); } if (keys[SDL_SCANCODE_DOWN]) { //nsf.StopSong(); } if (keys[SDL_SCANCODE_LEFT]) { nsf.SelectPrevSong(); video_clear_buffer(); video_disp_nsf(); } if (keys[SDL_SCANCODE_RIGHT]) { nsf.SelectNextSong(); video_clear_buffer(); video_disp_nsf(); } } // Escape exits when not in GUI mode if (keys[SDL_SCANCODE_ESCAPE]) { if (conf.misc_disable_gui) { nst_schedule_quit(); } } }