added changes tracking to memory viewer
(oh yeah ;) this mean autoupdate has been done too)
This commit is contained in:
parent
2a4634faf0
commit
8498880540
|
@ -28,6 +28,16 @@ static BOOL hword;
|
||||||
|
|
||||||
static GtkLabel * reg_address;
|
static GtkLabel * reg_address;
|
||||||
static GtkEntry * reg_value;
|
static GtkEntry * reg_value;
|
||||||
|
void display_current_reg();
|
||||||
|
|
||||||
|
/* update */
|
||||||
|
|
||||||
|
void wtools_1_update () {
|
||||||
|
display_current_reg();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* registers */
|
||||||
|
|
||||||
void display_current_reg() {
|
void display_current_reg() {
|
||||||
char text_address[16];
|
char text_address[16];
|
||||||
|
@ -58,12 +68,20 @@ void on_wtools_1_combo_cpu_changed (GtkComboBox *widget, gpointer user_data)
|
||||||
void on_wtools_1_IOregs_show (GtkWidget *widget, gpointer user_data) {
|
void on_wtools_1_IOregs_show (GtkWidget *widget, gpointer user_data) {
|
||||||
GtkWidget * b = glade_xml_get_widget(xml_tools, "wtools_1_r_ime");
|
GtkWidget * b = glade_xml_get_widget(xml_tools, "wtools_1_r_ime");
|
||||||
GtkWidget * combo = glade_xml_get_widget(xml_tools, "wtools_1_combo_cpu");
|
GtkWidget * combo = glade_xml_get_widget(xml_tools, "wtools_1_combo_cpu");
|
||||||
|
|
||||||
reg_address = (GtkLabel*)glade_xml_get_widget(xml_tools, "wtools_1_REGADRESS");
|
reg_address = (GtkLabel*)glade_xml_get_widget(xml_tools, "wtools_1_REGADRESS");
|
||||||
reg_value = (GtkEntry*)glade_xml_get_widget(xml_tools, "wtools_1_REGVALUE");
|
reg_value = (GtkEntry*)glade_xml_get_widget(xml_tools, "wtools_1_REGVALUE");
|
||||||
|
|
||||||
// do as if we had selected this button and ARM7 cpu
|
// do as if we had selected this button and ARM7 cpu
|
||||||
gtk_toggle_button_set_active((GtkToggleButton*)b, TRUE);
|
gtk_toggle_button_set_active((GtkToggleButton*)b, TRUE);
|
||||||
gtk_combo_box_set_active((GtkComboBox*)combo, 0);
|
gtk_combo_box_set_active((GtkComboBox*)combo, 0);
|
||||||
|
|
||||||
|
register_Tool(wtools_1_update);
|
||||||
}
|
}
|
||||||
|
gboolean on_wtools_1_IOregs_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) {
|
||||||
|
unregister_Tool(wtools_1_update);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void on_wtools_1_r_ipcfifocnt_toggled (GtkToggleButton *togglebutton, gpointer user_data) { display_reg(REG_IPCFIFOCNT,TRUE); }
|
void on_wtools_1_r_ipcfifocnt_toggled (GtkToggleButton *togglebutton, gpointer user_data) { display_reg(REG_IPCFIFOCNT,TRUE); }
|
||||||
void on_wtools_1_r_spicnt_toggled (GtkToggleButton *togglebutton, gpointer user_data) { display_reg(REG_SPICNT,TRUE); }
|
void on_wtools_1_r_spicnt_toggled (GtkToggleButton *togglebutton, gpointer user_data) { display_reg(REG_SPICNT,TRUE); }
|
||||||
|
|
|
@ -33,8 +33,10 @@ enum SHOW {
|
||||||
static BOOL init=FALSE;
|
static BOOL init=FALSE;
|
||||||
static enum SHOW packmode=Bit8;
|
static enum SHOW packmode=Bit8;
|
||||||
static u32 address=0, tmpaddr=0, bpl=0; int cpu=0;
|
static u32 address=0, tmpaddr=0, bpl=0; int cpu=0;
|
||||||
static PangoAttrList *attr_Text8,*attr_Text16,*attr_Text32;
|
static PangoAttrList *attr_Text8,*attr_Text16,*attr_Text32,*attr_red;
|
||||||
static char patt[512];
|
static char patt[512];
|
||||||
|
static u8 mem[0x100];
|
||||||
|
static int w,h;
|
||||||
|
|
||||||
static GtkEntry *wAddress;
|
static GtkEntry *wAddress;
|
||||||
static GtkDrawingArea *wPaint;
|
static GtkDrawingArea *wPaint;
|
||||||
|
@ -44,6 +46,78 @@ void refresh();
|
||||||
void initialise();
|
void initialise();
|
||||||
|
|
||||||
|
|
||||||
|
/* update */
|
||||||
|
|
||||||
|
void wtools_2_update() {
|
||||||
|
int i,j, x,y=5;
|
||||||
|
int px = w/78, qx;
|
||||||
|
u8 m8, *mem8 =mem; u16 m16, *mem16=(u16*)mem; u32 m32, *mem32=(u32*)mem;
|
||||||
|
u32 addr;
|
||||||
|
char txt[16];
|
||||||
|
|
||||||
|
GtkWidget * area = (GtkWidget*)wPaint;
|
||||||
|
PangoLayout* playout = gtk_widget_create_pango_layout(area, NULL);
|
||||||
|
GdkGC * GC = area->style->fg_gc[area->state];
|
||||||
|
|
||||||
|
pango_layout_set_attributes(playout, attr_red);
|
||||||
|
|
||||||
|
#define PAINT_TEXT(w) \
|
||||||
|
gdk_draw_rectangle(area->window, area->style->white_gc, TRUE, x, y, w, h); \
|
||||||
|
pango_layout_set_text(playout, txt, -1); \
|
||||||
|
gdk_draw_layout(area->window, GC, x, y, playout);
|
||||||
|
|
||||||
|
addr = address;
|
||||||
|
switch (packmode) {
|
||||||
|
case Bit8:
|
||||||
|
for (i=0; i<0x10; i++, y+=h) {
|
||||||
|
x = 12 * px + 10; qx = 62 * px + 10;
|
||||||
|
for (j=0; j<16; j++, addr++,mem8++,x+=3*px,qx+=px) {
|
||||||
|
m8 = *mem8; *mem8 = MMU_readByte(cpu, addr);
|
||||||
|
if (m8 != *mem8) {
|
||||||
|
sprintf(txt, "%02X", *mem8);
|
||||||
|
PAINT_TEXT(3*px)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Bit16:
|
||||||
|
for (i=0; i<0x10; i++, y+=h) {
|
||||||
|
x = 12 * px + 10; qx = 62 * px + 10;
|
||||||
|
for (j=0; j<8; j++, addr+=2,mem16++,x+=6*px,qx+=2*px) {
|
||||||
|
m16 = *mem16; *mem16 = MMU_readHWord(cpu, addr);
|
||||||
|
if (m16 != *mem16) {
|
||||||
|
sprintf(txt, " %04X", *mem16);
|
||||||
|
PAINT_TEXT(6*px)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Bit32:
|
||||||
|
for (i=0; i<0x10; i++, y+=h) {
|
||||||
|
x = 12 * px + 10; qx = 62 * px + 10;
|
||||||
|
for (j=0; j<4; j++, addr+=4,mem32++,x+=12*px,qx+=4*px) {
|
||||||
|
m32 = *mem32; *mem32 = MMU_readWord(cpu, addr);
|
||||||
|
if (m32 != *mem32) {
|
||||||
|
sprintf(txt, " %08X", *mem32);
|
||||||
|
PAINT_TEXT(12*px)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
g_object_unref(playout);
|
||||||
|
|
||||||
|
#undef PAINT_TEXT
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean on_wtools_2_draw_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
|
||||||
|
// clear the red marks :)
|
||||||
|
if (event->button==1)
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* which cpu we look into */
|
/* which cpu we look into */
|
||||||
|
|
||||||
|
@ -94,8 +168,11 @@ void on_wtools_2_GotoButton_clicked (GtkButton *button, gpointer user_data) {
|
||||||
void on_wtools_2_MemView_show (GtkWidget *widget, gpointer user_data) {
|
void on_wtools_2_MemView_show (GtkWidget *widget, gpointer user_data) {
|
||||||
initialize();
|
initialize();
|
||||||
change_address(RANGE_MIN);
|
change_address(RANGE_MIN);
|
||||||
|
register_Tool(wtools_2_update);
|
||||||
|
}
|
||||||
|
gboolean on_wtools_2_MemView_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) {
|
||||||
|
unregister_Tool(wtools_2_update);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* scroll functions :D */
|
/* scroll functions :D */
|
||||||
|
@ -141,6 +218,9 @@ void initialize() {
|
||||||
gtk_combo_box_set_active((GtkComboBox*)combo, 0);
|
gtk_combo_box_set_active((GtkComboBox*)combo, 0);
|
||||||
gtk_range_set_adjustment(wRange, adj);
|
gtk_range_set_adjustment(wRange, adj);
|
||||||
|
|
||||||
|
strcpy(patt, "<tt><span foreground=\"red\">__00000000__</span></tt>");
|
||||||
|
pango_parse_markup(patt,-1,0,&attr_red,NULL,NULL,NULL);
|
||||||
|
|
||||||
#define PATT(x) x"<span foreground=\"#608060\">" x "</span>"
|
#define PATT(x) x"<span foreground=\"#608060\">" x "</span>"
|
||||||
#define DUP(x) x x
|
#define DUP(x) x x
|
||||||
strcpy(patt, "<tt><span foreground=\"blue\">0000:0000</span> | ");
|
strcpy(patt, "<tt><span foreground=\"blue\">0000:0000</span> | ");
|
||||||
|
@ -167,7 +247,11 @@ void refresh() {
|
||||||
GtkWidget * area = (GtkWidget*)wPaint;
|
GtkWidget * area = (GtkWidget*)wPaint;
|
||||||
PangoLayout* playout = gtk_widget_create_pango_layout(area, NULL);
|
PangoLayout* playout = gtk_widget_create_pango_layout(area, NULL);
|
||||||
GdkGC * GC = area->style->fg_gc[area->state];
|
GdkGC * GC = area->style->fg_gc[area->state];
|
||||||
int i,j,addr, w,h,x,y; u8 c;
|
int i,j,addr, x,y; u8 c;
|
||||||
|
u8 *mem8=mem;
|
||||||
|
u16 *mem16=(u16*)mem;
|
||||||
|
u32 *mem32=(u32*)mem;
|
||||||
|
|
||||||
char *ptxt, txt[]="0000:0000 | 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF | 0123456789ABCDEF\0";
|
char *ptxt, txt[]="0000:0000 | 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF | 0123456789ABCDEF\0";
|
||||||
PangoAttrList *attr;
|
PangoAttrList *attr;
|
||||||
|
|
||||||
|
@ -178,6 +262,10 @@ void refresh() {
|
||||||
case Bit32: attr=attr_Text32; break;
|
case Bit32: attr=attr_Text32; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i=0; i<0x100; i++)
|
||||||
|
mem[i] = MMU_readByte(cpu, address+i);
|
||||||
|
|
||||||
|
|
||||||
gdk_draw_rectangle(area->window, area->style->white_gc, TRUE, 0, 0,
|
gdk_draw_rectangle(area->window, area->style->white_gc, TRUE, 0, 0,
|
||||||
area->allocation.width, area->allocation.height);
|
area->allocation.width, area->allocation.height);
|
||||||
|
|
||||||
|
@ -194,21 +282,23 @@ void refresh() {
|
||||||
switch(packmode) {
|
switch(packmode) {
|
||||||
case Bit8:
|
case Bit8:
|
||||||
for (j=0; j<16; j++,ptxt+=3)
|
for (j=0; j<16; j++,ptxt+=3)
|
||||||
sprintf(ptxt, "%02X ", MMU_readByte(cpu, addr+j));
|
sprintf(ptxt, "%02X ", mem8[j]);
|
||||||
break;
|
break;
|
||||||
case Bit16:
|
case Bit16:
|
||||||
for (j=0; j<16; j+=2,ptxt+=6)
|
for (j=0; j<16; j+=2,ptxt+=6, mem16++)
|
||||||
sprintf(ptxt, " %04X ", MMU_readHWord(cpu, addr+j));
|
sprintf(ptxt, " %04X ", *mem16);
|
||||||
break;
|
break;
|
||||||
case Bit32:
|
case Bit32:
|
||||||
for (j=0; j<16; j+=4,ptxt+=12)
|
for (j=0; j<16; j+=4,ptxt+=12, mem32++)
|
||||||
sprintf(ptxt, " %08X ", (int)MMU_readWord(cpu, addr+j));
|
sprintf(ptxt, " %08X ", *mem32);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sprintf(ptxt, "| "); ptxt +=2;
|
sprintf(ptxt, "| "); ptxt +=2;
|
||||||
for (j=0; j<16; j++,ptxt++)
|
for (j=0; j<16; j++,ptxt++)
|
||||||
sprintf(ptxt, "%c", ((c=MMU_readByte(cpu, addr+j))<0x20)?'.':((c>=0x7F)?'.':c)); // only ASCII printable
|
// only ASCII printable
|
||||||
|
sprintf(ptxt, "%c", ((c=mem8[j])<0x20)?'.':((c>=0x7F)?'.':c));
|
||||||
addr += 16;
|
addr += 16;
|
||||||
|
mem8 +=16;
|
||||||
*(ptxt)=0;
|
*(ptxt)=0;
|
||||||
|
|
||||||
pango_layout_set_text(playout, txt, -1);
|
pango_layout_set_text(playout, txt, -1);
|
||||||
|
|
|
@ -20,11 +20,15 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../globals.h"
|
#include "../globals.h"
|
||||||
|
/* update functions */
|
||||||
|
void wtools_1_update();
|
||||||
|
void wtools_2_update();
|
||||||
|
|
||||||
|
|
||||||
/* ***** ***** IO REGISTERS ***** ***** */
|
/* ***** ***** IO REGISTERS ***** ***** */
|
||||||
|
|
||||||
void on_wtools_1_combo_cpu_changed (GtkComboBox *widget, gpointer user_data);
|
void on_wtools_1_combo_cpu_changed (GtkComboBox *widget, gpointer user_data);
|
||||||
void on_wtools_1_IOregs_show (GtkWidget *widget, gpointer user_data);
|
void on_wtools_1_IOregs_show (GtkWidget *widget, gpointer user_data);
|
||||||
|
gboolean on_wtools_1_IOregs_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data);
|
||||||
void on_wtools_1_r_ipcfifocnt_toggled (GtkToggleButton *togglebutton, 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_spicnt_toggled (GtkToggleButton *togglebutton, gpointer user_data);
|
||||||
void on_wtools_1_r_ime_toggled (GtkToggleButton *togglebutton, gpointer user_data);
|
void on_wtools_1_r_ime_toggled (GtkToggleButton *togglebutton, gpointer user_data);
|
||||||
|
@ -45,7 +49,8 @@ void on_wtools_1_r_dispb_winin_toggled(GtkToggleButton *togglebutton, gpointer u
|
||||||
void on_wtools_1_r_dispb_winout_toggled(GtkToggleButton *togglebutton, gpointer user_data);
|
void on_wtools_1_r_dispb_winout_toggled(GtkToggleButton *togglebutton, gpointer user_data);
|
||||||
|
|
||||||
/* ***** ***** MEMORY VIEWER ***** ***** */
|
/* ***** ***** MEMORY VIEWER ***** ***** */
|
||||||
|
gboolean on_wtools_2_MemView_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data);
|
||||||
|
gboolean on_wtools_2_draw_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data);
|
||||||
void on_wtools_2_cpu_changed (GtkComboBox *widget, gpointer user_data);
|
void on_wtools_2_cpu_changed (GtkComboBox *widget, gpointer user_data);
|
||||||
void on_wtools_2_MemView_show (GtkWidget *widget, gpointer user_data);
|
void on_wtools_2_MemView_show (GtkWidget *widget, gpointer user_data);
|
||||||
void on_wtools_2_r8_toggled (GtkToggleButton *togglebutton, gpointer user_data);
|
void on_wtools_2_r8_toggled (GtkToggleButton *togglebutton, gpointer user_data);
|
||||||
|
|
|
@ -178,6 +178,7 @@ gboolean EmuLoop(gpointer data)
|
||||||
Draw();
|
Draw();
|
||||||
|
|
||||||
// _updateDTools();
|
// _updateDTools();
|
||||||
|
notify_Tools();
|
||||||
gtk_widget_queue_draw(pDrawingArea);
|
gtk_widget_queue_draw(pDrawingArea);
|
||||||
gtk_widget_queue_draw(pDrawingArea2);
|
gtk_widget_queue_draw(pDrawingArea2);
|
||||||
|
|
||||||
|
|
|
@ -18,9 +18,9 @@
|
||||||
<property name="focus_on_map">True</property>
|
<property name="focus_on_map">True</property>
|
||||||
<property name="urgency_hint">False</property>
|
<property name="urgency_hint">False</property>
|
||||||
<property name="has_separator">True</property>
|
<property name="has_separator">True</property>
|
||||||
<signal name="delete_event" handler="gtk_widget_hide" last_modification_time="Thu, 04 Jan 2007 11:26:10 GMT"/>
|
|
||||||
<signal name="response" handler="gtk_widget_hide" last_modification_time="Thu, 04 Jan 2007 11:19:44 GMT"/>
|
<signal name="response" handler="gtk_widget_hide" last_modification_time="Thu, 04 Jan 2007 11:19:44 GMT"/>
|
||||||
<signal name="show" handler="on_wtools_1_IOregs_show" last_modification_time="Thu, 04 Jan 2007 12:47:11 GMT"/>
|
<signal name="show" handler="on_wtools_1_IOregs_show" last_modification_time="Thu, 04 Jan 2007 12:47:11 GMT"/>
|
||||||
|
<signal name="delete_event" handler="on_wtools_1_IOregs_delete_event" last_modification_time="Sat, 13 Jan 2007 23:53:46 GMT"/>
|
||||||
|
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<widget class="GtkVBox" id="dialog-vbox3">
|
<widget class="GtkVBox" id="dialog-vbox3">
|
||||||
|
@ -600,9 +600,9 @@ cpu : ARM9</property>
|
||||||
<property name="focus_on_map">True</property>
|
<property name="focus_on_map">True</property>
|
||||||
<property name="urgency_hint">False</property>
|
<property name="urgency_hint">False</property>
|
||||||
<property name="has_separator">True</property>
|
<property name="has_separator">True</property>
|
||||||
<signal name="delete_event" handler="gtk_widget_hide" last_modification_time="Sat, 13 Jan 2007 20:13:44 GMT"/>
|
|
||||||
<signal name="response" handler="gtk_widget_hide" last_modification_time="Fri, 12 Jan 2007 12:58:38 GMT"/>
|
<signal name="response" handler="gtk_widget_hide" last_modification_time="Fri, 12 Jan 2007 12:58:38 GMT"/>
|
||||||
<signal name="show" handler="on_wtools_2_MemView_show" last_modification_time="Fri, 12 Jan 2007 13:35:53 GMT"/>
|
<signal name="show" handler="on_wtools_2_MemView_show" last_modification_time="Fri, 12 Jan 2007 13:35:53 GMT"/>
|
||||||
|
<signal name="delete_event" handler="on_wtools_2_MemView_delete_event" last_modification_time="Sat, 13 Jan 2007 23:56:33 GMT"/>
|
||||||
|
|
||||||
<child internal-child="vbox">
|
<child internal-child="vbox">
|
||||||
<widget class="GtkVBox" id="dialog-vbox4">
|
<widget class="GtkVBox" id="dialog-vbox4">
|
||||||
|
@ -825,6 +825,7 @@ ARM7 cpu</property>
|
||||||
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
<signal name="expose_event" handler="on_wtools_2_draw_expose_event" last_modification_time="Fri, 12 Jan 2007 13:14:44 GMT"/>
|
<signal name="expose_event" handler="on_wtools_2_draw_expose_event" last_modification_time="Fri, 12 Jan 2007 13:14:44 GMT"/>
|
||||||
<signal name="scroll_event" handler="on_wtools_2_draw_scroll_event" last_modification_time="Sat, 13 Jan 2007 19:50:18 GMT"/>
|
<signal name="scroll_event" handler="on_wtools_2_draw_scroll_event" last_modification_time="Sat, 13 Jan 2007 19:50:18 GMT"/>
|
||||||
|
<signal name="button_release_event" handler="on_wtools_2_draw_button_release_event" last_modification_time="Sun, 14 Jan 2007 01:44:37 GMT"/>
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">0</property>
|
<property name="left_attach">0</property>
|
||||||
|
|
|
@ -57,6 +57,11 @@ GtkWidget * pDrawingArea;
|
||||||
GtkWidget * pDrawingArea2;
|
GtkWidget * pDrawingArea2;
|
||||||
GladeXML * xml, * xml_tools;
|
GladeXML * xml, * xml_tools;
|
||||||
|
|
||||||
|
typedef void (*VoidFunPtr)();
|
||||||
|
void notify_Tools();
|
||||||
|
void register_Tool(VoidFunPtr fun);
|
||||||
|
void unregister_Tool(VoidFunPtr fun);
|
||||||
|
|
||||||
/* callbacks.c */
|
/* callbacks.c */
|
||||||
void enable_rom_features();
|
void enable_rom_features();
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,29 @@ SoundInterface_struct *SNDCoreList[] = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* ***** ***** TOOLS ***** ***** */
|
||||||
|
|
||||||
|
GList * tools_to_update = NULL;
|
||||||
|
|
||||||
|
// register tool
|
||||||
|
void register_Tool(VoidFunPtr fun) {
|
||||||
|
tools_to_update = g_list_append(tools_to_update, fun);
|
||||||
|
}
|
||||||
|
void unregister_Tool(VoidFunPtr fun) {
|
||||||
|
if (tools_to_update == NULL) return;
|
||||||
|
tools_to_update = g_list_remove(tools_to_update, fun);
|
||||||
|
}
|
||||||
|
|
||||||
|
void notify_Tool (VoidFunPtr fun, gpointer func_data) {
|
||||||
|
fun();
|
||||||
|
}
|
||||||
|
|
||||||
|
void notify_Tools() {
|
||||||
|
g_list_foreach(tools_to_update, ¬ify_Tool, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ***** ***** CONFIG FILE ***** ***** */
|
/* ***** ***** CONFIG FILE ***** ***** */
|
||||||
|
|
||||||
gint Keypad_Config[DESMUME_NB_KEYS];
|
gint Keypad_Config[DESMUME_NB_KEYS];
|
||||||
|
|
Loading…
Reference in New Issue