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 @@
+
+
+
+
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;