Linux: A bit of work on memcard support in Linux. Disabled for the moment because it seemed like the emulator wasn't seeing memcards being swapped till after restarting pcsx2, and I was worried about memcard corruption. I also made it put in default values for memcards if you didn't have them in preferences already.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@486 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
arcum42 2009-02-13 12:50:01 +00:00
parent a0da3ee37a
commit 5252d45ed7
10 changed files with 507 additions and 105 deletions

View File

@ -6,11 +6,11 @@
# Uncomment if building by itself, rather then with all the plugins # Uncomment if building by itself, rather then with all the plugins
#Normal #Normal
#export PCSX2OPTIONS="--enable-sse3 --enable-sse4 --prefix `pwd`" export PCSX2OPTIONS="--enable-sse3 --enable-sse4 --prefix `pwd`"
#Optimized, but a devbuild #Optimized, but a devbuild
export PCSX2OPTIONS="--enable-sse3 --enable-sse4 --enable-devbuild --prefix `pwd`" #export PCSX2OPTIONS="--enable-sse3 --enable-sse4 --enable-devbuild --prefix `pwd`"
#Debug / Devbuild version #Debug / Devbuild version
#export PCSX2OPTIONS="--enable-debug --enable-devbuild --enable-sse3 --prefix `pwd`" #export PCSX2OPTIONS="--enable-debug --enable-devbuild --enable-sse3 --prefix `pwd`"

View File

@ -39,7 +39,6 @@ int main(int argc, char *argv[])
{ {
char *file = NULL; char *file = NULL;
char elfname[g_MaxPath]; char elfname[g_MaxPath];
int i = 1;
efile = 0; efile = 0;
#ifdef ENABLE_NLS #ifdef ENABLE_NLS
@ -57,105 +56,7 @@ int main(int argc, char *argv[])
memset(&g_TestRun, 0, sizeof(g_TestRun)); memset(&g_TestRun, 0, sizeof(g_TestRun));
#endif #endif
while (i < argc) if (!ParseCommandLine(argc, argv, file)) return 0;
{
char* token = argv[i++];
if (stricmp(token, "-help") == 0 || stricmp(token, "--help") == 0 || stricmp(token, "-h") == 0)
{
//Msgbox::Alert( phelpmsg );
return 0;
}
else if (stricmp(token, "-efile") == 0)
{
token = argv[i++];
if (token != NULL)
{
efile = atoi(token);
}
}
else if (stricmp(token, "-nogui") == 0)
{
UseGui = FALSE;
}
else if (stricmp(token, "-loadgs") == 0)
{
g_pRunGSState = argv[i++];
}
#ifdef PCSX2_DEVBUILD
else if (stricmp(token, "-image") == 0)
{
g_TestRun.pimagename = argv[i++];
}
else if (stricmp(token, "-log") == 0)
{
g_TestRun.plogname = argv[i++];
}
else if (stricmp(token, "-logopt") == 0)
{
token = argv[i++];
if (token != NULL)
{
if (token[0] == '0' && token[1] == 'x') token += 2;
sscanf(token, "%x", &varLog);
}
}
else if (stricmp(token, "-frame") == 0)
{
token = argv[i++];
if (token != NULL)
{
g_TestRun.frame = atoi(token);
}
}
else if (stricmp(token, "-numimages") == 0)
{
token = argv[i++];
if (token != NULL)
{
g_TestRun.numimages = atoi(token);
}
}
else if (stricmp(token, "-jpg") == 0)
{
g_TestRun.jpgcapture = 1;
}
else if (stricmp(token, "-gs") == 0)
{
token = argv[i++];
g_TestRun.pgsdll = token;
}
else if (stricmp(token, "-cdvd") == 0)
{
token = argv[i++];
g_TestRun.pcdvddll = token;
}
else if (stricmp(token, "-spu") == 0)
{
token = argv[i++];
g_TestRun.pspudll = token;
}
else if (stricmp(token, "-test") == 0)
{
g_TestRun.enabled = 1;
}
#endif
else if (stricmp(token, "-pad") == 0)
{
token = argv[i++];
printf("-pad ignored\n");
}
else if (stricmp(token, "-loadgs") == 0)
{
token = argv[i++];
g_pRunGSState = token;
}
else
{
file = token;
printf("opening file %s\n", file);
}
}
#ifdef PCSX2_DEVBUILD #ifdef PCSX2_DEVBUILD
g_TestRun.efile = efile; g_TestRun.efile = efile;
@ -180,6 +81,8 @@ int main(int argc, char *argv[])
memset(&Config, 0, sizeof(Config)); memset(&Config, 0, sizeof(Config));
strcpy(Config.BiosDir, DEFAULT_BIOS_DIR "/"); strcpy(Config.BiosDir, DEFAULT_BIOS_DIR "/");
strcpy(Config.PluginsDir, DEFAULT_PLUGINS_DIR "/"); strcpy(Config.PluginsDir, DEFAULT_PLUGINS_DIR "/");
strcpy(Config.Mcd1, MEMCARDS_DIR "/" DEFAULT_MEMCARD1);
strcpy(Config.Mcd2, MEMCARDS_DIR "/" DEFAULT_MEMCARD2);
Config.Patch = 0; Config.Patch = 0;
Config.PsxOut = 1; Config.PsxOut = 1;
Config.Options = PCSX2_EEREC | PCSX2_VU0REC | PCSX2_VU1REC | PCSX2_FRAMELIMIT_LIMIT; Config.Options = PCSX2_EEREC | PCSX2_VU0REC | PCSX2_VU1REC | PCSX2_FRAMELIMIT_LIMIT;
@ -358,6 +261,7 @@ void StartGui()
// disable anything not implemented or not working properly. // disable anything not implemented or not working properly.
gtk_widget_set_sensitive(GTK_WIDGET(lookup_widget(MainWindow, "patch_browser1")), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(lookup_widget(MainWindow, "patch_browser1")), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(lookup_widget(MainWindow, "patch_finder2")), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(lookup_widget(MainWindow, "patch_finder2")), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(lookup_widget(MainWindow, "GtkMenuItem_Memcards")), FALSE);
#ifndef PCSX2_DEVBUILD #ifndef PCSX2_DEVBUILD
gtk_widget_set_sensitive(GTK_WIDGET(lookup_widget(MainWindow, "GtkMenuItem_Logging")), FALSE); gtk_widget_set_sensitive(GTK_WIDGET(lookup_widget(MainWindow, "GtkMenuItem_Logging")), FALSE);
#endif #endif
@ -622,6 +526,75 @@ void OnDebug_Logging(GtkMenuItem *menuitem, gpointer user_data)
gtk_main(); gtk_main();
} }
void OnConf_Memcards(GtkMenuItem *menuitem, gpointer user_data)
{
char file[g_MaxPath], card[g_MaxPath];
DIR *dir;
struct dirent *entry;
struct stat statinfo;
GtkWidget *memcombo1, *memcombo2;
int i = 0;
MemDlg = create_MemDlg();
memcombo1 = lookup_widget(MemDlg, "memcard1combo");
memcombo2 = lookup_widget(MemDlg, "memcard2combo");
getcwd(file, ARRAYSIZE(file)); /* store current dir */
sprintf( card, "%s/%s", file, MEMCARDS_DIR );
chdir(card); /* change dirs so that plugins can find their config file*/
if ((dir = opendir(card)) == NULL)
{
Console::Error("ERROR: Could not open directory %s\n", params card);
return;
}
while ((entry = readdir(dir)) != NULL)
{
stat(entry->d_name, &statinfo);
if (S_ISREG(statinfo.st_mode))
{
char path[g_MaxPath];
sprintf( path, "%s/%s", MEMCARDS_DIR, entry->d_name);
gtk_combo_box_append_text(GTK_COMBO_BOX(memcombo1), entry->d_name);
gtk_combo_box_append_text(GTK_COMBO_BOX(memcombo2), entry->d_name);
if (strcmp(Config.Mcd1, path) == 0)
gtk_combo_box_set_active(GTK_COMBO_BOX(memcombo1), i);
if (strcmp(Config.Mcd2, path) == 0)
gtk_combo_box_set_active(GTK_COMBO_BOX(memcombo2), i);
i++;
}
}
closedir(dir);
chdir(file);
gtk_widget_show_all(MemDlg);
gtk_widget_set_sensitive(MainWindow, FALSE);
gtk_main();
}
void OnMemcards_Ok(GtkButton *button, gpointer user_data)
{
strcpy(Config.Mcd1, MEMCARDS_DIR "/");
strcpy(Config.Mcd2, MEMCARDS_DIR "/");
strcat(Config.Mcd1, gtk_combo_box_get_active_text(GTK_COMBO_BOX(lookup_widget(MemDlg, "memcard1combo"))));
strcat(Config.Mcd2, gtk_combo_box_get_active_text(GTK_COMBO_BOX(lookup_widget(MemDlg, "memcard2combo"))));
SaveConfig();
gtk_widget_destroy(MemDlg);
gtk_widget_set_sensitive(MainWindow, TRUE);
gtk_main_quit();
}
void on_patch_browser1_activate(GtkMenuItem *menuitem, gpointer user_data) {} void on_patch_browser1_activate(GtkMenuItem *menuitem, gpointer user_data) {}
void on_patch_finder2_activate(GtkMenuItem *menuitem, gpointer user_data) {} void on_patch_finder2_activate(GtkMenuItem *menuitem, gpointer user_data) {}

View File

@ -32,6 +32,8 @@ void OnLanguage(GtkMenuItem *menuitem, gpointer user_data);
extern void ExecuteCpu(); extern void ExecuteCpu();
extern void CheckSlots(); extern void CheckSlots();
extern bool isSlotUsed(int num); extern bool isSlotUsed(int num);
extern bool ParseCommandLine(int argc, char *argv[], char *file);
extern void MemoryCard_Init();
void InitLanguages(); void InitLanguages();
char *GetLanguageNext(); char *GetLanguageNext();
@ -43,7 +45,7 @@ GtkWidget *MainWindow;
GtkWidget *pStatusBar = NULL, *Status_Box; GtkWidget *pStatusBar = NULL, *Status_Box;
GtkWidget *CmdLine; //2002-09-28 (Florin) GtkWidget *CmdLine; //2002-09-28 (Florin)
GtkWidget *widgetCmdLine; GtkWidget *widgetCmdLine;
GtkWidget *LogDlg; GtkWidget *LogDlg, *MemDlg;
GtkAccelGroup *AccelGroup; GtkAccelGroup *AccelGroup;

View File

@ -30,6 +30,111 @@ bool g_EmulationInProgress = false; // Set TRUE if a game is actively running (s
static bool sinit = false; static bool sinit = false;
GtkWidget *FileSel; GtkWidget *FileSel;
bool ParseCommandLine(int argc, char *argv[], char *file)
{
int i = 1;
while (i < argc)
{
char* token = argv[i++];
if (stricmp(token, "-help") == 0 || stricmp(token, "--help") == 0 || stricmp(token, "-h") == 0)
{
//Msgbox::Alert( phelpmsg );
return false;
}
else if (stricmp(token, "-efile") == 0)
{
token = argv[i++];
if (token != NULL)
{
efile = atoi(token);
}
}
else if (stricmp(token, "-nogui") == 0)
{
UseGui = FALSE;
}
else if (stricmp(token, "-loadgs") == 0)
{
g_pRunGSState = argv[i++];
}
#ifdef PCSX2_DEVBUILD
else if (stricmp(token, "-image") == 0)
{
g_TestRun.pimagename = argv[i++];
}
else if (stricmp(token, "-log") == 0)
{
g_TestRun.plogname = argv[i++];
}
else if (stricmp(token, "-logopt") == 0)
{
token = argv[i++];
if (token != NULL)
{
if (token[0] == '0' && token[1] == 'x') token += 2;
sscanf(token, "%x", &varLog);
}
}
else if (stricmp(token, "-frame") == 0)
{
token = argv[i++];
if (token != NULL)
{
g_TestRun.frame = atoi(token);
}
}
else if (stricmp(token, "-numimages") == 0)
{
token = argv[i++];
if (token != NULL)
{
g_TestRun.numimages = atoi(token);
}
}
else if (stricmp(token, "-jpg") == 0)
{
g_TestRun.jpgcapture = 1;
}
else if (stricmp(token, "-gs") == 0)
{
token = argv[i++];
g_TestRun.pgsdll = token;
}
else if (stricmp(token, "-cdvd") == 0)
{
token = argv[i++];
g_TestRun.pcdvddll = token;
}
else if (stricmp(token, "-spu") == 0)
{
token = argv[i++];
g_TestRun.pspudll = token;
}
else if (stricmp(token, "-test") == 0)
{
g_TestRun.enabled = 1;
}
#endif
else if (stricmp(token, "-pad") == 0)
{
token = argv[i++];
printf("-pad ignored\n");
}
else if (stricmp(token, "-loadgs") == 0)
{
token = argv[i++];
g_pRunGSState = token;
}
else
{
file = token;
printf("opening file %s\n", file);
}
}
return true;
}
void SysPrintf(const char *fmt, ...) void SysPrintf(const char *fmt, ...)
{ {
va_list list; va_list list;

View File

@ -25,5 +25,6 @@
extern void StartGui(); extern void StartGui();
extern void CheckSlots(); extern void CheckSlots();
extern const char* g_pRunGSState;
extern int efile;
#endif #endif

View File

@ -78,6 +78,9 @@ int LoadConfig()
GetValue("Mcd1", Config.Mcd1); GetValue("Mcd1", Config.Mcd1);
GetValue("Mcd2", Config.Mcd2); GetValue("Mcd2", Config.Mcd2);
if (strcmp(Config.Mcd1,"") == 0) strcpy(Config.Mcd1, MEMCARDS_DIR "/" DEFAULT_MEMCARD1);
if (strcmp(Config.Mcd2,"") == 0) strcpy(Config.Mcd2, MEMCARDS_DIR "/" DEFAULT_MEMCARD2);
GetValue("GS", Config.GS); GetValue("GS", Config.GS);
GetValue("SPU2", Config.SPU2); GetValue("SPU2", Config.SPU2);
GetValue("CDVD", Config.CDVD); GetValue("CDVD", Config.CDVD);

View File

@ -302,6 +302,10 @@ void
OnConf_Fw (GtkMenuItem *menuitem, OnConf_Fw (GtkMenuItem *menuitem,
gpointer user_data); gpointer user_data);
void
OnConf_Memcards (GtkMenuItem *menuitem,
gpointer user_data);
void void
OnConf_Cpu (GtkMenuItem *menuitem, OnConf_Cpu (GtkMenuItem *menuitem,
gpointer user_data); gpointer user_data);
@ -353,3 +357,7 @@ OnCpu_Ok (GtkButton *button,
void void
OnLogging_Ok (GtkButton *button, OnLogging_Ok (GtkButton *button,
gpointer user_data); gpointer user_data);
void
OnMemcards_Ok (GtkButton *button,
gpointer user_data);

View File

@ -2433,6 +2433,7 @@ create_MainWindow (void)
GtkWidget *GtkMenuItem_USB; GtkWidget *GtkMenuItem_USB;
GtkWidget *GtkMenuItem_FW; GtkWidget *GtkMenuItem_FW;
GtkWidget *separator4; GtkWidget *separator4;
GtkWidget *GtkMenuItem_Memcards;
GtkWidget *GtkMenuItem_Cpu; GtkWidget *GtkMenuItem_Cpu;
GtkWidget *GtkMenuItem_Game_Fixes; GtkWidget *GtkMenuItem_Game_Fixes;
GtkWidget *GtkMenuItem_Speed_Hacks; GtkWidget *GtkMenuItem_Speed_Hacks;
@ -2628,6 +2629,10 @@ create_MainWindow (void)
gtk_container_add (GTK_CONTAINER (GtkMenuItem_Configuration_menu), separator4); gtk_container_add (GTK_CONTAINER (GtkMenuItem_Configuration_menu), separator4);
gtk_widget_set_sensitive (separator4, FALSE); gtk_widget_set_sensitive (separator4, FALSE);
GtkMenuItem_Memcards = gtk_menu_item_new_with_mnemonic (_("Memcards"));
gtk_widget_show (GtkMenuItem_Memcards);
gtk_container_add (GTK_CONTAINER (GtkMenuItem_Configuration_menu), GtkMenuItem_Memcards);
GtkMenuItem_Cpu = gtk_menu_item_new_with_mnemonic (_("C_pu")); GtkMenuItem_Cpu = gtk_menu_item_new_with_mnemonic (_("C_pu"));
gtk_widget_show (GtkMenuItem_Cpu); gtk_widget_show (GtkMenuItem_Cpu);
gtk_container_add (GTK_CONTAINER (GtkMenuItem_Configuration_menu), GtkMenuItem_Cpu); gtk_container_add (GTK_CONTAINER (GtkMenuItem_Configuration_menu), GtkMenuItem_Cpu);
@ -2795,6 +2800,9 @@ create_MainWindow (void)
g_signal_connect ((gpointer) GtkMenuItem_FW, "activate", g_signal_connect ((gpointer) GtkMenuItem_FW, "activate",
G_CALLBACK (OnConf_Fw), G_CALLBACK (OnConf_Fw),
NULL); NULL);
g_signal_connect ((gpointer) GtkMenuItem_Memcards, "activate",
G_CALLBACK (OnConf_Memcards),
NULL);
g_signal_connect ((gpointer) GtkMenuItem_Cpu, "activate", g_signal_connect ((gpointer) GtkMenuItem_Cpu, "activate",
G_CALLBACK (OnConf_Cpu), G_CALLBACK (OnConf_Cpu),
NULL); NULL);
@ -2874,6 +2882,7 @@ create_MainWindow (void)
GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_USB, "GtkMenuItem_USB"); GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_USB, "GtkMenuItem_USB");
GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_FW, "GtkMenuItem_FW"); GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_FW, "GtkMenuItem_FW");
GLADE_HOOKUP_OBJECT (MainWindow, separator4, "separator4"); GLADE_HOOKUP_OBJECT (MainWindow, separator4, "separator4");
GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_Memcards, "GtkMenuItem_Memcards");
GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_Cpu, "GtkMenuItem_Cpu"); GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_Cpu, "GtkMenuItem_Cpu");
GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_Game_Fixes, "GtkMenuItem_Game_Fixes"); GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_Game_Fixes, "GtkMenuItem_Game_Fixes");
GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_Speed_Hacks, "GtkMenuItem_Speed_Hacks"); GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_Speed_Hacks, "GtkMenuItem_Speed_Hacks");
@ -4015,3 +4024,99 @@ create_Logging (void)
return Logging; return Logging;
} }
GtkWidget*
create_MemDlg (void)
{
GtkWidget *MemDlg;
GtkWidget *dialog_vbox7;
GtkWidget *hbox40;
GtkWidget *vbox62;
GtkWidget *hbox42;
GtkWidget *label99;
GtkWidget *label100;
GtkWidget *hbox41;
GtkWidget *memcard1combo;
GtkWidget *memcard2combo;
GtkWidget *dialog_action_area7;
GtkWidget *memcardcancelbutton;
GtkWidget *okbutton1;
MemDlg = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (MemDlg), _("Memcards"));
gtk_window_set_type_hint (GTK_WINDOW (MemDlg), GDK_WINDOW_TYPE_HINT_DIALOG);
dialog_vbox7 = GTK_DIALOG (MemDlg)->vbox;
gtk_widget_show (dialog_vbox7);
hbox40 = gtk_hbox_new (FALSE, 0);
gtk_widget_show (hbox40);
gtk_box_pack_start (GTK_BOX (dialog_vbox7), hbox40, TRUE, TRUE, 0);
vbox62 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox62);
gtk_box_pack_start (GTK_BOX (hbox40), vbox62, TRUE, TRUE, 0);
hbox42 = gtk_hbox_new (FALSE, 0);
gtk_widget_show (hbox42);
gtk_box_pack_start (GTK_BOX (vbox62), hbox42, TRUE, TRUE, 0);
label99 = gtk_label_new (_("Memcard 1"));
gtk_widget_show (label99);
gtk_box_pack_start (GTK_BOX (hbox42), label99, TRUE, TRUE, 0);
label100 = gtk_label_new (_("Memcard 2"));
gtk_widget_show (label100);
gtk_box_pack_start (GTK_BOX (hbox42), label100, TRUE, TRUE, 0);
gtk_label_set_justify (GTK_LABEL (label100), GTK_JUSTIFY_RIGHT);
hbox41 = gtk_hbox_new (FALSE, 0);
gtk_widget_show (hbox41);
gtk_box_pack_start (GTK_BOX (vbox62), hbox41, TRUE, TRUE, 0);
memcard1combo = gtk_combo_box_new_text ();
gtk_widget_show (memcard1combo);
gtk_box_pack_start (GTK_BOX (hbox41), memcard1combo, TRUE, TRUE, 0);
memcard2combo = gtk_combo_box_new_text ();
gtk_widget_show (memcard2combo);
gtk_box_pack_start (GTK_BOX (hbox41), memcard2combo, TRUE, TRUE, 0);
dialog_action_area7 = GTK_DIALOG (MemDlg)->action_area;
gtk_widget_show (dialog_action_area7);
gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area7), GTK_BUTTONBOX_END);
memcardcancelbutton = gtk_button_new_from_stock ("gtk-ok");
gtk_widget_show (memcardcancelbutton);
gtk_dialog_add_action_widget (GTK_DIALOG (MemDlg), memcardcancelbutton, GTK_RESPONSE_OK);
GTK_WIDGET_SET_FLAGS (memcardcancelbutton, GTK_CAN_DEFAULT);
okbutton1 = gtk_button_new_from_stock ("gtk-cancel");
gtk_widget_show (okbutton1);
gtk_dialog_add_action_widget (GTK_DIALOG (MemDlg), okbutton1, GTK_RESPONSE_CANCEL);
GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT);
g_signal_connect ((gpointer) memcardcancelbutton, "clicked",
G_CALLBACK (OnMemcards_Ok),
NULL);
g_signal_connect ((gpointer) okbutton1, "clicked",
G_CALLBACK (OnMemcards_Ok),
NULL);
/* Store pointers to all widgets, for use by lookup_widget(). */
GLADE_HOOKUP_OBJECT_NO_REF (MemDlg, MemDlg, "MemDlg");
GLADE_HOOKUP_OBJECT_NO_REF (MemDlg, dialog_vbox7, "dialog_vbox7");
GLADE_HOOKUP_OBJECT (MemDlg, hbox40, "hbox40");
GLADE_HOOKUP_OBJECT (MemDlg, vbox62, "vbox62");
GLADE_HOOKUP_OBJECT (MemDlg, hbox42, "hbox42");
GLADE_HOOKUP_OBJECT (MemDlg, label99, "label99");
GLADE_HOOKUP_OBJECT (MemDlg, label100, "label100");
GLADE_HOOKUP_OBJECT (MemDlg, hbox41, "hbox41");
GLADE_HOOKUP_OBJECT (MemDlg, memcard1combo, "memcard1combo");
GLADE_HOOKUP_OBJECT (MemDlg, memcard2combo, "memcard2combo");
GLADE_HOOKUP_OBJECT_NO_REF (MemDlg, dialog_action_area7, "dialog_action_area7");
GLADE_HOOKUP_OBJECT (MemDlg, memcardcancelbutton, "memcardcancelbutton");
GLADE_HOOKUP_OBJECT (MemDlg, okbutton1, "okbutton1");
return MemDlg;
}

View File

@ -20,3 +20,4 @@ GtkWidget* create_PatchBrowserWindow (void);
GtkWidget* create_PatchFinderWindow (void); GtkWidget* create_PatchFinderWindow (void);
GtkWidget* create_CpuDlg (void); GtkWidget* create_CpuDlg (void);
GtkWidget* create_Logging (void); GtkWidget* create_Logging (void);
GtkWidget* create_MemDlg (void);

View File

@ -5071,6 +5071,15 @@ Version x.x</property>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkMenuItem" id="GtkMenuItem_Memcards">
<property name="visible">True</property>
<property name="label" translatable="yes">Memcards</property>
<property name="use_underline">True</property>
<signal name="activate" handler="OnConf_Memcards" last_modification_time="Fri, 13 Feb 2009 10:12:34 GMT"/>
</widget>
</child>
<child> <child>
<widget class="GtkMenuItem" id="GtkMenuItem_Cpu"> <widget class="GtkMenuItem" id="GtkMenuItem_Cpu">
<property name="visible">True</property> <property name="visible">True</property>
@ -8019,4 +8028,199 @@ Version x.x</property>
</child> </child>
</widget> </widget>
<widget class="GtkDialog" id="MemDlg">
<property name="visible">True</property>
<property name="title" translatable="yes">Memcards</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>
<property name="urgency_hint">False</property>
<property name="has_separator">True</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox7">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area7">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="memcardcancelbutton">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-5</property>
<signal name="clicked" handler="OnMemcards_Ok" last_modification_time="Fri, 13 Feb 2009 10:31:07 GMT"/>
</widget>
</child>
<child>
<widget class="GtkButton" id="okbutton1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-6</property>
<signal name="clicked" handler="OnMemcards_Ok" last_modification_time="Fri, 13 Feb 2009 10:31:01 GMT"/>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox40">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkVBox" id="vbox62">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkHBox" id="hbox42">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label99">
<property name="visible">True</property>
<property name="label" translatable="yes">Memcard 1</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label100">
<property name="visible">True</property>
<property name="label" translatable="yes">Memcard 2</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_RIGHT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox41">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkComboBox" id="memcard1combo">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
<child>
<widget class="GtkComboBox" id="memcard2combo">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface> </glade-interface>