diff --git a/desmume/src/gtk-glade/dTools/callbacks_1_ioregs.c b/desmume/src/gtk-glade/dTools/callbacks_1_ioregs.c
new file mode 100755
index 000000000..210f61d7f
--- /dev/null
+++ b/desmume/src/gtk-glade/dTools/callbacks_1_ioregs.c
@@ -0,0 +1,25 @@
+#include "callbacks_dtools.h"
+
+/* ***** ***** IO REGISTERS ***** ***** */
+
+void on_wtools_1_IOregs_show (GtkWidget *widget, gpointer user_data) {
+ GtkWidget * b = glade_xml_get_widget(xml_tools, "wtools_1_r_ime");
+ // do as if we had selected this button
+ gtk_toggle_button_set_active((GtkToggleButton*)b, TRUE);
+}
+
+/* c == 0 (ARM9) */
+static u32 val_REG_IME(int c) { return MMU.reg_IME[c]; }
+static u32 val_REG_IE(int c) { return MMU.reg_IE[c]; }
+static u32 val_REG_IF(int c) { return MMU.reg_IF[c]; }
+static u32 val_REG_IPCFIFOCNT(int c) { return ((u16 *)(MMU.MMU_MEM[c][0x40]))[0x184>>1]; }
+static u32 val_POWER_CR(int c) { return ((u16 *)(MMU.MMU_MEM[c][0x40]))[0x304>>1]; }
+static u32 val_REG_SPICNT(int c) { return ((u16 *)(MMU.MMU_MEM[c][0x40]))[0x1C0>>1]; }
+
+void on_wtools_1_r_ipcfifocnt_toggled (GtkToggleButton *togglebutton, gpointer user_data);
+void on_wtools_1_r_spicnt_toggled (GtkToggleButton *togglebutton, gpointer user_data);
+void on_wtools_1_r_ime_toggled (GtkToggleButton *togglebutton, gpointer user_data) { printf("hello\n");}
+void on_wtools_1_r_ie_toggled (GtkToggleButton *togglebutton, gpointer user_data);
+void on_wtools_1_r_if_toggled (GtkToggleButton *togglebutton, gpointer user_data);
+void on_wtools_1_r_power_cr_toggled (GtkToggleButton *togglebutton, gpointer user_data);
+
diff --git a/desmume/src/gtk-glade/dTools/callbacks_dtools.h b/desmume/src/gtk-glade/dTools/callbacks_dtools.h
new file mode 100755
index 000000000..f46c2d8bf
--- /dev/null
+++ b/desmume/src/gtk-glade/dTools/callbacks_dtools.h
@@ -0,0 +1,12 @@
+#include "../globals.h"
+
+/* ***** ***** IO REGISTERS ***** ***** */
+
+void on_wtools_1_IOregs_show (GtkWidget *widget, gpointer user_data);
+void on_wtools_1_r_ipcfifocnt_toggled (GtkToggleButton *togglebutton, gpointer user_data);
+void on_wtools_1_r_spicnt_toggled (GtkToggleButton *togglebutton, gpointer user_data);
+void on_wtools_1_r_ime_toggled (GtkToggleButton *togglebutton, gpointer user_data);
+void on_wtools_1_r_ie_toggled (GtkToggleButton *togglebutton, gpointer user_data);
+void on_wtools_1_r_if_toggled (GtkToggleButton *togglebutton, gpointer user_data);
+void on_wtools_1_r_power_cr_toggled (GtkToggleButton *togglebutton, gpointer user_data);
+
diff --git a/desmume/src/gtk-glade/glade/DeSmuME.xpm b/desmume/src/gtk-glade/glade/DeSmuME.xpm
new file mode 100755
index 000000000..d1ce27621
--- /dev/null
+++ b/desmume/src/gtk-glade/glade/DeSmuME.xpm
@@ -0,0 +1,50 @@
+/* XPM */
+static const char * DeSmuME_xpm[] = {
+"32 32 15 1",
+" c None",
+". c #000000",
+"+ c #F6F6FB",
+"@ c #ECECF6",
+"# c #E2E2F1",
+"$ c #D8D8EC",
+"% c #CFCFE7",
+"& c #C5C5E2",
+"* c #BBBBDE",
+"= c #B1B1D9",
+"- c #A8A8D4",
+"; c #9E9ECF",
+"> c #9494CA",
+", c #8A8AC5",
+"' c #8080C0",
+" .................... ",
+" .................... ",
+".....++..+++++..+++++.. ",
+".....++..++.....++..... ",
+"..@@@@@..@@@@@..@@@@@.. ",
+"..@@.@@..@@........@@.. ",
+"..##.##..##.##..##.##.. ",
+"..##.##..##.##..##.##.. ",
+"..$$.$$..$$.$$..$$.$$.. ",
+"..$$.$$..$$.$$..$$.$$.. ",
+"..%%.%%..%%.%%..%%.%%.. ",
+"..%%.%%..%%.%%..%%.%%.. ",
+"..&&&&&..&&&&&..&&&&&.. ",
+"....................... ",
+".......********.**.**.. ",
+" ..==.==.==.==.==.. ",
+" ..==.==.==.==.==.. ",
+" ..--.--.--.--.--.. ",
+" ..--.--.--.--.--.. ",
+" ..;;.;;.;;.;;;;;.. ",
+" ..................... ",
+" ..................... ",
+" ..>>>>>>>>.>>>>>.. ",
+" ..>>.>>.>>.>>..... ",
+" ..,,.,,.,,.,,,,,.. ",
+" ..,,.,,.,,.,,..... ",
+" ..''.''.''.''.''.. ",
+" ..''.''.''.''.''.. ",
+" ..''.''.''.''.''.. ",
+" ..''.''.''.'''''.. ",
+" .................. ",
+" .................. "};
diff --git a/desmume/src/gtk-glade/glade/DeSmuMe.glade b/desmume/src/gtk-glade/glade/DeSmuMe.glade
new file mode 100755
index 000000000..87de0403a
--- /dev/null
+++ b/desmume/src/gtk-glade/glade/DeSmuMe.glade
@@ -0,0 +1,1332 @@
+
+
+
+
+
+
+ True
+ GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK
+ DeSmuMe
+ GTK_WINDOW_TOPLEVEL
+ GTK_WIN_POS_CENTER_ON_PARENT
+ False
+ True
+ False
+ DeSmuME.xpm
+ True
+ False
+ False
+ GDK_WINDOW_TYPE_HINT_NORMAL
+ GDK_GRAVITY_NORTH_WEST
+ True
+ False
+
+
+
+
+
+
+
+
+
+ True
+ False
+ 0
+
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ GTK_ORIENTATION_HORIZONTAL
+ GTK_TOOLBAR_BOTH
+ True
+ True
+
+
+
+ True
+ gtk-open
+ True
+ True
+ False
+
+
+
+ False
+ True
+
+
+
+
+
+ True
+ True
+ True
+ True
+
+
+ False
+ False
+
+
+
+
+
+ True
+ False
+ gtk-execute
+ True
+ True
+ False
+ False
+
+
+
+ False
+ True
+
+
+
+
+
+ True
+ False
+ Reset
+ True
+ gtk-refresh
+ True
+ True
+ False
+
+
+
+ False
+ True
+
+
+
+
+
+ True
+ True
+ True
+ True
+
+
+ False
+ False
+
+
+
+
+
+ True
+ gtk-quit
+ True
+ True
+ False
+
+
+
+ False
+ True
+
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ True
+ BG0
+ True
+ GTK_RELIEF_NORMAL
+ True
+ True
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ BG1
+ True
+ GTK_RELIEF_NORMAL
+ True
+ True
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ BG2
+ True
+ GTK_RELIEF_NORMAL
+ True
+ True
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ BG3
+ True
+ GTK_RELIEF_NORMAL
+ True
+ True
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ OBJ
+ True
+ GTK_RELIEF_NORMAL
+ True
+ True
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ 256
+ 192
+ True
+ GDK_EXPOSURE_MASK
+
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+
+
+ 0
+ False
+ False
+
+
+
+
+ 0
+ True
+ True
+
+
+
+
+
+ True
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ True
+ BG0
+ True
+ GTK_RELIEF_NORMAL
+ True
+ True
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ BG1
+ True
+ GTK_RELIEF_NORMAL
+ True
+ True
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ BG2
+ True
+ GTK_RELIEF_NORMAL
+ True
+ True
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ BG3
+ True
+ GTK_RELIEF_NORMAL
+ True
+ True
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ OBJ
+ True
+ GTK_RELIEF_NORMAL
+ True
+ True
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ 256
+ 192
+ True
+ GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+
+
+
+
+
+ 0
+ False
+ False
+
+
+
+
+ 0
+ False
+ False
+
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+
+
+ 0
+ False
+ False
+
+
+
+
+
+
+
+ False
+ DeSmuME
+ Nintendo DS emulator based on work by Yopyop
+ False
+ http://desmume.sf.net
+ http://desmume.sf.net
+
+ translator-credits
+ DeSmuME.xpm
+
+
+
+ Keyboad Config
+ GTK_WINDOW_TOPLEVEL
+ GTK_WIN_POS_CENTER_ON_PARENT
+ False
+ True
+ True
+ DeSmuME.xpm
+ True
+ False
+ False
+ GDK_WINDOW_TYPE_HINT_DIALOG
+ GDK_GRAVITY_NORTH_WEST
+ True
+ False
+ True
+
+
+
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ GTK_BUTTONBOX_END
+
+
+
+ True
+ True
+ True
+ gtk-cancel
+ True
+ GTK_RELIEF_NORMAL
+ True
+ -6
+
+
+
+
+
+ True
+ True
+ True
+ gtk-ok
+ True
+ GTK_RELIEF_NORMAL
+ True
+ -5
+
+
+
+
+ 0
+ False
+ True
+ GTK_PACK_END
+
+
+
+
+
+ True
+ 6
+ 7
+ False
+ 0
+ 0
+
+
+
+ True
+ True
+ Left :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 0
+ 1
+ 4
+ 5
+ fill
+
+
+
+
+
+
+ True
+ True
+ Up :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 1
+ 2
+ 3
+ 4
+ fill
+
+
+
+
+
+
+ True
+ True
+ Right :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 2
+ 3
+ 4
+ 5
+ fill
+
+
+
+
+
+
+ True
+ True
+ Y :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 4
+ 5
+ 4
+ 5
+ fill
+
+
+
+
+
+
+ True
+ True
+ X :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 5
+ 6
+ 3
+ 4
+ fill
+
+
+
+
+
+
+ True
+ True
+ A :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 6
+ 7
+ 4
+ 5
+ fill
+
+
+
+
+
+
+ True
+ True
+ Down :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 1
+ 2
+ 5
+ 6
+ fill
+
+
+
+
+
+
+ True
+ True
+ B :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 5
+ 6
+ 5
+ 6
+ fill
+
+
+
+
+
+
+ True
+ True
+ Select :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 3
+ 4
+ 2
+ 3
+ fill
+
+
+
+
+
+
+ True
+ True
+ L :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 0
+ 2
+ 1
+ 2
+ fill
+
+
+
+
+
+
+ True
+ True
+ R :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 5
+ 7
+ 1
+ 2
+ fill
+
+
+
+
+
+
+ True
+ True
+ Debug :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 2
+ 3
+ 1
+ 2
+ fill
+
+
+
+
+
+
+ True
+ True
+ Start :
+ True
+ GTK_RELIEF_NORMAL
+ True
+
+
+
+ 3
+ 4
+ 1
+ 2
+ fill
+
+
+
+
+
+ 0
+ True
+ True
+
+
+
+
+
+
+
+ GDK_KEY_RELEASE_MASK
+ Key definition
+ GTK_WINDOW_TOPLEVEL
+ GTK_WIN_POS_CENTER_ON_PARENT
+ True
+ True
+ True
+ DeSmuME.xpm
+ True
+ False
+ False
+ GDK_WINDOW_TYPE_HINT_DIALOG
+ GDK_GRAVITY_NORTH_WEST
+ True
+ False
+ True
+
+
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ GTK_BUTTONBOX_END
+
+
+
+ True
+ gtk-cancel
+ True
+ GTK_RELIEF_NORMAL
+ False
+ -6
+
+
+
+
+
+ True
+ gtk-ok
+ True
+ GTK_RELIEF_NORMAL
+ False
+ -5
+
+
+
+
+ 0
+ False
+ True
+ GTK_PACK_END
+
+
+
+
+
+ True
+ Press a key...
+ False
+ False
+ GTK_JUSTIFY_LEFT
+ False
+ False
+ 0.5
+ 0.5
+ 0
+ 0
+ PANGO_ELLIPSIZE_NONE
+ -1
+ False
+ 0
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+
+ False
+ False
+ GTK_JUSTIFY_LEFT
+ False
+ False
+ 0.5
+ 0.5
+ 0
+ 0
+ PANGO_ELLIPSIZE_NONE
+ -1
+ False
+ 0
+
+
+ 0
+ False
+ False
+
+
+
+
+
+
+
diff --git a/desmume/src/gtk-glade/glade/DeSmuMe_Dtools.glade b/desmume/src/gtk-glade/glade/DeSmuMe_Dtools.glade
new file mode 100755
index 000000000..49ef58728
--- /dev/null
+++ b/desmume/src/gtk-glade/glade/DeSmuMe_Dtools.glade
@@ -0,0 +1,316 @@
+
+
+
+
+
+
+ IO registers
+ GTK_WINDOW_TOPLEVEL
+ GTK_WIN_POS_NONE
+ False
+ True
+ True
+ True
+ False
+ False
+ GDK_WINDOW_TYPE_HINT_DIALOG
+ GDK_GRAVITY_NORTH_WEST
+ True
+ False
+ True
+
+
+
+
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ GTK_BUTTONBOX_END
+
+
+
+ True
+ True
+ True
+ gtk-ok
+ True
+ GTK_RELIEF_NORMAL
+ True
+ -5
+
+
+
+
+ 0
+ False
+ True
+ GTK_PACK_END
+
+
+
+
+
+ True
+ 2
+ 2
+ False
+ 0
+ 0
+
+
+
+ True
+ 0
+ 0.5
+ GTK_SHADOW_ETCHED_IN
+
+
+
+ True
+ False
+ 0
+
+
+
+
+
+
+
+
+
+ True
+ Details
+ False
+ True
+ GTK_JUSTIFY_LEFT
+ False
+ False
+ 0.5
+ 0.5
+ 0
+ 0
+ PANGO_ELLIPSIZE_NONE
+ -1
+ False
+ 0
+
+
+ label_item
+
+
+
+
+ 1
+ 2
+ 1
+ 2
+
+
+
+
+
+ True
+ (0xADDRESS)
+ False
+ False
+ GTK_JUSTIFY_LEFT
+ False
+ False
+ 0
+ 0.5
+ 0
+ 0
+ PANGO_ELLIPSIZE_NONE
+ -1
+ False
+ 0
+
+
+ 0
+ 1
+ 0
+ 1
+ fill
+
+
+
+
+
+
+ True
+ True
+ False
+ True
+ 0
+ (0xVALUE)
+ True
+ ●
+ False
+
+
+ 1
+ 2
+ 0
+ 1
+
+
+
+
+
+
+ True
+ False
+ 0
+
+
+
+ True
+ True
+ REG__IPCFIFOCNT(16)
+ True
+ GTK_RELIEF_NORMAL
+ True
+ False
+ False
+ True
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ REG__SPICNT(16)
+ True
+ GTK_RELIEF_NORMAL
+ True
+ False
+ False
+ True
+ wtools_1_r_ipcfifocnt
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ REG__IME(16)
+ True
+ GTK_RELIEF_NORMAL
+ True
+ False
+ False
+ True
+ wtools_1_r_ipcfifocnt
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ REG__IE(32)
+ True
+ GTK_RELIEF_NORMAL
+ True
+ False
+ False
+ True
+ wtools_1_r_ipcfifocnt
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ REG__IF(32)
+ True
+ GTK_RELIEF_NORMAL
+ True
+ False
+ False
+ True
+ wtools_1_r_ipcfifocnt
+
+
+
+ 0
+ False
+ False
+
+
+
+
+
+ True
+ True
+ POWER__CR(16)
+ True
+ GTK_RELIEF_NORMAL
+ True
+ False
+ False
+ True
+ wtools_1_r_ipcfifocnt
+
+
+
+ 0
+ False
+ False
+
+
+
+
+ 0
+ 1
+ 1
+ 2
+ fill
+ fill
+
+
+
+
+ 0
+ True
+ True
+
+
+
+
+
+
+