BOOL APIENTRY HacksProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: CheckRadioButton( hDlg, IDC_EESYNC_DEFAULT, IDC_EESYNC3, IDC_EESYNC_DEFAULT + CHECK_EE_CYCLERATE ); if(CHECK_IOP_CYCLERATE) CheckDlgButton(hDlg, IDC_IOPSYNC, TRUE); if(CHECK_WAITCYCLE_HACK) CheckDlgButton(hDlg, IDC_WAITCYCLES, TRUE); if(CHECK_INTC_STAT_HACK) CheckDlgButton(hDlg, IDC_INTCSTATHACK, TRUE); if(CHECK_ESCAPE_HACK) CheckDlgButton(hDlg, IDC_ESCHACK, TRUE); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: { int newhacks = 0; for( int i=1; i<4; i++ ) { if( IsDlgButtonChecked(hDlg, IDC_EESYNC_DEFAULT+i) ) { newhacks = i; break; } } newhacks |= IsDlgButtonChecked(hDlg, IDC_IOPSYNC) << 3; newhacks |= IsDlgButtonChecked(hDlg, IDC_WAITCYCLES) << 4; newhacks |= IsDlgButtonChecked(hDlg, IDC_INTCSTATHACK) << 5; newhacks |= IsDlgButtonChecked(hDlg, IDC_ESCHACK) << 10; EndDialog(hDlg, TRUE); if( newhacks != Config.Hacks ) { SysRestorableReset(); Config.Hacks = newhacks; SaveConfig(); } } return FALSE; case IDCANCEL: EndDialog(hDlg, FALSE); return FALSE; } return TRUE; } return FALSE; }
void OnCpu_Ok(GtkButton *button, gpointer user_data) { u32 newopts = 0; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkCheckButton_EERec")))) newopts |= PCSX2_EEREC; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkCheckButton_VU0rec")))) newopts |= PCSX2_VU0REC; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkCheckButton_VU1rec")))) newopts |= PCSX2_VU1REC; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkCheckButton_MTGS")))) newopts |= PCSX2_GSMULTITHREAD; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkRadioButton_LimitNormal")))) newopts |= PCSX2_FRAMELIMIT_NORMAL; else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkRadioButton_LimitLimit")))) newopts |= PCSX2_FRAMELIMIT_LIMIT; else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkRadioButton_LimitFS")))) newopts |= PCSX2_FRAMELIMIT_SKIP; else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkRadioButton_VUSkip")))) newopts |= PCSX2_FRAMELIMIT_VUSKIP; Config.CustomFps = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(lookup_widget(CpuDlg, "CustomFPSLimit"))); Config.CustomFrameSkip = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(lookup_widget(CpuDlg, "FrameThreshold"))); Config.CustomConsecutiveFrames = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(lookup_widget(CpuDlg, "FramesBeforeSkipping"))); Config.CustomConsecutiveSkip = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(lookup_widget(CpuDlg, "FramesToSkip"))); if (Config.Options != newopts) { SysRestorableReset(); if ((Config.Options&PCSX2_GSMULTITHREAD) ^(newopts&PCSX2_GSMULTITHREAD)) { // Need the MTGS setting to take effect, so close out the plugins: PluginsResetGS(); if (CHECK_MULTIGS) Console::Notice("MTGS mode disabled.\n\tEnjoy the fruits of single-threaded simpicity."); else Console::Notice("MTGS mode enabled.\n\tWelcome to multi-threaded awesomeness."); } Config.Options = newopts; } else UpdateVSyncRate(); SaveConfig(); gtk_widget_destroy(CpuDlg); if (MainWindow) gtk_widget_set_sensitive(MainWindow, TRUE); gtk_main_quit(); }
BOOL CALLBACK CpuDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { char cpuspeedc[20]; char features[256]; char cfps[20]; char cFrameskip[20]; char cConsecutiveFrames[20]; char cConsecutiveSkip[20]; u32 newopts; switch(uMsg) { case WM_INITDIALOG: SetWindowText(hW, _("Cpu Config")); SetDlgItemText(hW, IDC_VENDORINPUT,cpuinfo.x86ID ); SetDlgItemText(hW, IDC_FAMILYINPUT, cpuinfo.x86Fam); sprintf(cpuspeedc,"%d MHZ",cpuinfo.cpuspeed); SetDlgItemText(hW, IDC_CPUSPEEDINPUT, cpuspeedc); Static_SetText(GetDlgItem(hW, IDC_VENDORNAME), _("CPU Vendor")); Static_SetText(GetDlgItem(hW, IDC_FAMILYNAME), _("Family")); Static_SetText(GetDlgItem(hW, IDC_CPUSPEEDNAME), _("CPU Speed")); Static_SetText(GetDlgItem(hW, IDC_FEATURESNAME), _("Features")); Static_SetText(GetDlgItem(hW, IDC_CPU_EEREC), _("EERec - EE/IOP recompiler (need MMX/SSE)")); Static_SetText(GetDlgItem(hW, IDC_CPU_VUGROUP), _("VU Recompilers - All options are set by default")); Static_SetText(GetDlgItem(hW, IDC_CPU_VU0REC), _("VU0rec - enable recompiler for VU0 unit")); Static_SetText(GetDlgItem(hW, IDC_CPU_VU1REC), _("VU1rec - enable recompiler for VU1 unit")); Static_SetText(GetDlgItem(hW, IDC_CPU_GSMULTI), _("Multi threaded GS mode (MTGS)\n(faster on dual core/HT procs, requires pcsx2 restart)")); Static_SetText(GetDlgItem(hW, IDC_FRAMELIMIT), _("Frame Limiting (F4 key switches the mode in-game!)")); Static_SetText(GetDlgItem(hW, IDC_CPU_FL_NORMAL), _("Normal - All frames are rendered as fast as possible.")); Static_SetText(GetDlgItem(hW, IDC_CPU_FL_LIMIT), _("Limit - Force frames to normal speeds if too fast.")); Static_SetText(GetDlgItem(hW, IDC_CPU_FL_SKIP), _("Frame Skip - In order to achieve normal speeds,\nsome frames are skipped (fast).\nFps displayed counts skipped frames too.")); Static_SetText(GetDlgItem(hW, IDC_CPU_FL_SKIPVU), _("VU Skip - Same as 'Frame Skip', but tries to skip more.\nArtifacts might be present, but will be faster.")); Static_SetText(GetDlgItem(hW, IDC_CUSTOM_FPS), _("Custom FPS Limit (0=auto):")); Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL1), _("Skip Frames when slower than:\n(See Note 1)")); Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL2), _("Consecutive Frames before skipping:\n(See Note 2)")); Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL3), _("*Note 1: Will only skip when slower than this fps number.\n (0 = Auto) ; (9999 = Forced-Frameskip regardless of speed.)\n (e.g. If set to 45, will only skip when slower than 45fps.)")); Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL4), _("*Note 2: Will render this number of consecutive frames before\n skipping the next frame. (0=default)\n (e.g. If set to 2, will render 2 frames before skipping 1.)")); Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL5), _("Consecutive Frames to skip:\n(See Note 3)")); Static_SetText(GetDlgItem(hW, IDC_FRAMESKIP_LABEL6), _("*Note 3: Will skip this number of frames before\n rendering the next sequence of frames. (0=default)\n (e.g. If set to 2, will skip 2 consecutive frames whenever its time\n to skip.)")); Button_SetText(GetDlgItem(hW, IDOK), _("OK")); Button_SetText(GetDlgItem(hW, IDCANCEL), _("Cancel")); //features[0]=':'; //strcat(features,""); strcpy(features,""); if(cpucaps.hasMultimediaExtensions) strcat(features,"MMX"); if(cpucaps.hasStreamingSIMDExtensions) strcat(features,",SSE"); if(cpucaps.hasStreamingSIMD2Extensions) strcat(features,",SSE2"); if(cpucaps.hasStreamingSIMD3Extensions) strcat(features,",SSE3"); if(cpucaps.hasSupplementalStreamingSIMD3Extensions) strcat(features,",SSSE3"); if(cpucaps.hasStreamingSIMD4Extensions) strcat(features,",SSE4.1"); // if(cpucaps.has3DNOWInstructionExtensions) strcat(features,",3DNOW"); // if(cpucaps.has3DNOWInstructionExtensionsExt)strcat(features,",3DNOW+"); // if(cpucaps.hasAMD64BitArchitecture) strcat(features,",x86-64"); SetDlgItemText(hW, IDC_FEATURESINPUT, features); CheckDlgButton(hW, IDC_CPU_EEREC, !!(Config.Options&PCSX2_EEREC)); CheckDlgButton(hW, IDC_CPU_VU0REC, !!(Config.Options&PCSX2_VU0REC)); CheckDlgButton(hW, IDC_CPU_VU1REC, !!(Config.Options&PCSX2_VU1REC)); EnableDlgItem( hW, IDC_CPU_EEREC, !g_Session.ForceDisableEErec ); EnableDlgItem( hW, IDC_CPU_VU0REC, !g_Session.ForceDisableVU0rec ); EnableDlgItem( hW, IDC_CPU_VU1REC, !g_Session.ForceDisableVU1rec ); CheckDlgButton(hW, IDC_CPU_GSMULTI, !!CHECK_MULTIGS); CheckRadioButton(hW,IDC_CPU_FL_NORMAL, IDC_CPU_FL_NORMAL+3, IDC_CPU_FL_NORMAL+(CHECK_FRAMELIMIT>>10)); sprintf(cfps,"%d",Config.CustomFps); SetDlgItemText(hW, IDC_CUSTOMFPS, cfps); sprintf(cFrameskip,"%d",Config.CustomFrameSkip); SetDlgItemText(hW, IDC_CUSTOM_FRAMESKIP, cFrameskip); sprintf(cConsecutiveFrames,"%d",Config.CustomConsecutiveFrames); SetDlgItemText(hW, IDC_CUSTOM_CONSECUTIVE_FRAMES, cConsecutiveFrames); sprintf(cConsecutiveSkip,"%d",Config.CustomConsecutiveSkip); SetDlgItemText(hW, IDC_CUSTOM_CONSECUTIVE_SKIP, cConsecutiveSkip); //EnableWindow( GetDlgItem( hW, IDC_CPU_GSMULTI ), !g_GameInProgress ); return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDCANCEL: EndDialog(hW, FALSE); return FALSE; case IDOK: newopts = 0; if( SendDlgItemMessage(hW,IDC_CPU_EEREC,BM_GETCHECK,0,0) ) newopts |= PCSX2_EEREC; if( SendDlgItemMessage(hW,IDC_CPU_VU0REC,BM_GETCHECK,0,0) ) newopts |= PCSX2_VU0REC; if( SendDlgItemMessage(hW,IDC_CPU_VU1REC,BM_GETCHECK,0,0) ) newopts |= PCSX2_VU1REC; if( SendDlgItemMessage(hW,IDC_CPU_GSMULTI,BM_GETCHECK,0,0) ) newopts |= PCSX2_GSMULTITHREAD; if( SendDlgItemMessage(hW,IDC_CPU_FL_NORMAL,BM_GETCHECK,0,0) ) newopts |= PCSX2_FRAMELIMIT_NORMAL; else if( SendDlgItemMessage(hW,IDC_CPU_FL_LIMIT,BM_GETCHECK,0,0) ) newopts |= PCSX2_FRAMELIMIT_LIMIT; else if( SendDlgItemMessage(hW,IDC_CPU_FL_SKIP,BM_GETCHECK,0,0) ) newopts |= PCSX2_FRAMELIMIT_SKIP; else if( SendDlgItemMessage(hW,IDC_CPU_FL_SKIPVU,BM_GETCHECK,0,0) ) newopts |= PCSX2_FRAMELIMIT_VUSKIP; GetDlgItemText(hW, IDC_CUSTOMFPS, cfps, 20); Config.CustomFps = atoi(cfps); GetDlgItemText(hW, IDC_CUSTOM_FRAMESKIP, cFrameskip, 20); Config.CustomFrameSkip = atoi(cFrameskip); GetDlgItemText(hW, IDC_CUSTOM_CONSECUTIVE_FRAMES, cConsecutiveFrames, 20); Config.CustomConsecutiveFrames = atoi(cConsecutiveFrames); GetDlgItemText(hW, IDC_CUSTOM_CONSECUTIVE_SKIP, cConsecutiveSkip, 20); Config.CustomConsecutiveSkip = atoi(cConsecutiveSkip); EndDialog(hW, TRUE); if( Config.Options != newopts ) { SysRestorableReset(); if( (Config.Options&PCSX2_GSMULTITHREAD) ^ (newopts&PCSX2_GSMULTITHREAD) ) { // Need the MTGS setting to take effect, so close out the plugins: PluginsResetGS(); if( CHECK_MULTIGS ) Console::Notice( "MTGS mode disabled.\n\tEnjoy the fruits of single-threaded simpicity." ); else Console::Notice( "MTGS mode enabled.\n\tWelcome to multi-threaded awesomeness." ); } Config.Options = newopts; } else if( Cpu != NULL ) UpdateVSyncRate(); SaveConfig(); return FALSE; } return TRUE; } return FALSE; }