hardware rendering enabled

scaling  & rotation OK
This commit is contained in:
damdoum 2007-02-09 16:33:58 +00:00
parent 0db6f29315
commit 391bb6ad64
10 changed files with 319 additions and 381 deletions

View File

@ -1,7 +1,8 @@
bin_PROGRAMS = desmume-glade
desmume_glade_SOURCES = \
globals.h glade-xml.c \
callbacks.c callbacks.h callbacks_IO.c callbacks_IO.h desmume.c desmume.h \
globals.h keyval_names.c main.c printscreen.c gdk_gl.c gdk_gl.h \
keyval_names.c main.c printscreen.c gdk_gl.c gdk_gl.h \
dTools/callbacks_1_ioregs.c dTools/callbacks_2_memview.c \
dTools/callbacks_3_palview.c dTools/callbacks_dtools.h \
dTools/dTools_display.h \

View File

@ -26,6 +26,7 @@
int Frameskip = 0;
gboolean ScreenRight=FALSE;
gboolean ScreenGap=FALSE;
gboolean ScreenInvert=FALSE;
/* inline & protos */
@ -48,12 +49,13 @@ void MAINWINDOW_RESIZE() {
GtkWidget * spacer1 = glade_xml_get_widget(xml, "misc_sep3");
GtkWidget * spacer2 = glade_xml_get_widget(xml, "misc_sep4");
int dim = 66 * ScreenCoeff_Size[0];
BOOL rotate = (ScreenRotate==90.0 || ScreenRotate==270.0 );
/* sees whether we want a gap */
if (!ScreenGap) dim = -1;
if (ScreenRight && ScreenRotate) {
if (ScreenRight && rotate) {
gtk_widget_set_usize(spacer1, dim, -1);
} else if (!ScreenRight && !ScreenRotate) {
} else if (!ScreenRight && !rotate) {
gtk_widget_set_usize(spacer2, -1, dim);
} else {
gtk_widget_set_usize(spacer1, -1, -1);
@ -130,34 +132,18 @@ void on_menu_quit_activate (GtkMenuItem *menuitem, gpointer user_data) { gtk
/* MENU SAVES ***** ***** ***** ***** */
void on_loadstate1_activate (GtkMenuItem *m, gpointer d) { loadstate_slot(1); }
void on_loadstate2_activate (GtkMenuItem *m, gpointer d) { loadstate_slot(2); }
void on_loadstate3_activate (GtkMenuItem *m, gpointer d) { loadstate_slot(3); }
void on_loadstate4_activate (GtkMenuItem *m, gpointer d) { loadstate_slot(4); }
void on_loadstate5_activate (GtkMenuItem *m, gpointer d) { loadstate_slot(5); }
void on_loadstate6_activate (GtkMenuItem *m, gpointer d) { loadstate_slot(6); }
void on_loadstate7_activate (GtkMenuItem *m, gpointer d) { loadstate_slot(7); }
void on_loadstate8_activate (GtkMenuItem *m, gpointer d) { loadstate_slot(8); }
void on_loadstate9_activate (GtkMenuItem *m, gpointer d) { loadstate_slot(9); }
void on_loadstate10_activate(GtkMenuItem *m, gpointer d) { loadstate_slot(10); }
void on_savestate1_activate (GtkMenuItem *m, gpointer d) { update_savestate(1); }
void on_savestate2_activate (GtkMenuItem *m, gpointer d) { update_savestate(2); }
void on_savestate3_activate (GtkMenuItem *m, gpointer d) { update_savestate(3); }
void on_savestate4_activate (GtkMenuItem *m, gpointer d) { update_savestate(4); }
void on_savestate5_activate (GtkMenuItem *m, gpointer d) { update_savestate(5); }
void on_savestate6_activate (GtkMenuItem *m, gpointer d) { update_savestate(6); }
void on_savestate7_activate (GtkMenuItem *m, gpointer d) { update_savestate(7); }
void on_savestate8_activate (GtkMenuItem *m, gpointer d) { update_savestate(8); }
void on_savestate9_activate (GtkMenuItem *m, gpointer d) { update_savestate(9); }
void on_savestate10_activate(GtkMenuItem *m, gpointer d) { update_savestate(10); }
void on_savetype1_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(1); }
void on_savetype2_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(2); }
void on_savetype3_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(3); }
void on_savetype4_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(4); }
void on_savetype5_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(5); }
void on_savetype6_activate (GtkMenuItem *m, gpointer d) { desmume_savetype(6); }
void on_loadstateXX_activate (GtkMenuItem *m, gpointer d) {
int slot = dyn_CAST(int,d);
loadstate_slot(slot);
}
void on_savestateXX_activate (GtkMenuItem *m, gpointer d) {
int slot = dyn_CAST(int,d);
update_savestate(slot);
}
void on_savetypeXX_activate (GtkMenuItem *m, gpointer d) {
int type = dyn_CAST(int,d);
desmume_savetype(type);
}
/* MENU EMULATION ***** ***** ***** ***** */
@ -179,21 +165,32 @@ void on_menu_layers_activate (GtkMenuItem *menuitem, gpointer user_data) {
MAINWINDOW_RESIZE();
}
/* SUBMENU FRAMESKIP ***** ***** ***** ***** */
void on_fs0_activate (GtkMenuItem *menuitem,gpointer user_data) { Frameskip = 0; }
void on_fs1_activate (GtkMenuItem *menuitem,gpointer user_data) { Frameskip = 1; }
void on_fs2_activate (GtkMenuItem *menuitem,gpointer user_data) { Frameskip = 2; }
void on_fs3_activate (GtkMenuItem *menuitem,gpointer user_data) { Frameskip = 3; }
void on_fs4_activate (GtkMenuItem *menuitem,gpointer user_data) { Frameskip = 4; }
void on_fs5_activate (GtkMenuItem *menuitem,gpointer user_data) { Frameskip = 5; }
void on_fs6_activate (GtkMenuItem *menuitem,gpointer user_data) { Frameskip = 6; }
void on_fs7_activate (GtkMenuItem *menuitem,gpointer user_data) { Frameskip = 7; }
void on_fs8_activate (GtkMenuItem *menuitem,gpointer user_data) { Frameskip = 8; }
void on_fs9_activate (GtkMenuItem *menuitem,gpointer user_data) { Frameskip = 9; }
void on_fsXX_activate (GtkMenuItem *menuitem,gpointer user_data) {
Frameskip = dyn_CAST(int,user_data);
// printf ("setting FS %d %d\n", Frameskip, user_data);
}
/* SUBMENU SIZE ***** ***** ***** ***** */
void rightscreen(BOOL apply) {
GtkBox * sbox = (GtkBox*)glade_xml_get_widget(xml, "whb_Sub");
GtkWidget * mbox = glade_xml_get_widget(xml, "whb_Main");
GtkWidget * vbox = glade_xml_get_widget(xml, "wvb_Layout");
GtkWidget * w = glade_xml_get_widget(xml, "wvb_2_Sub");
/* we want to change the layout, lower screen goes right */
if (apply) {
gtk_box_reorder_child(sbox,w,-1);
gtk_widget_reparent((GtkWidget*)sbox,mbox);
} else if (!ScreenRight) {
/* we want to change the layout, lower screen goes down */
gtk_box_reorder_child(sbox,w,0);
gtk_widget_reparent((GtkWidget*)sbox,vbox);
}
/* pack the window */
MAINWINDOW_RESIZE();
}
int H=192, W=256;
void resize (float Size1, float Size2) {
// not ready yet to handle different zoom factors
@ -208,10 +205,27 @@ void resize (float Size1, float Size2) {
/* pack the window */
MAINWINDOW_RESIZE();
}
void rotate(float angle) {
BOOL rotated;
if (angle >= 360.0) angle -= 360.0;
ScreenRotate = angle;
rotated = (ScreenRotate==90.0 || ScreenRotate==270.0);
ScreenInvert = (ScreenRotate >= 180.0);
if (rotated) {
H=256; W=192;
} else {
W=256; H=192;
}
rightscreen(rotated);
resize(ScreenCoeff_Size[0],ScreenCoeff_Size[1]);
}
void on_sizeXX_activate (GtkMenuItem *menuitem, gpointer user_data) {
float f = dyn_CAST(float,user_data);
// printf("setting ZOOM %f\n",f);
resize(f,f);
}
void on_size1x_activate (GtkMenuItem *menuitem, gpointer user_data) { resize(1.0,1.0); }
void on_size2x_activate (GtkMenuItem *menuitem, gpointer user_data) { resize(2.0,2.0); }
void on_size3x_activate (GtkMenuItem *menuitem, gpointer user_data) { resize(3.0,3.0); }
/* MENU CONFIG ***** ***** ***** ***** */
@ -277,34 +291,14 @@ void on_menu_gapscreen_activate (GtkMenuItem *menuitem, gpointer user_data) {
}
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");
GtkWidget * vbox = glade_xml_get_widget(xml, "wvb_Layout");
GtkWidget * w = glade_xml_get_widget(xml, "wvb_2_Sub");
ScreenRight=gtk_check_menu_item_get_active((GtkCheckMenuItem*)menuitem);
/* we want to change the layout, lower screen goes left */
if (ScreenRight) {
gtk_box_reorder_child(sbox,w,-1);
gtk_widget_reparent((GtkWidget*)sbox,mbox);
} else {
/* we want to change the layout, lower screen goes down */
gtk_box_reorder_child(sbox,w,0);
gtk_widget_reparent((GtkWidget*)sbox,vbox);
}
/* pack the window */
MAINWINDOW_RESIZE();
rightscreen(ScreenRight);
}
void on_menu_rotatescreen_activate (GtkMenuItem *menuitem, gpointer user_data) {
/* we want to rotate the screen */
ScreenRotate = gtk_check_menu_item_get_active((GtkCheckMenuItem*)menuitem);
if (ScreenRotate) {
H=256; W=192;
} else {
W=256; H=192;
}
resize(ScreenCoeff_Size[0],ScreenCoeff_Size[1]);
float angle = dyn_CAST(float,user_data);
rotate(angle);
}
/* MENU TOOLS ***** ***** ***** ***** */
@ -362,28 +356,11 @@ void change_bgx_layer(int layer, gboolean state, NDS_Screen scr) {
}
//fprintf(stderr,"Changed Layer %s to %d\n",layer,state);
}
/* LAYERS MAIN SCREEN ***** ***** ***** ***** */
void on_wc_1_BG0_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
change_bgx_layer(0, gtk_toggle_button_get_active(togglebutton), MainScreen); }
void on_wc_1_BG1_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
change_bgx_layer(1, gtk_toggle_button_get_active(togglebutton), MainScreen); }
void on_wc_1_BG2_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
change_bgx_layer(2, gtk_toggle_button_get_active(togglebutton), MainScreen); }
void on_wc_1_BG3_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
change_bgx_layer(3, gtk_toggle_button_get_active(togglebutton), MainScreen); }
void on_wc_1_OBJ_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
change_bgx_layer(4, gtk_toggle_button_get_active(togglebutton), MainScreen); }
/* LAYERS SECOND SCREEN ***** ***** ***** ***** */
void on_wc_2b_BG0_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
change_bgx_layer(0, gtk_toggle_button_get_active(togglebutton), SubScreen); }
void on_wc_2b_BG1_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
change_bgx_layer(1, gtk_toggle_button_get_active(togglebutton), SubScreen); }
void on_wc_2b_BG2_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
change_bgx_layer(2, gtk_toggle_button_get_active(togglebutton), SubScreen); }
void on_wc_2b_BG3_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
change_bgx_layer(3, gtk_toggle_button_get_active(togglebutton), SubScreen); }
void on_wc_2b_OBJ_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
change_bgx_layer(4, gtk_toggle_button_get_active(togglebutton), SubScreen); }
void on_wc_1_BGXX_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
int layer = dyn_CAST(int,user_data);
change_bgx_layer(layer, gtk_toggle_button_get_active(togglebutton), MainScreen);
}
void on_wc_2_BGXX_toggled (GtkToggleButton *togglebutton, gpointer user_data) {
int layer = dyn_CAST(int,user_data);
change_bgx_layer(layer, gtk_toggle_button_get_active(togglebutton), SubScreen);
}

View File

@ -27,59 +27,17 @@ G_MODULE_EXPORT void on_menu_pscreen_activate (GtkMenuItem *menuitem, gpointer
G_MODULE_EXPORT void on_menu_quit_activate (GtkMenuItem *menuitem, gpointer user_data);
/* MENU SAVES */
G_MODULE_EXPORT void on_loadstate1_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_loadstate2_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_loadstate3_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_loadstate4_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_loadstate5_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_loadstate6_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_loadstate7_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_loadstate8_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_loadstate9_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_loadstate10_activate(GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savestate1_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savestate2_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savestate3_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savestate4_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savestate5_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savestate6_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savestate7_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savestate8_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savestate9_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savestate10_activate(GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savetype1_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savetype2_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savetype3_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savetype4_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savetype5_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savetype6_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_loadstateXX_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savestateXX_activate (GtkMenuItem *, gpointer );
G_MODULE_EXPORT void on_savetypeXX_activate (GtkMenuItem *, gpointer );
/* MENU EMULATION */
G_MODULE_EXPORT void on_menu_exec_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_menu_pause_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_menu_reset_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_menu_layers_activate (GtkMenuItem *menuitem, gpointer user_data);
/* SUBMENU FRAMESKIP */
G_MODULE_EXPORT void on_fsXX_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_fs0_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_fs1_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_fs2_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_fs3_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_fs4_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_fs5_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_fs6_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_fs7_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_fs8_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_fs9_activate (GtkMenuItem *menuitem, gpointer user_data);
/* SUBMENU SIZE */
G_MODULE_EXPORT void on_size1x_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_size2x_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_size3x_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_fsXX_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_sizeXX_activate (GtkMenuItem *menuitem, gpointer user_data);
/* MENU CONFIG */
G_MODULE_EXPORT void on_menu_controls_activate (GtkMenuItem *menuitem, gpointer user_data);
@ -88,6 +46,7 @@ G_MODULE_EXPORT void on_menu_audio_on_activate (GtkMenuItem *menuitem, gpoi
G_MODULE_EXPORT void on_menu_gapscreen_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_menu_rightscreen_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_menu_rotatescreen_activate (GtkMenuItem *menuitem, gpointer user_data);
/* MENU TOOLS */
G_MODULE_EXPORT void on_menu_IO_regs_activate (GtkMenuItem *menuitem, gpointer user_data);
G_MODULE_EXPORT void on_menu_memview_activate (GtkMenuItem *menuitem, gpointer user_data);
@ -104,17 +63,6 @@ G_MODULE_EXPORT void on_wgt_Exec_toggled (GtkToggleToolButton *toggletoolbutto
G_MODULE_EXPORT void on_wgt_Reset_clicked (GtkToolButton *toolbutton, gpointer user_data);
G_MODULE_EXPORT void on_wgt_Quit_clicked (GtkToolButton *toolbutton, gpointer user_data);
/* LAYERS MAIN SCREEN */
G_MODULE_EXPORT void on_wc_1_BG0_toggled (GtkToggleButton *togglebutton, gpointer user_data);
G_MODULE_EXPORT void on_wc_1_BG1_toggled (GtkToggleButton *togglebutton, gpointer user_data);
G_MODULE_EXPORT void on_wc_1_BG2_toggled (GtkToggleButton *togglebutton, gpointer user_data);
G_MODULE_EXPORT void on_wc_1_BG3_toggled (GtkToggleButton *togglebutton, gpointer user_data);
G_MODULE_EXPORT void on_wc_1_OBJ_toggled (GtkToggleButton *togglebutton, gpointer user_data);
/* LAYERS SECOND SCREEN */
G_MODULE_EXPORT void on_wc_2b_BG0_toggled (GtkToggleButton *togglebutton, gpointer user_data);
G_MODULE_EXPORT void on_wc_2b_BG1_toggled (GtkToggleButton *togglebutton, gpointer user_data);
G_MODULE_EXPORT void on_wc_2b_BG2_toggled (GtkToggleButton *togglebutton, gpointer user_data);
G_MODULE_EXPORT void on_wc_2b_BG3_toggled (GtkToggleButton *togglebutton, gpointer user_data);
G_MODULE_EXPORT void on_wc_2b_OBJ_toggled (GtkToggleButton *togglebutton, gpointer user_data);
/* LAYERS TOGGLE */
G_MODULE_EXPORT void on_wc_1_BGXX_toggled (GtkToggleButton *togglebutton, gpointer user_data);
G_MODULE_EXPORT void on_wc_2_BGXX_toggled (GtkToggleButton *togglebutton, gpointer user_data);

View File

@ -24,7 +24,7 @@
static u16 Cur_Keypad = 0;
float ScreenCoeff_Size[2]={1.0,1.0};
gboolean ScreenRotate=FALSE;
float ScreenRotate=0.0;
gboolean Boost=FALSE;
int BoostFS=20;
int saveFS;
@ -56,26 +56,6 @@ gboolean on_wMainW_key_release_event (GtkWidget *widget, GdkEventKey *event, g
/* ***** ***** SCREEN DRAWING ***** ***** */
int has_pix_col_map=0;
u32 pix_col_map[0x8000];
void init_pix_col_map() {
/* precalc colors so we get some fps */
int a,b,c,A,B,C,rA,rB,rC;
if (has_pix_col_map) return;
for (a=0; a<0x20; a++) {
A=a<<10; rA=A<<9;
for (b=0; b<0x20; b++) {
B=b<<5; rB=B<<6;
for (c=0; c<0x20; c++) {
C=c; rC=C<<3;
pix_col_map[A|B|C]=rA|rB|rC;
}
}
}
has_pix_col_map=1;
}
#define RAW_W 256
#define RAW_H 192
#define RAW_OFFSET 256*192*sizeof(u16)
@ -95,6 +75,35 @@ void black_screen () {
memset(on_screen_image32,0,screen_size());
}
#ifndef HAVE_LIBGDKGLEXT_X11_1_0
// they are empty if no opengl
// else see gdk_gl.c / gdk_gl.h
BOOL my_gl_Begin (int screen) { return FALSE; }
void my_gl_End (int screen) {}
void init_GL_capabilities() {}
void init_GL(GtkWidget * widget, int screen) {}
void reshape (GtkWidget * widget, int screen) {}
int has_pix_col_map=0;
u32 pix_col_map[0x8000];
void init_pix_col_map() {
// precalc factors
int a,b,c,A,B,C,rA,rB,rC;
if (has_pix_col_map) return;
for (a=0; a<0x20; a++) {
A=a<<10; rA=A<<9;
for (b=0; b<0x20; b++) {
B=b<<5; rB=B<<6;
for (c=0; c<0x20; c++) {
C=c; rC=C<<3;
pix_col_map[A|B|C]=rA|rB|rC;
}
}
}
has_pix_col_map=1;
}
void decode_screen () {
int x,y, m, W,H,L,BL;
@ -137,15 +146,6 @@ void decode_screen () {
}
}
#ifndef HAVE_LIBGDKGLEXT_X11_1_0
// they are empty if no opengl
// else see gdk_gl.c / gdk_gl.h
BOOL my_gl_Begin (int screen) { return FALSE; }
void my_gl_End (int screen) {}
void init_GL_capabilities() {}
void init_GL(GtkWidget * widget, int screen) {}
void reshape (GtkWidget * widget, int screen) {}
gboolean screen (GtkWidget * widget, int off) {
int H,W,L;
if (off==0)
@ -168,93 +168,22 @@ gboolean screen (GtkWidget * widget, int off) {
#endif /* if HAVE_LIBGDKGLEXT_X11_1_0 */
/* OUTPUT UPPER SCREEN */
/* OUTPUT LOWER SCREEN */
void on_wDraw_Main_realize (GtkWidget *widget, gpointer user_data) {
init_GL(widget, 0);
/* OUTPUT SCREENS */
gboolean on_wDrawScreen_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) {
int scr = dyn_CAST(int,user_data);
return screen(widget, scr);
}
void on_wDraw_Sub_realize (GtkWidget *widget, gpointer user_data) {
init_GL(widget, 1);
gboolean on_wDrawScreen_configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer user_data) {
int scr = dyn_CAST(int,user_data);
reshape(widget, scr); return TRUE;
}
gboolean on_wDraw_Main_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) {
return screen(widget, 0);
}
gboolean on_wDraw_Sub_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) {
return screen(widget, 1);
}
gboolean on_wDraw_Main_configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data) {
reshape(widget, 0); return TRUE;
}
gboolean on_wDraw_Sub_configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data) {
reshape(widget, 1); return TRUE;
}
/* ***** ***** INPUT STYLUS / MOUSE ***** ***** */
void set_touch_pos (int x, int y) {
s32 EmuX, EmuY;
x /= ScreenCoeff_Size[1];
y /= ScreenCoeff_Size[1];
EmuX = x; EmuY = y;
if (ScreenRotate) { EmuX = 256-y; EmuY = x; }
if(EmuX<0) EmuX = 0; else if(EmuX>255) EmuX = 255;
if(EmuY<0) EmuY = 0; else if(EmuY>192) EmuY = 192;
NDS_setTouchPos(EmuX, EmuY);
}
gboolean on_wDraw_Main_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
switch (event->button) {
case 1: break;
case 3: break;
case 2: ScreenCoeff_Size[0]=1.0;
resize(ScreenCoeff_Size[0],ScreenCoeff_Size[1]); break;
}
return TRUE;
}
gboolean on_wDraw_Main_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
return TRUE;
}
gboolean on_wDraw_Sub_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
GdkModifierType state;
gint x,y;
switch (event->button) {
case 1:
if(desmume_running()) {
click = TRUE;
gdk_window_get_pointer(widget->window, &x, &y, &state);
if (state & GDK_BUTTON1_MASK)
set_touch_pos(x,y);
}
break;
case 3: break;
case 2:
ScreenCoeff_Size[0]=1.0;
//ScreenCoeff_Size[1]=1.0; // separate zoom factors
resize(ScreenCoeff_Size[0],ScreenCoeff_Size[1]); break;
}
return TRUE;
}
gboolean on_wDraw_Sub_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
if(click) NDS_releasTouch();
click = FALSE;
return TRUE;
}
static void resize_incremental(int i, GdkEventScroll *event) {
#ifdef HAVE_LIBGDKGLEXT_X11_1_0
float zoom_inc=.125, zoom_min=0.25, zoom_max=5.0;
@ -273,22 +202,63 @@ static void resize_incremental(int i, GdkEventScroll *event) {
resize(ScreenCoeff_Size[0],ScreenCoeff_Size[1]);
}
gboolean on_wDraw_Main_scroll_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) {
resize_incremental(0,event);
}
gboolean on_wDraw_Sub_scroll_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) {
// using separate zoom factors is bad for now
resize_incremental(0,event);
// resize_incremental(1,event);
gboolean on_wDrawScreen_scroll_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) {
int scr = dyn_CAST(int,user_data);
// separate zoom factors not supported yet
scr = 0;
resize_incremental(scr,event);
}
void set_touch_pos (int x, int y) {
s32 EmuX, EmuY;
x /= ScreenCoeff_Size[1];
y /= ScreenCoeff_Size[1];
EmuX = x; EmuY = y;
if (ScreenRotate==90.0 || ScreenRotate==270.0) { EmuX = 256-y; EmuY = x; }
if(EmuX<0) EmuX = 0; else if(EmuX>255) EmuX = 255;
if(EmuY<0) EmuY = 0; else if(EmuY>192) EmuY = 192;
if (ScreenInvert) {
EmuX = 255-EmuX;
EmuY = 192-EmuY;
}
NDS_setTouchPos(EmuX, EmuY);
}
gboolean on_wDraw_Sub_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data) {
gboolean on_wDrawScreen_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
int scr = dyn_CAST(int,user_data);
GdkModifierType state;
gint x,y;
if(click)
switch (event->button) {
case 1:
if (((scr==1) ^ ScreenInvert) && desmume_running()) {
click = TRUE;
gdk_window_get_pointer(widget->window, &x, &y, &state);
if (state & GDK_BUTTON1_MASK)
set_touch_pos(x,y);
}
break;
case 3: break;
case 2: rotate(ScreenRotate + 90.0); break;
}
return TRUE;
}
gboolean on_wDrawScreen_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
int scr = dyn_CAST(int,user_data);
if ((scr==1) ^ ScreenInvert) {
if (click) NDS_releasTouch();
click = FALSE;
}
return TRUE;
}
gboolean on_wDrawScreen_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data) {
int scr = dyn_CAST(int,user_data);
GdkModifierType state;
gint x,y;
if (((scr==1) ^ ScreenInvert) && click)
{
if(event->is_hint)
gdk_window_get_pointer(widget->window, &x, &y, &state);
@ -298,19 +268,17 @@ gboolean on_wDraw_Sub_motion_notify_event (GtkWidget *widget, GdkEventMotion
y= (gint)event->y;
state=(GdkModifierType)event->state;
}
// fprintf(stderr,"X=%d, Y=%d, S&1=%d\n", x,y,state&GDK_BUTTON1_MASK);
if(state & GDK_BUTTON1_MASK)
set_touch_pos(x,y);
}
return TRUE;
}
/* ***** ***** KEYBOARD CONFIG / KEY DEFINITION ***** ***** */
u16 Keypad_Temp[NB_KEYS];
guint temp_Key=0;

View File

@ -26,25 +26,16 @@
G_MODULE_EXPORT gboolean on_wMainW_key_press_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wMainW_key_release_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data);
/* OUTPUT UPPER SCREEN */
G_MODULE_EXPORT void on_wDraw_Main_realize (GtkWidget *widget, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDraw_Main_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDraw_Main_configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data);
/* OUTPUT SCREENS */
G_MODULE_EXPORT gboolean on_wDrawScreen_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDrawScreen_configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data);
/* OUTPUT LOWER SCREEN */
G_MODULE_EXPORT void on_wDraw_Sub_realize (GtkWidget *widget, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDraw_Sub_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDraw_Sub_configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data);
/* INPUT STYLUS / MOUSE */
G_MODULE_EXPORT gboolean on_wDraw_Sub_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDraw_Main_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDraw_Main_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDraw_Sub_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDraw_Sub_button_release_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDraw_Main_scroll_event (GtkWidget *widget, GdkEvent *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDraw_Sub_scroll_event (GtkWidget *widget, GdkEvent *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDrawScreen_motion_notify_event (GtkWidget *widget, GdkEventMotion *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDrawScreen_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDrawScreen_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data);
G_MODULE_EXPORT gboolean on_wDrawScreen_scroll_event (GtkWidget *widget, GdkEvent *event, gpointer user_data);

View File

@ -116,8 +116,11 @@ void reshape (GtkWidget * widget, int screen) {
INLINE void my_gl_Texture2D() {
glBindTexture(GL_TEXTURE_2D, Textures[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
#define MyFILTER GL_LINEAR
//#define MyFILTER GL_NEAREST
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, MyFILTER);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, MyFILTER);
#undef MyFILTER
}
INLINE void my_gl_ScreenTex() {
@ -139,23 +142,27 @@ void my_gl_ScreenTexApply(int screen) {
glEnd();
}
gboolean screen (GtkWidget * widget, int screen) {
int H,W;
if (!my_gl_Begin(screen)) return TRUE;
gboolean screen (GtkWidget * widget, int viewportscreen) {
int H,W,screen;
// we take care to draw the right thing the right place
// we need to rearrange widgets not to use this trick
screen = (ScreenInvert)?1-viewportscreen:viewportscreen;
// screen = viewportscreen;
if (!my_gl_Begin(viewportscreen)) return TRUE;
glLoadIdentity();
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
my_gl_DrawBeautifulQuad();
// rotate
if (ScreenRotate) glRotatef(90.0, 0.0, 0.0, 1.0);
glRotatef(ScreenRotate, 0.0, 0.0, 1.0);
// draw screen
my_gl_Texture2D();
if (screen==0) my_gl_ScreenTex();
if (viewportscreen==0) my_gl_ScreenTex();
my_gl_ScreenTexApply(screen);
my_gl_End(screen);
my_gl_End(viewportscreen);
return TRUE;
}

View File

@ -102,7 +102,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 1</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_loadstate1_activate" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<signal name="activate" handler="on_loadstateXX_activate" object="%d:1" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F1" modifiers="0" signal="activate"/>
</widget>
</child>
@ -112,7 +112,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 2</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_loadstate2_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_loadstateXX_activate" object="%d:2" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F2" modifiers="0" signal="activate"/>
</widget>
</child>
@ -122,7 +122,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 3</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_loadstate3_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_loadstateXX_activate" object="%d:3" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F3" modifiers="0" signal="activate"/>
</widget>
</child>
@ -132,7 +132,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 4</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_loadstate4_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_loadstateXX_activate" object="%d:4" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F4" modifiers="0" signal="activate"/>
</widget>
</child>
@ -142,7 +142,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 5</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_loadstate5_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_loadstateXX_activate" object="%d:5" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F5" modifiers="0" signal="activate"/>
</widget>
</child>
@ -152,7 +152,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 6</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_loadstate6_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_loadstateXX_activate" object="%d:6" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F6" modifiers="0" signal="activate"/>
</widget>
</child>
@ -162,7 +162,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 7</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_loadstate7_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_loadstateXX_activate" object="%d:7" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F7" modifiers="0" signal="activate"/>
</widget>
</child>
@ -172,7 +172,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 8</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_loadstate8_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_loadstateXX_activate" object="%d:8" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F8" modifiers="0" signal="activate"/>
</widget>
</child>
@ -182,7 +182,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 9</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_loadstate9_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_loadstateXX_activate" object="%d:9" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F9" modifiers="0" signal="activate"/>
</widget>
</child>
@ -192,7 +192,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 10</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_loadstate10_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_loadstateXX_activate" object="%d:10" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F10" modifiers="0" signal="activate"/>
</widget>
</child>
@ -215,7 +215,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 1</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_savestate1_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_savestateXX_activate" object="%d:1" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F1" modifiers="GDK_SHIFT_MASK" signal="activate"/>
</widget>
</child>
@ -225,7 +225,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 2</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_savestate2_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_savestateXX_activate" object="%d:2" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F2" modifiers="GDK_SHIFT_MASK" signal="activate"/>
</widget>
</child>
@ -235,7 +235,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 3</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_savestate3_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_savestateXX_activate" object="%d:3" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F3" modifiers="GDK_SHIFT_MASK" signal="activate"/>
</widget>
</child>
@ -245,7 +245,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 4</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_savestate4_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_savestateXX_activate" object="%d:4" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F4" modifiers="GDK_SHIFT_MASK" signal="activate"/>
</widget>
</child>
@ -255,7 +255,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 5</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_savestate5_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_savestateXX_activate" object="%d:5" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F5" modifiers="GDK_SHIFT_MASK" signal="activate"/>
</widget>
</child>
@ -265,7 +265,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 6</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_savestate6_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_savestateXX_activate" object="%d:6" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F6" modifiers="GDK_SHIFT_MASK" signal="activate"/>
</widget>
</child>
@ -275,7 +275,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 7</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_savestate7_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_savestateXX_activate" object="%d:7" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F7" modifiers="GDK_SHIFT_MASK" signal="activate"/>
</widget>
</child>
@ -285,7 +285,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 8</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_savestate8_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_savestateXX_activate" object="%d:8" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F8" modifiers="GDK_SHIFT_MASK" signal="activate"/>
</widget>
</child>
@ -295,7 +295,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 9</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_savestate9_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_savestateXX_activate" object="%d:9" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F9" modifiers="GDK_SHIFT_MASK" signal="activate"/>
</widget>
</child>
@ -305,7 +305,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">State 10</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_savestate10_activate" last_modification_time="Thu, 18 Jan 2007 10:10:14 GMT"/>
<signal name="activate" handler="on_savestateXX_activate" object="%d:10" last_modification_time="Sun, 21 Jan 2007 06:23:50 GMT"/>
<accelerator key="F10" modifiers="GDK_SHIFT_MASK" signal="activate"/>
</widget>
</child>
@ -326,7 +326,7 @@
<property name="label" translatable="yes">TYPE: Auto (1B)</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<signal name="activate" handler="on_savetype1_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
<signal name="activate" handler="on_savetypeXX_activate" object="%d:0" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
</widget>
</child>
@ -337,7 +337,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">savetype1</property>
<signal name="activate" handler="on_savetype2_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
<signal name="activate" handler="on_savetypeXX_activate" object="%d:1" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
</widget>
</child>
@ -348,7 +348,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">savetype1</property>
<signal name="activate" handler="on_savetype3_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
<signal name="activate" handler="on_savetypeXX_activate" object="%d:2" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
</widget>
</child>
@ -359,7 +359,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">savetype1</property>
<signal name="activate" handler="on_savetype4_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
<signal name="activate" handler="on_savetypeXX_activate" object="%d:3" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
</widget>
</child>
@ -370,7 +370,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">savetype1</property>
<signal name="activate" handler="on_savetype5_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
<signal name="activate" handler="on_savetypeXX_activate" object="%d:4" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
</widget>
</child>
@ -381,7 +381,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">savetype1</property>
<signal name="activate" handler="on_savetype6_activate" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
<signal name="activate" handler="on_savetypeXX_activate" object="%d:5" last_modification_time="Thu, 01 Feb 2007 11:41:11 GMT"/>
</widget>
</child>
</widget>
@ -465,7 +465,7 @@
<property name="label" translatable="yes">0</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<signal name="activate" handler="on_fs0_activate" last_modification_time="Tue, 02 Jan 2007 14:35:13 GMT"/>
<signal name="activate" handler="on_fsXX_activate" object="%d:0" last_modification_time="Thu, 08 Feb 2007 15:03:50 GMT"/>
</widget>
</child>
@ -476,7 +476,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">fs0</property>
<signal name="activate" handler="on_fs1_activate" last_modification_time="Mon, 01 Jan 2007 16:40:47 GMT"/>
<signal name="activate" handler="on_fsXX_activate" object="%d:1" last_modification_time="Mon, 01 Jan 2007 16:40:47 GMT"/>
</widget>
</child>
@ -487,7 +487,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">fs0</property>
<signal name="activate" handler="on_fs2_activate" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
<signal name="activate" handler="on_fsXX_activate" object="%d:2" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
</widget>
</child>
@ -498,7 +498,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">fs0</property>
<signal name="activate" handler="on_fs3_activate" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
<signal name="activate" handler="on_fsXX_activate" object="%d:3" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
</widget>
</child>
@ -509,7 +509,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">fs0</property>
<signal name="activate" handler="on_fs4_activate" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
<signal name="activate" handler="on_fsXX_activate" object="%d:4" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
</widget>
</child>
@ -520,7 +520,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">fs0</property>
<signal name="activate" handler="on_fs5_activate" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
<signal name="activate" handler="on_fsXX_activate" object="%d:5" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
</widget>
</child>
@ -531,7 +531,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">fs0</property>
<signal name="activate" handler="on_fs6_activate" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
<signal name="activate" handler="on_fsXX_activate" object="%d:6" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
</widget>
</child>
@ -542,7 +542,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">fs0</property>
<signal name="activate" handler="on_fs7_activate" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
<signal name="activate" handler="on_fsXX_activate" object="%d:7" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
</widget>
</child>
@ -553,7 +553,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">fs0</property>
<signal name="activate" handler="on_fs8_activate" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
<signal name="activate" handler="on_fsXX_activate" object="%d:8" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
</widget>
</child>
@ -564,7 +564,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">fs0</property>
<signal name="activate" handler="on_fs9_activate" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
<signal name="activate" handler="on_fsXX_activate" object="%d:9" last_modification_time="Mon, 01 Jan 2007 16:45:37 GMT"/>
</widget>
</child>
</widget>
@ -587,7 +587,7 @@
<property name="label" translatable="yes">1x</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<signal name="activate" handler="on_size1x_activate" last_modification_time="Mon, 01 Jan 2007 20:14:20 GMT"/>
<signal name="activate" handler="on_sizeXX_activate" object="%f:1.0" last_modification_time="Mon, 01 Jan 2007 20:14:20 GMT"/>
</widget>
</child>
@ -598,7 +598,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">size1x</property>
<signal name="activate" handler="on_size2x_activate" last_modification_time="Mon, 01 Jan 2007 20:14:20 GMT"/>
<signal name="activate" handler="on_sizeXX_activate" object="%f:2.0" last_modification_time="Mon, 01 Jan 2007 20:14:20 GMT"/>
</widget>
</child>
@ -609,7 +609,7 @@
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">size1x</property>
<signal name="activate" handler="on_size3x_activate" last_modification_time="Mon, 01 Jan 2007 20:14:20 GMT"/>
<signal name="activate" handler="on_sizeXX_activate" object="%f:3.0" last_modification_time="Mon, 01 Jan 2007 20:14:20 GMT"/>
</widget>
</child>
</widget>
@ -703,12 +703,45 @@
</child>
<child>
<widget class="GtkCheckMenuItem" id="menu_rotatescreen">
<widget class="GtkRadioMenuItem" id="menu_rotatescreen0">
<property name="visible">True</property>
<property name="label" translatable="yes">Rotate Screen</property>
<property name="label" translatable="yes">Rotate Screen 0</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<signal name="activate" handler="on_menu_rotatescreen_activate" object="%f:0.0" last_modification_time="Sat, 06 Jan 2007 08:36:59 GMT"/>
</widget>
</child>
<child>
<widget class="GtkRadioMenuItem" id="menu_rotatescreen1">
<property name="visible">True</property>
<property name="label" translatable="yes">Rotate Screen 90</property>
<property name="use_underline">True</property>
<property name="active">False</property>
<signal name="activate" handler="on_menu_rotatescreen_activate" last_modification_time="Sat, 06 Jan 2007 08:36:59 GMT"/>
<property name="group">menu_rotatescreen0</property>
<signal name="activate" handler="on_menu_rotatescreen_activate" object="%f:90.0" last_modification_time="Sat, 06 Jan 2007 08:36:59 GMT"/>
</widget>
</child>
<child>
<widget class="GtkRadioMenuItem" id="menu_rotatescreen2">
<property name="visible">True</property>
<property name="label" translatable="yes">Rotate Screen 180</property>
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">menu_rotatescreen0</property>
<signal name="activate" handler="on_menu_rotatescreen_activate" object="%f:180.0" last_modification_time="Sat, 06 Jan 2007 08:36:59 GMT"/>
</widget>
</child>
<child>
<widget class="GtkRadioMenuItem" id="menu_rotatescreen3">
<property name="visible">True</property>
<property name="label" translatable="yes">Rotate Screen 270</property>
<property name="use_underline">True</property>
<property name="active">False</property>
<property name="group">menu_rotatescreen0</property>
<signal name="activate" handler="on_menu_rotatescreen_activate" object="%f:270.0" last_modification_time="Sat, 06 Jan 2007 08:36:59 GMT"/>
</widget>
</child>
</widget>
@ -955,7 +988,7 @@
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_wc_1_BG0_toggled" last_modification_time="Mon, 01 Jan 2007 21:03:49 GMT"/>
<signal name="toggled" handler="on_wc_1_BGXX_toggled" object="%d:0" last_modification_time="Mon, 01 Jan 2007 21:03:49 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -975,7 +1008,7 @@
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_wc_1_BG1_toggled" last_modification_time="Mon, 01 Jan 2007 21:03:55 GMT"/>
<signal name="toggled" handler="on_wc_1_BGXX_toggled" object="%d:1" last_modification_time="Mon, 01 Jan 2007 21:03:49 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -995,7 +1028,7 @@
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_wc_1_BG2_toggled" last_modification_time="Mon, 01 Jan 2007 21:04:02 GMT"/>
<signal name="toggled" handler="on_wc_1_BGXX_toggled" object="%d:2" last_modification_time="Mon, 01 Jan 2007 21:03:49 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -1015,7 +1048,7 @@
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_wc_1_BG3_toggled" last_modification_time="Mon, 01 Jan 2007 21:04:20 GMT"/>
<signal name="toggled" handler="on_wc_1_BGXX_toggled" object="%d:3" last_modification_time="Mon, 01 Jan 2007 21:03:49 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -1035,7 +1068,7 @@
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_wc_1_OBJ_toggled" last_modification_time="Mon, 01 Jan 2007 21:04:28 GMT"/>
<signal name="toggled" handler="on_wc_1_BGXX_toggled" object="%d:4" last_modification_time="Mon, 01 Jan 2007 21:03:49 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -1055,12 +1088,13 @@
<widget class="GtkDrawingArea" id="wDraw_Main">
<property name="width_request">256</property>
<property name="height_request">192</property>
<property name="events">GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
<signal name="configure_event" handler="on_wDraw_Main_configure_event" last_modification_time="Mon, 05 Feb 2007 00:49:24 GMT"/>
<signal name="expose_event" handler="on_wDraw_Main_expose_event" last_modification_time="Tue, 02 Jan 2007 10:27:18 GMT"/>
<signal name="button_release_event" handler="on_wDraw_Main_button_release_event" last_modification_time="Wed, 07 Feb 2007 17:32:00 GMT"/>
<signal name="button_press_event" handler="on_wDraw_Main_button_press_event" last_modification_time="Wed, 07 Feb 2007 17:32:57 GMT"/>
<signal name="scroll_event" handler="on_wDraw_Main_scroll_event" last_modification_time="Wed, 07 Feb 2007 19:18:23 GMT"/>
<property name="events">GDK_EXPOSURE_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
<signal name="configure_event" handler="on_wDrawScreen_configure_event" object="%d:0" last_modification_time="Mon, 05 Feb 2007 00:49:24 GMT"/>
<signal name="expose_event" handler="on_wDrawScreen_expose_event" object="%d:0" last_modification_time="Tue, 02 Jan 2007 10:27:18 GMT"/>
<signal name="button_release_event" handler="on_wDrawScreen_button_release_event" object="%d:0" last_modification_time="Wed, 07 Feb 2007 17:32:00 GMT"/>
<signal name="button_press_event" handler="on_wDrawScreen_button_press_event" object="%d:0" last_modification_time="Wed, 07 Feb 2007 17:32:57 GMT"/>
<signal name="scroll_event" handler="on_wDrawScreen_scroll_event" object="%d:0" last_modification_time="Wed, 07 Feb 2007 19:18:23 GMT"/>
<signal name="motion_notify_event" handler="on_wDrawScreen_motion_notify_event" object="%d:0" last_modification_time="Tue, 02 Jan 2007 10:28:32 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -1111,7 +1145,7 @@
<property name="spacing">0</property>
<child>
<widget class="GtkCheckButton" id="wc_2b_BG0">
<widget class="GtkCheckButton" id="wc_2_BG0">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">BG0</property>
@ -1121,7 +1155,7 @@
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_wc_2b_BG0_toggled" last_modification_time="Mon, 01 Jan 2007 21:04:34 GMT"/>
<signal name="toggled" handler="on_wc_2_BGXX_toggled" object="%d:0" last_modification_time="Mon, 01 Jan 2007 21:03:49 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -1131,7 +1165,7 @@
</child>
<child>
<widget class="GtkCheckButton" id="wc_2b_BG1">
<widget class="GtkCheckButton" id="wc_2_BG1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">BG1</property>
@ -1141,7 +1175,7 @@
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_wc_2b_BG1_toggled" last_modification_time="Mon, 01 Jan 2007 21:04:42 GMT"/>
<signal name="toggled" handler="on_wc_2_BGXX_toggled" object="%d:1" last_modification_time="Mon, 01 Jan 2007 21:03:49 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -1151,7 +1185,7 @@
</child>
<child>
<widget class="GtkCheckButton" id="wc_2b_BG2">
<widget class="GtkCheckButton" id="wc_2_BG2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">BG2</property>
@ -1161,7 +1195,7 @@
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_wc_2b_BG2_toggled" last_modification_time="Mon, 01 Jan 2007 21:04:52 GMT"/>
<signal name="toggled" handler="on_wc_2_BGXX_toggled" object="%d:2" last_modification_time="Mon, 01 Jan 2007 21:03:49 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -1171,7 +1205,7 @@
</child>
<child>
<widget class="GtkCheckButton" id="wc_2b_BG3">
<widget class="GtkCheckButton" id="wc_2_BG3">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">BG3</property>
@ -1181,7 +1215,7 @@
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_wc_2b_BG3_toggled" last_modification_time="Mon, 01 Jan 2007 21:04:59 GMT"/>
<signal name="toggled" handler="on_wc_2_BGXX_toggled" object="%d:3" last_modification_time="Mon, 01 Jan 2007 21:03:49 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -1191,7 +1225,7 @@
</child>
<child>
<widget class="GtkCheckButton" id="wc_2b_OBJ">
<widget class="GtkCheckButton" id="wc_2_OBJ">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">OBJ</property>
@ -1201,7 +1235,7 @@
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_wc_2b_OBJ_toggled" last_modification_time="Mon, 01 Jan 2007 21:05:06 GMT"/>
<signal name="toggled" handler="on_wc_2_BGXX_toggled" object="%d:4" last_modification_time="Mon, 01 Jan 2007 21:03:49 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -1221,13 +1255,13 @@
<widget class="GtkDrawingArea" id="wDraw_Sub">
<property name="width_request">256</property>
<property name="height_request">192</property>
<property name="events">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 | GDK_STRUCTURE_MASK</property>
<signal name="configure_event" handler="on_wDraw_Sub_configure_event" last_modification_time="Mon, 05 Feb 2007 00:49:24 GMT"/>
<signal name="expose_event" handler="on_wDraw_Sub_expose_event" last_modification_time="Tue, 02 Jan 2007 10:27:52 GMT"/>
<signal name="button_press_event" handler="on_wDraw_Sub_button_press_event" last_modification_time="Tue, 02 Jan 2007 10:28:11 GMT"/>
<signal name="button_release_event" handler="on_wDraw_Sub_button_release_event" last_modification_time="Tue, 02 Jan 2007 10:28:18 GMT"/>
<signal name="motion_notify_event" handler="on_wDraw_Sub_motion_notify_event" last_modification_time="Tue, 02 Jan 2007 10:28:32 GMT"/>
<signal name="scroll_event" handler="on_wDraw_Sub_scroll_event" last_modification_time="Wed, 07 Feb 2007 19:18:37 GMT"/>
<property name="events">GDK_EXPOSURE_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
<signal name="configure_event" handler="on_wDrawScreen_configure_event" object="%d:1" last_modification_time="Mon, 05 Feb 2007 00:49:24 GMT"/>
<signal name="expose_event" handler="on_wDrawScreen_expose_event" object="%d:1" last_modification_time="Tue, 02 Jan 2007 10:27:18 GMT"/>
<signal name="button_release_event" handler="on_wDrawScreen_button_release_event" object="%d:1" last_modification_time="Wed, 07 Feb 2007 17:32:00 GMT"/>
<signal name="button_press_event" handler="on_wDrawScreen_button_press_event" object="%d:1" last_modification_time="Wed, 07 Feb 2007 17:32:57 GMT"/>
<signal name="scroll_event" handler="on_wDrawScreen_scroll_event" object="%d:1" last_modification_time="Wed, 07 Feb 2007 19:18:23 GMT"/>
<signal name="motion_notify_event" handler="on_wDrawScreen_motion_notify_event" object="%d:1" last_modification_time="Tue, 02 Jan 2007 10:28:32 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@ -2180,7 +2214,7 @@
</widget>
</child>
</widget>
<!--
<widget class="GtkMenu" id="wPopMenu">
<child>
@ -2285,5 +2319,5 @@
</widget>
</child>
</widget>
-->
</glade-interface>

View File

@ -525,7 +525,7 @@ ARM7 cpu</property>
</widget>
</child>
</widget>
<!--
<widget class="GtkDialog" id="wtool_4_TexView">
<property name="visible">True</property>
<property name="title" translatable="yes">Texture viewer</property>
@ -594,5 +594,5 @@ ARM7 cpu</property>
</widget>
</child>
</widget>
-->
</glade-interface>

View File

@ -46,7 +46,7 @@
// comment for GL :D
#undef HAVE_LIBGDKGLEXT_X11_1_0
//#undef HAVE_LIBGDKGLEXT_X11_1_0
#ifdef HAVE_LIBGDKGLEXT_X11_1_0
#include <GL/gl.h>
#include <gdk/gdkgl.h>
@ -56,6 +56,9 @@
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <glade/glade.h>
#include <glade/glade-xml.h>
#define dyn_CAST(type,var) (*((type*)(&var)))
#include "../MMU.h"
#include "../registers.h"
@ -69,6 +72,13 @@
#include "desmume.h"
#include "gdk_gl.h"
// autoconnect with strings as user_data
void
glade_xml_signal_autoconnect_StringObject (GladeXML *self);
//---
int Frameskip;
u16 Keypad_Temp[NB_KEYS];
@ -86,12 +96,14 @@ void unregister_Tool(VoidFunPtr fun);
/* callbacks.c */
void enable_rom_features();
void resize (float Size1, float Size2);
void rotate(float angle);
gboolean ScreenInvert;
gboolean ScreenGap;
gboolean ScreenRight;
/* callbacks_IO.c */
float ScreenCoeff_Size[2];
gboolean ScreenRotate;
gboolean ScreenRight;
gboolean ScreenGap;
float ScreenRotate;
void black_screen ();
void edit_controls();

View File

@ -253,8 +253,8 @@ int main(int argc, char *argv[]) {
pDrawingArea2 = glade_xml_get_widget(xml, "wDraw_Sub");
/* connect the signals in the interface */
glade_xml_signal_autoconnect(xml);
glade_xml_signal_autoconnect(xml_tools);
glade_xml_signal_autoconnect_StringObject(xml);
glade_xml_signal_autoconnect_StringObject(xml_tools);
init_GL_capabilities();