diff --git a/general.h b/general.h index 73f1e39756..97b2b66bd6 100644 --- a/general.h +++ b/general.h @@ -378,6 +378,7 @@ void ssnes_main_clear_state(void); int ssnes_main_init(int argc, char *argv[]); bool ssnes_main_iterate(void); void ssnes_main_deinit(void); +void ssnes_render_cached_frame(void); extern struct settings g_settings; extern struct global g_extern; diff --git a/ps3/main.c b/ps3/main.c index 66ce142b07..8303c15feb 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -232,6 +232,8 @@ static void ingame_menu(void) const uint64_t button_was_pressed = old_state & (old_state ^ state); const uint64_t button_was_held = old_state & state; static uint64_t blocking = 0; + + ssnes_render_cached_frame(); if(g_frame_count < special_action_msg_expired && blocking) { @@ -531,8 +533,10 @@ int main(int argc, char *argv[]) begin_loop: if(mode_switch == MODE_EMULATION) { + g_extern.is_paused = false; input_ps3.poll(NULL); while(ssnes_main_iterate()); + g_extern.is_paused = true; if(g_console.in_game_menu) ingame_menu(); } diff --git a/ssnes.c b/ssnes.c index 374701c1c6..f57455dff7 100644 --- a/ssnes.c +++ b/ssnes.c @@ -1973,6 +1973,11 @@ static void check_mute(void) old_pressed = pressed; } +void ssnes_render_cached_frame(void) +{ + video_cached_frame(); +} + static void do_state_checks(void) { check_screenshot(); @@ -2157,6 +2162,7 @@ bool ssnes_main_iterate(void) if (driver.input->key_pressed(driver.input_data, SSNES_QUIT_KEY) || !driver.video->alive(driver.video_data)) return false; + printf("Iterate reaches here\n"); // Checks for stuff like fullscreen, save states, etc. do_state_checks();