diff --git a/common/include/Pcsx2Defs.h b/common/include/Pcsx2Defs.h index 9060c0423c..60e7306de8 100644 --- a/common/include/Pcsx2Defs.h +++ b/common/include/Pcsx2Defs.h @@ -55,7 +55,7 @@ # else # define jBREAKPOINT() ((void) *(volatile char *) 0) # endif -# define jASSUME(exp) do { if(exp) ; else jBREAKPOINT() } while(0); +# define jASSUME(exp) do { if(exp) ; else jBREAKPOINT(); } while(0); # endif #endif @@ -94,6 +94,13 @@ default: \ #define __naked __declspec(naked) #define __unused /*unused*/ #define __noinline __declspec(noinline) + +// Don't know if there are Visual C++ equivalents of these. +#define __hot +#define __cold +#define likely(x) x +#define unlikely(x) x + #define CALLBACK __stdcall #else @@ -106,7 +113,7 @@ default: \ /* Test for GCC > 4.4.0; Should be adjusted when new versions come out */ #if GCC_VERSION >= 40400 #define THE_UNBEARABLE_LIGHTNESS_OF_BEING_GCC_4_4_0 -#define __nooptimization __attribute__((optimize("O0")) +#define __nooptimization __attribute__((optimize("O0"))) #endif /* @@ -137,6 +144,10 @@ This theoretically unoptimizes. Not having much luck so far. #define _inline __inline__ __attribute__((unused)) #define __forceinline __attribute__((always_inline,unused)) #define __noinline __attribute__((noinline)) +#define __hot __attribute__((hot)) +#define __cold __attribute__((cold)) +#define likely(x) __builtin_expect(!!(x), 1) +#define unlikely(x) __builtin_expect(!!(x), 0) #endif #ifndef THE_UNBEARABLE_LIGHTNESS_OF_BEING_GCC_4_4_0 diff --git a/pcsx2/Linux/CpuDlg.cpp b/pcsx2/Linux/CpuDlg.cpp index 4baca1577e..8982c63fc1 100644 --- a/pcsx2/Linux/CpuDlg.cpp +++ b/pcsx2/Linux/CpuDlg.cpp @@ -31,6 +31,10 @@ void OnCpu_Ok(GtkButton *button, gpointer user_data) 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_microVU0rec")))) + newopts |= PCSX2_MICROVU0; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkCheckButton_microVU1rec")))) + newopts |= PCSX2_MICROVU1; 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")))) @@ -39,7 +43,7 @@ void OnCpu_Ok(GtkButton *button, gpointer user_data) newopts |= PCSX2_FRAMELIMIT_LIMIT; else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkRadioButton_LimitFS")))) newopts |= PCSX2_FRAMELIMIT_SKIP; - + 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"))); @@ -82,6 +86,8 @@ void OnConf_Cpu(GtkMenuItem *menuitem, gpointer user_data) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkCheckButton_EERec")), !!CHECK_EEREC); gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkCheckButton_VU0rec")), !!CHECK_VU0REC); gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkCheckButton_VU1rec")), !!CHECK_VU1REC); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkCheckButton_microVU0rec")), !!CHECK_MICROVU0); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkCheckButton_microVU1rec")), !!CHECK_MICROVU1); gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkCheckButton_MTGS")), !!CHECK_MULTIGS); gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkRadioButton_LimitNormal")), CHECK_FRAMELIMIT == PCSX2_FRAMELIMIT_NORMAL); gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(lookup_widget(CpuDlg, "GtkRadioButton_LimitLimit")), CHECK_FRAMELIMIT == PCSX2_FRAMELIMIT_LIMIT); diff --git a/pcsx2/Linux/HacksDlg.cpp b/pcsx2/Linux/HacksDlg.cpp index 0177d60930..470425cbcf 100644 --- a/pcsx2/Linux/HacksDlg.cpp +++ b/pcsx2/Linux/HacksDlg.cpp @@ -79,6 +79,9 @@ void on_Speed_Hacks(GtkMenuItem *menuitem, gpointer user_data) set_checked(SpeedHacksDlg, "check_wait_cycles_sync_hack", Config.Hacks.WaitCycleExt); set_checked(SpeedHacksDlg, "check_intc_sync_hack", Config.Hacks.INTCSTATSlow); set_checked(SpeedHacksDlg, "check_idle_loop_fastforward", Config.Hacks.IdleLoopFF); + set_checked(SpeedHacksDlg, "check_microvu_flag_hack_1", Config.Hacks.vuFlagHack1); + set_checked(SpeedHacksDlg, "check_microvu_flag_hack_2", Config.Hacks.vuFlagHack2); + set_checked(SpeedHacksDlg, "check_microvu_min_max_hack", Config.Hacks.vuMinMax); gtk_range_set_value(vuScale, Config.Hacks.VUCycleSteal); on_vu_slider_changed(vuScale, NULL); @@ -101,6 +104,9 @@ void on_Speed_Hack_OK(GtkButton *button, gpointer user_data) newhacks.WaitCycleExt = is_checked(SpeedHacksDlg, "check_wait_cycles_sync_hack"); newhacks.INTCSTATSlow = is_checked(SpeedHacksDlg, "check_intc_sync_hack"); newhacks.IdleLoopFF = is_checked(SpeedHacksDlg, "check_idle_loop_fastforward"); + newhacks.vuFlagHack1 = is_checked(SpeedHacksDlg, "check_microvu_flag_hack_1"); + newhacks.vuFlagHack2 = is_checked(SpeedHacksDlg, "check_microvu_flag_hack_2"); + newhacks.vuMinMax = is_checked(SpeedHacksDlg, "check_microvu_min_max_hack"); newhacks.VUCycleSteal = gtk_range_get_value(GTK_RANGE(lookup_widget(SpeedHacksDlg, "VUCycleHackScale"))); newhacks.EECycleRate = gtk_range_get_value(GTK_RANGE(lookup_widget(SpeedHacksDlg, "EECycleHackScale"))); diff --git a/pcsx2/Linux/interface.c b/pcsx2/Linux/interface.c index 5c1fcf9ed7..0ed474d4b2 100644 --- a/pcsx2/Linux/interface.c +++ b/pcsx2/Linux/interface.c @@ -644,9 +644,19 @@ create_SpeedHacksDlg (void) GtkWidget *check_idle_loop_fastforward; GtkWidget *label110; GtkWidget *hseparator1; + GtkWidget *frame41; + GtkWidget *alignment36; + GtkWidget *vbox75; + GtkWidget *check_microvu_flag_hack_1; + GtkWidget *check_microvu_flag_hack_2; + GtkWidget *check_microvu_min_max_hack; + GtkWidget *label113; GtkWidget *dialog_action_area3; GtkWidget *button99; GtkWidget *button98; + GtkTooltips *tooltips; + + tooltips = gtk_tooltips_new (); SpeedHacksDlg = gtk_dialog_new (); gtk_widget_set_name (SpeedHacksDlg, "SpeedHacksDlg"); @@ -717,7 +727,7 @@ create_SpeedHacksDlg (void) gtk_box_pack_start (GTK_BOX (vbox61), label91, FALSE, FALSE, 0); gtk_label_set_line_wrap (GTK_LABEL (label91), TRUE); - label105 = gtk_label_new (_("EmotionEngine (EE) Sync Hacks")); + label105 = gtk_label_new (_("EmotionEngine (EE) Sync Hacks")); gtk_widget_set_name (label105, "label105"); gtk_widget_show (label105); gtk_frame_set_label_widget (GTK_FRAME (frame37), label105); @@ -752,7 +762,7 @@ create_SpeedHacksDlg (void) gtk_box_pack_start (GTK_BOX (vbox73), vu_cycle_stealing_label, FALSE, FALSE, 0); gtk_label_set_line_wrap (GTK_LABEL (vu_cycle_stealing_label), TRUE); - label111 = gtk_label_new (_("VU Cycle Stealing (Speedup for 3d geometry)")); + label111 = gtk_label_new (_("VU Cycle Stealing (Speedup for 3d geometry)")); gtk_widget_set_name (label111, "label111"); gtk_widget_show (label111); gtk_frame_set_label_widget (GTK_FRAME (frame39), label111); @@ -767,8 +777,9 @@ create_SpeedHacksDlg (void) gtk_widget_set_name (check_iop_cycle_rate, "check_iop_cycle_rate"); gtk_widget_show (check_iop_cycle_rate); gtk_box_pack_start (GTK_BOX (vbox60), check_iop_cycle_rate, FALSE, FALSE, 0); + gtk_tooltips_set_tip (tooltips, check_iop_cycle_rate, _("Small speedup, and works well with most games."), NULL); - label96 = gtk_label_new (_("Small speedup, and works well with most games,")); + label96 = gtk_label_new (_("Small speedup, and works well with most games.")); gtk_widget_set_name (label96, "label96"); gtk_widget_show (label96); gtk_box_pack_start (GTK_BOX (vbox60), label96, FALSE, FALSE, 0); @@ -778,6 +789,7 @@ create_SpeedHacksDlg (void) gtk_widget_set_name (check_wait_cycles_sync_hack, "check_wait_cycles_sync_hack"); gtk_widget_show (check_wait_cycles_sync_hack); gtk_box_pack_start (GTK_BOX (vbox60), check_wait_cycles_sync_hack, FALSE, FALSE, 0); + gtk_tooltips_set_tip (tooltips, check_wait_cycles_sync_hack, _("Small speedup. Works well with most games, but it may cause certain games to crash, or freeze up during bootup or stage changes."), NULL); label97 = gtk_label_new (_("Small speedup. Works well with most games, but it may cause certain games to crash, or freeze up during bootup or stage changes.")); gtk_widget_set_name (label97, "label97"); @@ -789,6 +801,7 @@ create_SpeedHacksDlg (void) gtk_widget_set_name (check_intc_sync_hack, "check_intc_sync_hack"); gtk_widget_show (check_intc_sync_hack); gtk_box_pack_start (GTK_BOX (vbox60), check_intc_sync_hack, FALSE, FALSE, 0); + gtk_tooltips_set_tip (tooltips, check_intc_sync_hack, _("Huge speedup in many games, and a pretty high compatibility rate (some games still work better with EE sync hacks)."), NULL); label101 = gtk_label_new (_("Huge speedup in many games, and a pretty high compatibility rate (some games still work better with EE sync hacks).")); gtk_widget_set_name (label101, "label101"); @@ -805,8 +818,9 @@ create_SpeedHacksDlg (void) gtk_widget_set_name (check_idle_loop_fastforward, "check_idle_loop_fastforward"); gtk_widget_show (check_idle_loop_fastforward); gtk_box_pack_start (GTK_BOX (vbox71), check_idle_loop_fastforward, FALSE, FALSE, 0); + gtk_tooltips_set_tip (tooltips, check_idle_loop_fastforward, _("Speedup for a few games, including FFX with no known side effects."), NULL); - label110 = gtk_label_new (_("Speedup for a few games, including FFX with no known side effects. More later.")); + label110 = gtk_label_new (_("Speedup for a few games, including FFX with no known side effects.")); gtk_widget_set_name (label110, "label110"); gtk_widget_show (label110); gtk_box_pack_start (GTK_BOX (vbox71), label110, FALSE, FALSE, 0); @@ -817,6 +831,46 @@ create_SpeedHacksDlg (void) gtk_widget_show (hseparator1); gtk_box_pack_start (GTK_BOX (vbox60), hseparator1, FALSE, FALSE, 0); + frame41 = gtk_frame_new (NULL); + gtk_widget_set_name (frame41, "frame41"); + gtk_widget_show (frame41); + gtk_box_pack_start (GTK_BOX (dialog_vbox3), frame41, TRUE, TRUE, 0); + + alignment36 = gtk_alignment_new (0.5, 0.5, 1, 1); + gtk_widget_set_name (alignment36, "alignment36"); + gtk_widget_show (alignment36); + gtk_container_add (GTK_CONTAINER (frame41), alignment36); + gtk_alignment_set_padding (GTK_ALIGNMENT (alignment36), 0, 0, 12, 0); + + vbox75 = gtk_vbox_new (FALSE, 0); + gtk_widget_set_name (vbox75, "vbox75"); + gtk_widget_show (vbox75); + gtk_container_add (GTK_CONTAINER (alignment36), vbox75); + + check_microvu_flag_hack_1 = gtk_check_button_new_with_mnemonic (_("Flag Hack 1 (microVU only)")); + gtk_widget_set_name (check_microvu_flag_hack_1, "check_microvu_flag_hack_1"); + gtk_widget_show (check_microvu_flag_hack_1); + gtk_box_pack_start (GTK_BOX (vbox75), check_microvu_flag_hack_1, FALSE, FALSE, 0); + gtk_tooltips_set_tip (tooltips, check_microvu_flag_hack_1, _("Big Speedup and moderately compatible. May cause SPS and Infinite loop problems."), NULL); + + check_microvu_flag_hack_2 = gtk_check_button_new_with_mnemonic (_("Flag Hack 2 (microVU only)")); + gtk_widget_set_name (check_microvu_flag_hack_2, "check_microvu_flag_hack_2"); + gtk_widget_show (check_microvu_flag_hack_2); + gtk_box_pack_start (GTK_BOX (vbox75), check_microvu_flag_hack_2, FALSE, FALSE, 0); + gtk_tooltips_set_tip (tooltips, check_microvu_flag_hack_2, _("Big Speedup and moderately compatible. SuperVU does something similar by default."), NULL); + + check_microvu_min_max_hack = gtk_check_button_new_with_mnemonic (_("Min / Max Hack (microVU only)")); + gtk_widget_set_name (check_microvu_min_max_hack, "check_microvu_min_max_hack"); + gtk_widget_show (check_microvu_min_max_hack); + gtk_box_pack_start (GTK_BOX (vbox75), check_microvu_min_max_hack, FALSE, FALSE, 0); + gtk_tooltips_set_tip (tooltips, check_microvu_min_max_hack, _("Small Speedup. May cause SPS, hanging, and missing geometry."), NULL); + + label113 = gtk_label_new (_("Vertex Unit (VU) Hacks")); + gtk_widget_set_name (label113, "label113"); + gtk_widget_show (label113); + gtk_frame_set_label_widget (GTK_FRAME (frame41), label113); + gtk_label_set_use_markup (GTK_LABEL (label113), TRUE); + dialog_action_area3 = GTK_DIALOG (SpeedHacksDlg)->action_area; gtk_widget_set_name (dialog_action_area3, "dialog_action_area3"); gtk_widget_show (dialog_action_area3); @@ -882,9 +936,17 @@ create_SpeedHacksDlg (void) GLADE_HOOKUP_OBJECT (SpeedHacksDlg, check_idle_loop_fastforward, "check_idle_loop_fastforward"); GLADE_HOOKUP_OBJECT (SpeedHacksDlg, label110, "label110"); GLADE_HOOKUP_OBJECT (SpeedHacksDlg, hseparator1, "hseparator1"); + GLADE_HOOKUP_OBJECT (SpeedHacksDlg, frame41, "frame41"); + GLADE_HOOKUP_OBJECT (SpeedHacksDlg, alignment36, "alignment36"); + GLADE_HOOKUP_OBJECT (SpeedHacksDlg, vbox75, "vbox75"); + GLADE_HOOKUP_OBJECT (SpeedHacksDlg, check_microvu_flag_hack_1, "check_microvu_flag_hack_1"); + GLADE_HOOKUP_OBJECT (SpeedHacksDlg, check_microvu_flag_hack_2, "check_microvu_flag_hack_2"); + GLADE_HOOKUP_OBJECT (SpeedHacksDlg, check_microvu_min_max_hack, "check_microvu_min_max_hack"); + GLADE_HOOKUP_OBJECT (SpeedHacksDlg, label113, "label113"); GLADE_HOOKUP_OBJECT_NO_REF (SpeedHacksDlg, dialog_action_area3, "dialog_action_area3"); GLADE_HOOKUP_OBJECT (SpeedHacksDlg, button99, "button99"); GLADE_HOOKUP_OBJECT (SpeedHacksDlg, button98, "button98"); + GLADE_HOOKUP_OBJECT_NO_REF (SpeedHacksDlg, tooltips, "tooltips"); return SpeedHacksDlg; } @@ -3859,6 +3921,12 @@ create_CpuDlg (void) GtkWidget *GtkCheckButton_VU0rec; GtkWidget *GtkCheckButton_VU1rec; GtkWidget *label32; + GtkWidget *frame40; + GtkWidget *alignment35; + GtkWidget *vbox74; + GtkWidget *GtkCheckButton_microVU0rec; + GtkWidget *GtkCheckButton_microVU1rec; + GtkWidget *label112; GtkWidget *GtkCheckButton_MTGS; GtkWidget *vbox48; GtkWidget *frame9; @@ -3984,11 +4052,44 @@ create_CpuDlg (void) gtk_widget_show (GtkCheckButton_VU1rec); gtk_box_pack_start (GTK_BOX (vbox26), GtkCheckButton_VU1rec, FALSE, FALSE, 0); - label32 = gtk_label_new (_("VU Recompilers - All options are set by default")); + label32 = gtk_label_new (_("VU Recompilers")); gtk_widget_set_name (label32, "label32"); gtk_widget_show (label32); gtk_frame_set_label_widget (GTK_FRAME (frame6), label32); + frame40 = gtk_frame_new (NULL); + gtk_widget_set_name (frame40, "frame40"); + gtk_widget_show (frame40); + gtk_box_pack_start (GTK_BOX (vbox47), frame40, FALSE, FALSE, 0); + gtk_container_set_border_width (GTK_CONTAINER (frame40), 5); + + alignment35 = gtk_alignment_new (0.5, 0.5, 1, 1); + gtk_widget_set_name (alignment35, "alignment35"); + gtk_widget_show (alignment35); + gtk_container_add (GTK_CONTAINER (frame40), alignment35); + gtk_container_set_border_width (GTK_CONTAINER (alignment35), 5); + + vbox74 = gtk_vbox_new (FALSE, 0); + gtk_widget_set_name (vbox74, "vbox74"); + gtk_widget_show (vbox74); + gtk_container_add (GTK_CONTAINER (alignment35), vbox74); + + GtkCheckButton_microVU0rec = gtk_check_button_new_with_mnemonic (_("microVU0 - Use microVU rec instead of VU0rec. ! Beta !")); + gtk_widget_set_name (GtkCheckButton_microVU0rec, "GtkCheckButton_microVU0rec"); + gtk_widget_show (GtkCheckButton_microVU0rec); + gtk_box_pack_start (GTK_BOX (vbox74), GtkCheckButton_microVU0rec, FALSE, FALSE, 0); + + GtkCheckButton_microVU1rec = gtk_check_button_new_with_mnemonic (_("microVU1 - Use microVU rec instead of VU1rec. ! Beta !")); + gtk_widget_set_name (GtkCheckButton_microVU1rec, "GtkCheckButton_microVU1rec"); + gtk_widget_show (GtkCheckButton_microVU1rec); + gtk_box_pack_start (GTK_BOX (vbox74), GtkCheckButton_microVU1rec, FALSE, FALSE, 0); + + label112 = gtk_label_new (_("microVU Recompilers - ! Beta !")); + gtk_widget_set_name (label112, "label112"); + gtk_widget_show (label112); + gtk_frame_set_label_widget (GTK_FRAME (frame40), label112); + gtk_label_set_use_markup (GTK_LABEL (label112), TRUE); + GtkCheckButton_MTGS = gtk_check_button_new_with_mnemonic (_("Multi threaded GS mode (MTGS)\n (faster on dual core/HT CPUs, requires pcsx2 restart)")); gtk_widget_set_name (GtkCheckButton_MTGS, "GtkCheckButton_MTGS"); gtk_widget_show (GtkCheckButton_MTGS); @@ -4194,6 +4295,12 @@ create_CpuDlg (void) GLADE_HOOKUP_OBJECT (CpuDlg, GtkCheckButton_VU0rec, "GtkCheckButton_VU0rec"); GLADE_HOOKUP_OBJECT (CpuDlg, GtkCheckButton_VU1rec, "GtkCheckButton_VU1rec"); GLADE_HOOKUP_OBJECT (CpuDlg, label32, "label32"); + GLADE_HOOKUP_OBJECT (CpuDlg, frame40, "frame40"); + GLADE_HOOKUP_OBJECT (CpuDlg, alignment35, "alignment35"); + GLADE_HOOKUP_OBJECT (CpuDlg, vbox74, "vbox74"); + GLADE_HOOKUP_OBJECT (CpuDlg, GtkCheckButton_microVU0rec, "GtkCheckButton_microVU0rec"); + GLADE_HOOKUP_OBJECT (CpuDlg, GtkCheckButton_microVU1rec, "GtkCheckButton_microVU1rec"); + GLADE_HOOKUP_OBJECT (CpuDlg, label112, "label112"); GLADE_HOOKUP_OBJECT (CpuDlg, GtkCheckButton_MTGS, "GtkCheckButton_MTGS"); GLADE_HOOKUP_OBJECT (CpuDlg, vbox48, "vbox48"); GLADE_HOOKUP_OBJECT (CpuDlg, frame9, "frame9"); diff --git a/pcsx2/Linux/pcsx2.glade b/pcsx2/Linux/pcsx2.glade index 397d21bb1b..59dad5cd05 100644 --- a/pcsx2/Linux/pcsx2.glade +++ b/pcsx2/Linux/pcsx2.glade @@ -1394,7 +1394,7 @@ If you have problems, Disable all of these and try again. True - <b>EmotionEngine (EE) Sync Hacks</b> + EmotionEngine (EE) Sync Hacks False True GTK_JUSTIFY_LEFT @@ -1497,7 +1497,7 @@ If you have problems, Disable all of these and try again. True - <b>VU Cycle Stealing (Speedup for 3d geometry)</b> + VU Cycle Stealing (Speedup for 3d geometry) False True GTK_JUSTIFY_LEFT @@ -1540,6 +1540,7 @@ If you have problems, Disable all of these and try again. True + Small speedup, and works well with most games. True Enable IOP x2 Cycle Rate True @@ -1559,7 +1560,7 @@ If you have problems, Disable all of these and try again. True - Small speedup, and works well with most games, + Small speedup, and works well with most games. False False GTK_JUSTIFY_LEFT @@ -1585,6 +1586,7 @@ If you have problems, Disable all of these and try again. True + Small speedup. Works well with most games, but it may cause certain games to crash, or freeze up during bootup or stage changes. True WaitCycles Sync Hack True @@ -1630,6 +1632,7 @@ If you have problems, Disable all of these and try again. True + Huge speedup in many games, and a pretty high compatibility rate (some games still work better with EE sync hacks). True INTC Sync Hack True @@ -1680,6 +1683,7 @@ If you have problems, Disable all of these and try again. True + Speedup for a few games, including FFX with no known side effects. True Idle Loop Fast-Forward (experimental) True @@ -1699,7 +1703,7 @@ If you have problems, Disable all of these and try again. True - Speedup for a few games, including FFX with no known side effects. More later. + Speedup for a few games, including FFX with no known side effects. False False GTK_JUSTIFY_LEFT @@ -1759,6 +1763,125 @@ If you have problems, Disable all of these and try again. False + + + + True + 0 + 0.5 + GTK_SHADOW_ETCHED_IN + + + + True + 0.5 + 0.5 + 1 + 1 + 0 + 0 + 12 + 0 + + + + True + False + 0 + + + + True + Big Speedup and moderately compatible. May cause SPS and Infinite loop problems. + True + Flag Hack 1 (microVU only) + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + Big Speedup and moderately compatible. SuperVU does something similar by default. + True + Flag Hack 2 (microVU only) + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + Small Speedup. May cause SPS, hanging, and missing geometry. + True + Min / Max Hack (microVU only) + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + + + + + True + Vertex Unit (VU) Hacks + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + + + + 0 + True + True + + @@ -6718,7 +6841,7 @@ Version x.x True - VU Recompilers - All options are set by default + VU Recompilers False False GTK_JUSTIFY_LEFT @@ -6745,6 +6868,105 @@ Version x.x + + + 5 + True + 0 + 0.5 + GTK_SHADOW_ETCHED_IN + + + + 5 + True + 0.5 + 0.5 + 1 + 1 + 0 + 0 + 0 + 0 + + + + True + False + 0 + + + + True + True + microVU0 - Use microVU rec instead of VU0rec. ! Beta ! + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + True + True + microVU1 - Use microVU rec instead of VU1rec. ! Beta ! + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 0 + False + False + + + + + + + + + + True + microVU Recompilers - ! Beta ! + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + label_item + + + + + 0 + False + False + + + True diff --git a/pcsx2/x86/iVUzerorec.cpp b/pcsx2/x86/iVUzerorec.cpp index 4dbb9c6e3e..105f6a61e5 100644 --- a/pcsx2/x86/iVUzerorec.cpp +++ b/pcsx2/x86/iVUzerorec.cpp @@ -343,7 +343,12 @@ void SuperVUAlloc(int vuindex) { // upper 4 bits must be zero! // Changed "first try base" to 0xb800000, since 0x0c000000 liked to fail a lot. (air) + // With microVU as optional now, Linux fails with 0x0e000000, and prefers 0x0c000000. --arcum42 +#ifdef __LINUX__ + s_recVUMem = SysMmapEx(0x0c000000, VU_EXESIZE, 0x10000000, "SuperVUAlloc"); +#else s_recVUMem = SysMmapEx(0x0e000000, VU_EXESIZE, 0x10000000, "SuperVUAlloc"); +#endif if (s_recVUMem == NULL) { diff --git a/plugins/GSnull/GifTransfer.cpp b/plugins/GSnull/GifTransfer.cpp index 34e69fa3bb..1d81988b07 100644 --- a/plugins/GSnull/GifTransfer.cpp +++ b/plugins/GSnull/GifTransfer.cpp @@ -37,8 +37,6 @@ PCSX2_ALIGNED16( u8 g_RealGSMem[0x2000] ); static void RegHandlerSIGNAL(const u32* data) { - //MTGS_LOG("MTGS SIGNAL data %x_%x CSRw %x\n",data[0], data[1], CSRw); - GSSIGLBLID->SIGID = (GSSIGLBLID->SIGID&~data[1])|(data[0]&data[1]); if ((CSRw & 0x1)) GSCSRr |= 1; // signal @@ -48,8 +46,6 @@ static void RegHandlerSIGNAL(const u32* data) static void RegHandlerFINISH(const u32* data) { - //MTGS_LOG("MTGS FINISH data %x_%x CSRw %x\n",data[0], data[1], CSRw); - if ((CSRw & 0x2)) GSCSRr |= 2; // finish if (!(GSIMR & 0x200) ) GSirq(); diff --git a/plugins/zeropad/Windows/win.cpp b/plugins/zeropad/Windows/win.cpp index 40e058721a..959f65fedc 100644 --- a/plugins/zeropad/Windows/win.cpp +++ b/plugins/zeropad/Windows/win.cpp @@ -29,142 +29,150 @@ using namespace std; -HINSTANCE hInst=NULL; +HINSTANCE hInst = NULL; static pthread_spinlock_t s_mutexStatus; static u32 s_keyPress[2], s_keyRelease[2]; extern u16 status[2]; extern string s_strIniPath; LRESULT WINAPI PADwndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); -WNDPROC GSwndProc=NULL; -HWND GShwnd=NULL; +WNDPROC GSwndProc = NULL; +HWND GShwnd = NULL; extern keyEvent event; void SaveConfig() { - char *szTemp; - char szIniFile[256], szValue[256], szProf[256]; - int i, j; + char *szTemp; + char szIniFile[256], szValue[256], szProf[256]; + int i, j; - GetModuleFileName(GetModuleHandle((LPCSTR)hInst), szIniFile, 256); - szTemp = strrchr(szIniFile, '\\'); + GetModuleFileName(GetModuleHandle((LPCSTR)hInst), szIniFile, 256); + szTemp = strrchr(szIniFile, '\\'); - if(!szTemp) return; - strcpy(szTemp, "\\inis\\zeropad.ini"); + if (!szTemp) return; + strcpy(szTemp, "\\inis\\zeropad.ini"); - for (j=0; j<2; j++) { - for (i=0; i=0x60 && key<=0x69) { - sprintf(buff, "NumPad %c", '0' + key - 0x60); - } - else sprintf(buff, "%c", key); - } - } - else if (key >= 0x1000 && key < 0x2000) - { - sprintf (buff, "J%d_%d", (key & 0xfff) / 0x100, (key & 0xff) + 1); - } - else if (key >= 0x2000 && key < 0x3000) - { - static const char name[][4] = { "MIN", "MAX" }; - const int axis = (key & 0xff); - sprintf (buff, "J%d_AXIS%d_%s", (key & 0xfff) / 0x100, axis / 2, name[axis % 2]); - if (index >= 17 && index <= 20) - buff[strlen (buff) -4] = '\0'; - } - else if (key >= 0x3000 && key < 0x4000) - { - static const char name[][7] = { "FOWARD", "RIGHT", "BACK", "LEFT" }; - const int pov = (key & 0xff); - sprintf (buff, "J%d_POV%d_%s", (key & 0xfff) / 0x100, pov /4, name[pov % 4]); - } + const int key = conf.keys[pad][index]; + char buff[16] = "NONE)"; + if (key < 0x100) + { + if (key == 0) + strcpy(buff, "NONE"); + else + { + if (key >= 0x60 && key <= 0x69) + { + sprintf(buff, "NumPad %c", '0' + key - 0x60); + } + else sprintf(buff, "%c", key); + } + } + else if (key >= 0x1000 && key < 0x2000) + { + sprintf(buff, "J%d_%d", (key & 0xfff) / 0x100, (key & 0xff) + 1); + } + else if (key >= 0x2000 && key < 0x3000) + { + static const char name[][4] = { "MIN", "MAX" }; + const int axis = (key & 0xff); + sprintf(buff, "J%d_AXIS%d_%s", (key & 0xfff) / 0x100, axis / 2, name[axis % 2]); + if (index >= 17 && index <= 20) + buff[strlen(buff) -4] = '\0'; + } + else if (key >= 0x3000 && key < 0x4000) + { + static const char name[][7] = { "FOWARD", "RIGHT", "BACK", "LEFT" }; + const int pov = (key & 0xff); + sprintf(buff, "J%d_POV%d_%s", (key & 0xfff) / 0x100, pov / 4, name[pov % 4]); + } - return buff; + return buff; } -BOOL CALLBACK ConfigureDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) { - HWND hWC; - TCITEM tcI; - int i,key, numkeys; - u8* pkeyboard; - static int disabled=0; - static int padn=0; +BOOL CALLBACK ConfigureDlgProc(HWND hW, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + HWND hWC; + TCITEM tcI; + int i, key, numkeys; + u8* pkeyboard; + static int disabled = 0; + static int padn = 0; - switch(uMsg) { - case WM_INITDIALOG: - LoadConfig(); - padn = 0; - if (conf.log) CheckDlgButton(hW, IDC_LOG, TRUE); + switch (uMsg) + { + case WM_INITDIALOG: + LoadConfig(); + padn = 0; + if (conf.log) CheckDlgButton(hW, IDC_LOG, TRUE); - for (i=0; i