diff --git a/desmume/src/SPU.h b/desmume/src/SPU.h index de551a24c..4a7650369 100644 --- a/desmume/src/SPU.h +++ b/desmume/src/SPU.h @@ -80,6 +80,7 @@ extern SPU_struct *SPU; int SPU_ChangeSoundCore(int coreid, int buffersize); int SPU_Init(int coreid, int buffersize); +void SPU_Pause(int pause); void SPU_SetVolume(int volume); void SPU_Reset(void); void SPU_DeInit(void); diff --git a/desmume/src/gtk-glade/callbacks.c b/desmume/src/gtk-glade/callbacks.c index 05ba6af54..f60633297 100755 --- a/desmume/src/gtk-glade/callbacks.c +++ b/desmume/src/gtk-glade/callbacks.c @@ -146,6 +146,15 @@ void on_menu_controls_activate (GtkMenuItem *menuitem, gpointer user_data) edit_controls(); } +void on_menu_audio_on_activate (GtkMenuItem *menuitem, gpointer user_data) { + /* we want set audio emulation ON or OFF */ + if (gtk_check_menu_item_get_active((GtkCheckMenuItem*)menuitem)) { + SPU_Pause(0); + } else { + SPU_Pause(1); + } +} + void on_menu_rightscreen_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkBox * sbox = (GtkBox*)glade_xml_get_widget(xml, "whb_Sub"); GtkWidget * mbox = glade_xml_get_widget(xml, "whb_Main"); diff --git a/desmume/src/gtk-glade/callbacks.h b/desmume/src/gtk-glade/callbacks.h index 01574558a..e365c550d 100755 --- a/desmume/src/gtk-glade/callbacks.h +++ b/desmume/src/gtk-glade/callbacks.h @@ -30,6 +30,7 @@ void on_size3x_activate (GtkMenuItem *menuitem, gpointer user_data); /* MENU CONFIG */ void on_menu_controls_activate (GtkMenuItem *menuitem, gpointer user_data); +void on_menu_audio_on_activate (GtkMenuItem *menuitem, gpointer user_data); void on_menu_rightscreen_activate (GtkMenuItem *menuitem, gpointer user_data); void on_menu_rotatescreen_activate (GtkMenuItem *menuitem, gpointer user_data); /* MENU TOOLS */ diff --git a/desmume/src/gtk-glade/callbacks_IO.c b/desmume/src/gtk-glade/callbacks_IO.c index e51c9f9f5..42578cc4e 100755 --- a/desmume/src/gtk-glade/callbacks_IO.c +++ b/desmume/src/gtk-glade/callbacks_IO.c @@ -3,7 +3,9 @@ static u16 Cur_Keypad = 0; int ScreenCoeff_Size=1; gboolean ScreenRotate=FALSE; - +gboolean Boost=FALSE; +int BoostFS=20; +int saveFS; /* ***** ***** INPUT BUTTONS / KEYBOARD ***** ***** */ @@ -22,7 +24,13 @@ u16 inline lookup_key (guint keyval) { gboolean on_wMainW_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data) { u16 Key = lookup_key(event->keyval); - if (Key != 0) { + if (event->keyval == Keypad_Config[DESMUME_KEY_BOOST-1]) { + Boost != Boost; + saveFS=Frameskip; + if (Boost) Frameskip = BoostFS; + else Frameskip = saveFS; + } + else if (Key != 0) { Cur_Keypad |= Key; if(desmume_running()) desmume_keypad(Cur_Keypad); } @@ -213,7 +221,7 @@ const char * DESMUME_KEY_NAMES[DESMUME_NB_KEYS]={ "A", "B", "Select", "Start", "Right", "Left", "Up", "Down", - "R", "L", "Y", "X", "DEBUG" + "R", "L", "Y", "X", "DEBUG", "Boost" }; gint Keypad_Temp[DESMUME_NB_KEYS]; guint temp_Key=0; @@ -292,3 +300,4 @@ void on_button_B_clicked (GtkButton *b, gpointer user_data) { ask(b,DESMU void on_button_Start_clicked (GtkButton *b, gpointer user_data) { ask(b,DESMUME_KEY_Start); } void on_button_Select_clicked (GtkButton *b, gpointer user_data) { ask(b,DESMUME_KEY_Select); } void on_button_Debug_clicked (GtkButton *b, gpointer user_data) { ask(b,DESMUME_KEY_DEBUG); } +void on_button_Boost_clicked (GtkButton *b, gpointer user_data) { ask(b,DESMUME_KEY_BOOST); } diff --git a/desmume/src/gtk-glade/callbacks_IO.h b/desmume/src/gtk-glade/callbacks_IO.h index 89e2a7abc..4db7cd9a6 100755 --- a/desmume/src/gtk-glade/callbacks_IO.h +++ b/desmume/src/gtk-glade/callbacks_IO.h @@ -41,3 +41,4 @@ void on_button_B_clicked (GtkButton *button, gpointer user_data); void on_button_Start_clicked (GtkButton *button, gpointer user_data); void on_button_Select_clicked (GtkButton *button, gpointer user_data); void on_button_Debug_clicked (GtkButton *button, gpointer user_data); +void on_button_Boost_clicked (GtkButton *button, gpointer user_data); diff --git a/desmume/src/gtk-glade/desmume.h b/desmume/src/gtk-glade/desmume.h index 100b75886..82e5a0db9 100755 --- a/desmume/src/gtk-glade/desmume.h +++ b/desmume/src/gtk-glade/desmume.h @@ -2,7 +2,7 @@ #define __DESMUME_H__ -#define DESMUME_NB_KEYS 13 +#define DESMUME_NB_KEYS 14 #define DESMUME_KEYMASK_(k) (1 << k) @@ -21,6 +21,7 @@ #define DESMUME_KEY_Y 11 #define DESMUME_KEY_X 12 #define DESMUME_KEY_DEBUG 13 +#define DESMUME_KEY_BOOST 14 #include "globals.h" diff --git a/desmume/src/gtk-glade/glade/DeSmuMe.glade b/desmume/src/gtk-glade/glade/DeSmuMe.glade index 8037e07f9..8b81ab552 100755 --- a/desmume/src/gtk-glade/glade/DeSmuMe.glade +++ b/desmume/src/gtk-glade/glade/DeSmuMe.glade @@ -117,7 +117,7 @@ - + True gtk-refresh 1 @@ -328,7 +328,7 @@ - + True gtk-preferences 1 @@ -341,6 +341,16 @@ + + + True + Audio On + True + True + + + + True @@ -382,7 +392,7 @@ - + True gtk-properties 1 @@ -1215,6 +1225,26 @@ + + + + True + True + Boost : + True + GTK_RELIEF_NORMAL + True + + + + 4 + 5 + 1 + 2 + fill + + + 0 diff --git a/desmume/src/gtk-glade/main.c b/desmume/src/gtk-glade/main.c index 21d36e785..5b0c8a8c1 100755 --- a/desmume/src/gtk-glade/main.c +++ b/desmume/src/gtk-glade/main.c @@ -36,12 +36,13 @@ const char *Ini_Keypad_Values[DESMUME_NB_KEYS] = "KEY_Y", "KEY_X", "KEY_DEBUG", + "KEY_BOOST" }; const gint Default_Keypad_Config[DESMUME_NB_KEYS] = { - GDK_A, - GDK_B, + GDK_b, + GDK_a, GDK_BackSpace, GDK_Return, GDK_Right, @@ -50,9 +51,10 @@ const gint Default_Keypad_Config[DESMUME_NB_KEYS] = GDK_Down, GDK_KP_Decimal, GDK_KP_0, - GDK_Y, - GDK_X, - GDK_P + GDK_y, + GDK_x, + GDK_p, + GDK_o }; char * CONFIG_FILE;