diff --git a/Makefile b/Makefile index 39fd4a4c5e..5dde2d10b3 100644 --- a/Makefile +++ b/Makefile @@ -47,7 +47,7 @@ ifeq ($(HAVE_DL), 1) LIBS += -ldl endif -CFLAGS = -Wall -O3 -std=gnu99 -I. +CFLAGS = -Wall -O3 -g -std=gnu99 -I. all: $(TARGET) config.mk diff --git a/dynamic.c b/dynamic.c index d819887c48..0b359412f6 100644 --- a/dynamic.c +++ b/dynamic.c @@ -61,6 +61,7 @@ void (*psnes_term)(void); #ifdef HAVE_DL static void load_dynamic(void) { + SSNES_LOG("Loading dynamic libsnes from: \"%s\"\n", g_settings.libsnes); lib_handle = dlopen(g_settings.libsnes, RTLD_LAZY); if (!lib_handle) { diff --git a/general.h b/general.h index 9ef3dfa4a7..af97152d12 100644 --- a/general.h +++ b/general.h @@ -80,6 +80,7 @@ struct global FILE *rom_file; char savefile_name_srm[256]; char config_path[256]; + char basename[256]; }; void parse_config(void); diff --git a/ssnes.c b/ssnes.c index 465cbc3be9..8cbac9190e 100644 --- a/ssnes.c +++ b/ssnes.c @@ -259,12 +259,8 @@ static void parse_input(int argc, char *argv[]) strcpy(tmp, argv[optind]); char *dst = strrchr(tmp, '.'); if (dst) - { *dst = '\0'; - psnes_set_cartridge_basename(tmp); - } - else - psnes_set_cartridge_basename(tmp); + strncpy(g_extern.basename, tmp, sizeof(g_extern.basename) - 1); SSNES_LOG("Opening file: \"%s\"\n", argv[optind]); g_extern.rom_file = fopen(argv[optind], "rb"); @@ -288,10 +284,12 @@ int main(int argc, char *argv[]) { parse_input(argc, argv); parse_config(); - init_dlsym(); psnes_init(); + if (strlen(g_extern.basename) > 0) + psnes_set_cartridge_basename(g_extern.basename); + SSNES_LOG("Version of libsnes API: %u.%u\n", psnes_library_revision_major(), psnes_library_revision_minor()); void *rom_buf; ssize_t rom_len = 0; diff --git a/ssnes.cfg b/ssnes.cfg index f2c70d5a7d..b9d5f9aaba 100644 --- a/ssnes.cfg +++ b/ssnes.cfg @@ -1,5 +1,8 @@ ##### Config file for SSNES +## If enabled, load libsnes from a dynamic location. +# libsnes_path = "/path/to/libsnes.so" + #### Video # Windowed xscale and yscale (Real x res: 296 * xscale, real y scale: 224 * xscale)