#include "main.h"
#include "plugin.h"
+#include "plugin_lib.h"
#include "pcnt.h"
#include "menu.h"
#include "../libpcsxcore/misc.h"
+#include "../libpcsxcore/new_dynarec/new_dynarec.h"
#include "../plugins/cdrcimg/cdrcimg.h"
#include "common/plat.h"
#include "common/input.h"
{
const char *ext = NULL;
- if (fname != NULL) {
- int len = strlen(fname);
- ext = fname;
- if (len > 2)
- ext = fname + len - 2;
- }
+ if (fname != NULL)
+ ext = strrchr(fname, '.');
- if (ext && strcasecmp(ext, ".z") == 0) {
+ if (ext && (
+ strcasecmp(ext, ".z") == 0 || strcasecmp(ext, ".bz") == 0 ||
+ strcasecmp(ext, ".znx") == 0 || strcasecmp(ext, ".pbp") == 0)) {
SetIsoFile(NULL);
cdrcimg_set_fname(fname);
strcpy(Config.Cdr, "builtin_cdrcimg");
}
}
+static void set_default_paths(void)
+{
+ MAKE_PATH(Config.Mcd1, MEMCARD_DIR, "card1.mcd");
+ MAKE_PATH(Config.Mcd2, MEMCARD_DIR, "card2.mcd");
+ strcpy(Config.BiosDir, "bios");
+
+ strcpy(Config.PluginsDir, "plugins");
+ strcpy(Config.Gpu, "builtin_gpu");
+ strcpy(Config.Spu, "builtin_spu");
+ strcpy(Config.Cdr, "builtin_cdr");
+ strcpy(Config.Pad1, "builtin_pad");
+ strcpy(Config.Pad2, "builtin_pad");
+ strcpy(Config.Net, "Disabled");
+ Config.PsxAuto = 1;
+
+ snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "." PATCHES_DIR);
+}
+
int main(int argc, char *argv[])
{
- char file[MAXPATHLEN] = "";
- char path[MAXPATHLEN];
- const char *cdfile = NULL;
- int loadst = 0;
void *tmp;
- int i;
tmp = dlopen("/lib/libdl.so.2", RTLD_LAZY);
if (tmp == NULL)
emuLog = stdout;
SetIsoFile(NULL);
+ memset(&Config, 0, sizeof(Config));
+
+ CheckSubDir();
+ set_default_paths();
+ strcpy(Config.Bios, "HLE");
+
+#ifdef MAEMO
+ extern int maemo_main(int argc, char **argv);
+ return maemo_main(argc, argv);
+#else
+ char file[MAXPATHLEN] = "";
+ char path[MAXPATHLEN];
+ const char *cdfile = NULL;
+ int loadst = 0;
+ int i;
+
// read command line options
for (i = 1; i < argc; i++) {
if (!strcmp(argv[i], "-psxout")) Config.PsxOut = 1;
}
}
- memset(&Config, 0, sizeof(PcsxConfig));
- strcpy(Config.Net, "Disabled");
-
- CheckSubDir();
-
- MAKE_PATH(Config.Mcd1, MEMCARD_DIR, "card1.mcd");
- MAKE_PATH(Config.Mcd2, MEMCARD_DIR, "card2.mcd");
- strcpy(Config.Bios, "HLE");
- strcpy(Config.BiosDir, "bios");
-
- strcpy(Config.PluginsDir, "plugins");
- strcpy(Config.Gpu, "builtin_gpu");
- strcpy(Config.Spu, "builtin_spu");
- strcpy(Config.Cdr, "builtin_cdr");
- strcpy(Config.Pad1, "builtin_pad");
- strcpy(Config.Pad2, "builtin_pad");
- Config.PsxAuto = 1;
-
- snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "." PATCHES_DIR);
-/*
- // switch to plugin dotdir
- // this lets plugins work without modification!
- gchar *plugin_default_dir = g_build_filename(getenv("HOME"), PLUGINS_DIR, NULL);
- chdir(plugin_default_dir);
- g_free(plugin_default_dir);
-*/
-
if (cdfile)
set_cd_image(cdfile);
menu_init();
if (LoadPlugins() == -1) {
+ // FIXME: this recovery doesn't work, just delete bad config and bail out
+ // SysMessage("could not load plugins, retrying with defaults\n");
+ set_default_paths();
+ snprintf(path, sizeof(path), "." PCSX_DOT_DIR "%s", cfgfile_basename);
+ remove(path);
SysMessage("Failed loading plugins!");
return 1;
}
else
menu_loop();
+ pl_start_watchdog();
+
while (1)
{
+ stop = 0;
psxCpu->Execute();
menu_loop();
}
return 0;
+#endif
}
int SysInit() {
void OnFile_Exit() {
printf("OnFile_Exit\n");
+#ifndef MAEMO
menu_finish();
+#endif
plat_finish();
SysClose();
exit(0);