void uae_reset (void) { gui_purge_events(); black_screen_now(); quit_program = 2; set_special (SPCFLAG_BRK); }
void m68k_go (int may_quit) { gui_purge_events(); #if !defined(DREAMCAST) || defined(DEBUG_UAE4ALL) if (in_m68k_go || !may_quit) { #ifdef DEBUG_UAE4ALL puts("Bug! m68k_go is not reentrant.\n"); #endif return; } in_m68k_go++; #endif g_emulator.quit_program = RunStateReset; for (;;) { if (g_emulator.quit_program > RunStateNormal) { if (g_emulator.quit_program == RunStateExit) break; g_emulator.quit_program = RunStateNormal; g_emulator.reset_all_systems (); customreset (); check_prefs_changed_cpu (); sound_default_evtime (); /* We may have been restoring state, but we're done now. */ handle_active_events (); if (mispcflags) do_specialties (0); } m68k_run(); } #if !defined(DREAMCAST) || defined(DEBUG_UAE4ALL) in_m68k_go--; #endif #ifdef DEBUG_UAE4ALL puts("BYE?"); #endif }
static void goMenu(void) { int exitmode=0; int autosave=mainMenu_autosave; if (quit_program != 0) return; #ifdef PROFILER_UAE4ALL uae4all_prof_show(); #endif #ifdef DEBUG_FRAMERATE uae4all_show_time(); #endif emulating=1; vkbd_quit(); init_text(0); pause_sound(); menu_raise(); exitmode=run_mainMenu(); notice_screen_contents_lost(); resume_sound(); if ((!(strcmp(prefs_df[0],uae4all_image_file0))) || ((!(strcmp(prefs_df[1],uae4all_image_file1))))) menu_unraise(); quit_text(); vkbd_init(); #ifdef DREAMCAST SDL_DC_EmulateKeyboard(SDL_FALSE); #endif getChanges(); vkbd_init_button2(); if (exitmode==1 || exitmode==2) { extern char *savestate_filename; extern int saveMenu_n_savestate; for(int i=0;i<mainMenu_drives;i++) { if (i==0 && strcmp(changed_df[0],uae4all_image_file0)) { strcpy(changed_df[0],uae4all_image_file0); real_changed_df[0]=1; } else if (i==1 && strcmp(changed_df[1],uae4all_image_file1)) { strcpy(changed_df[1],uae4all_image_file1); real_changed_df[1]=1; } else if (i==2 && strcmp(changed_df[2],uae4all_image_file2)) { strcpy(changed_df[2],uae4all_image_file2); real_changed_df[2]=1; } else if (i==3 && strcmp(changed_df[3],uae4all_image_file3)) { strcpy(changed_df[3],uae4all_image_file3); real_changed_df[3]=1; } } strcpy(savestate_filename,uae4all_image_file0); switch(saveMenu_n_savestate) { case 1: strcat(savestate_filename,"-1.asf"); break; case 2: strcat(savestate_filename,"-2.asf"); break; case 3: strcat(savestate_filename,"-3.asf"); break; default: strcat(savestate_filename,".asf"); } } if (exitmode==3) { extern char *savestate_filename; extern int saveMenu_n_savestate; for(int i=0;i<mainMenu_drives;i++) { changed_df[i][0]=0; if (i==0) { uae4all_image_file0[0]=0; if (strcmp(changed_df[0],uae4all_image_file0)) { strcpy(changed_df[0],uae4all_image_file0); real_changed_df[0]=1; } } else if (i==1) { uae4all_image_file1[0]=0; if (strcmp(changed_df[1],uae4all_image_file1)) { strcpy(changed_df[1],uae4all_image_file1); real_changed_df[1]=1; } } else if (i==2) { uae4all_image_file2[0]=0; if (strcmp(changed_df[2],uae4all_image_file2)) { strcpy(changed_df[2],uae4all_image_file2); real_changed_df[2]=1; } } else if (i==3) { uae4all_image_file3[0]=0; if (strcmp(changed_df[3],uae4all_image_file3)) { strcpy(changed_df[3],uae4all_image_file3); real_changed_df[3]=1; } } disk_eject(i); } strcpy(savestate_filename,uae4all_image_file0); switch(saveMenu_n_savestate) { case 1: strcat(savestate_filename,"-1.asf"); break; case 2: strcat(savestate_filename,"-2.asf"); break; case 3: strcat(savestate_filename,"-3.asf"); break; default: strcat(savestate_filename,".asf"); } } if (exitmode==2) { if (autosave!=mainMenu_autosave) { prefs_df[0][0]=0; prefs_df[1][0]=0; prefs_df[2][0]=0; prefs_df[3][0]=0; } if(gp2xButtonRemappingOn) togglemouse(); int gp2xMouseEmuOn=0; int gp2xButtonRemappingOn=0; uae_reset (); } check_all_prefs(); gui_purge_events(); notice_screen_contents_lost(); #ifdef DEBUG_FRAMERATE uae4all_update_time(); #endif #ifdef PROFILER_UAE4ALL uae4all_prof_init(); #endif }