diff --git a/trunk/src/drivers/win/debugger.cpp b/trunk/src/drivers/win/debugger.cpp index a2f06cae..71c3ec49 100644 --- a/trunk/src/drivers/win/debugger.cpp +++ b/trunk/src/drivers/win/debugger.cpp @@ -1385,7 +1385,8 @@ BOOL CALLBACK IDC_DEBUGGER_DISASSEMBLY_WndProc(HWND hwndDlg, UINT uMsg, WPARAM w if (i >= 0x8000) { dotdot[0] = 0; - if (!(ptr = iNesShortFName())) + ptr = iNesShortFName(); + if (!ptr) ptr = "..."; if (strlen(ptr) > 60) strcpy(dotdot, "..."); diff --git a/trunk/src/drivers/win/debuggersp.cpp b/trunk/src/drivers/win/debuggersp.cpp index 719f4e00..525ce55c 100644 --- a/trunk/src/drivers/win/debuggersp.cpp +++ b/trunk/src/drivers/win/debuggersp.cpp @@ -19,6 +19,7 @@ */ #include "common.h" +#include "utils/xstring.h" #include "debuggersp.h" #include "debugger.h" #include "../../fceu.h" @@ -549,7 +550,7 @@ void loadNameFiles() free(ramBankNames); // The NL file for the RAM addresses has the name nesrom.nes.ram.nl - strcpy(NLfilename, LoadedRomFName); + strcpy(NLfilename, mass_replace(LoadedRomFName, "|", ".").c_str()); strcat(NLfilename, ".ram.nl"); // Load the address descriptions for the RAM addresses @@ -568,7 +569,7 @@ void loadNameFiles() lastBank = cb; // Get the name of the NL file - sprintf(NLfilename, "%s.%X.nl", LoadedRomFName, lastBank); + sprintf(NLfilename, "%s.%X.nl", mass_replace(LoadedRomFName, "|", ".").c_str(), lastBank); if (lastBankNames) freeList(lastBankNames); @@ -591,7 +592,7 @@ void loadNameFiles() loadedBank = cb; // Get the name of the NL file - sprintf(NLfilename, "%s.%X.nl", LoadedRomFName, loadedBank); + sprintf(NLfilename, "%s.%X.nl", mass_replace(LoadedRomFName, "|", ".").c_str(), loadedBank); if (loadedBankNames) freeList(loadedBankNames); diff --git a/trunk/src/drivers/win/pref.cpp b/trunk/src/drivers/win/pref.cpp index 801a28b9..f85fba00 100644 --- a/trunk/src/drivers/win/pref.cpp +++ b/trunk/src/drivers/win/pref.cpp @@ -157,7 +157,7 @@ int storeHexPreferences(FILE* f) * @param romname Name of the ROM * @return 0 on success or an error code. **/ -int storePreferences(char* romname) +int storePreferences(const char* romname) { if (debuggerSaveLoadDEBFiles == false) { @@ -197,7 +197,7 @@ int storePreferences(char* romname) */ filename = (char*)malloc(strlen(romname) + 5); - strcpy(filename, mass_replace(romname, "|", ".").c_str()); //convert | to . for archive filenames + strcpy(filename, romname); strcat(filename, ".deb"); f = fopen(filename, "wb"); @@ -380,7 +380,7 @@ int loadHexPreferences(FILE* f) * @param romname Name of the active ROM file * @return 0 or an error code. **/ -int loadPreferences(char* romname) +int loadPreferences(const char* romname) { if (debuggerSaveLoadDEBFiles == false) { return 0; @@ -394,7 +394,7 @@ int loadPreferences(char* romname) // Get the name of the preferences file char* filename = (char*)malloc(strlen(romname) + 5); - strcpy(filename, mass_replace(romname, "|", ".").c_str()); //convert | to . for archive filenames + strcpy(filename, romname); strcat(filename, ".deb"); f = fopen(filename, "rb"); diff --git a/trunk/src/drivers/win/pref.h b/trunk/src/drivers/win/pref.h index 37c55fa5..a2391f83 100644 --- a/trunk/src/drivers/win/pref.h +++ b/trunk/src/drivers/win/pref.h @@ -23,6 +23,6 @@ extern int myNumWPs; extern bool inDebugger; -int storePreferences(char* romname); -int loadPreferences(char* romname); +int storePreferences(const char* romname); +int loadPreferences(const char* romname); void DoDebuggerDataReload(); diff --git a/trunk/src/fceu.cpp b/trunk/src/fceu.cpp index 41a3daa1..4096664a 100644 --- a/trunk/src/fceu.cpp +++ b/trunk/src/fceu.cpp @@ -45,6 +45,7 @@ #include "ines.h" #ifdef WIN32 #include "drivers/win/pref.h" +#include "utils/xstring.h" extern void CDLoggerROMClosed(); extern void CDLoggerROMChanged(); @@ -155,10 +156,8 @@ static void FCEU_CloseGame(void) #ifdef WIN32 extern char LoadedRomFName[2048]; - if (storePreferences(LoadedRomFName)) - { + if (storePreferences(mass_replace(LoadedRomFName, "|", ".").c_str())) FCEUD_PrintError("Couldn't store debugging data"); - } CDLoggerROMClosed(); #endif @@ -396,8 +395,7 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen //---------- //attempt to open the files FCEUFILE *fp; - - FCEU_printf("Loading %s...\n\n", name); + char fullname[2048]; // this name contains both archive name and ROM file name const char* romextensions[] = { "nes", "fds", 0 }; fp = FCEU_fopen(name, 0, "rb", 0, -1, romextensions); @@ -407,16 +405,21 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen if (!silent) FCEU_PrintError("Error opening \"%s\"!", name); return 0; + } else if (fp->archiveFilename != "") + { + strcpy(fullname, fp->archiveFilename.c_str()); + strcat(fullname, "|"); + strcat(fullname, fp->filename.c_str()); + } else + { + strcpy(fullname, name); } - GetFileBase(fp->filename.c_str()); - //--------- - //file opened ok. start loading. - + FCEU_printf("Loading %s...\n\n", fullname); + GetFileBase(fp->filename.c_str()); ResetGameLoaded(); - - //reset parameters so theyre cleared just in case a format's loader doesnt know to do the clearing + //reset parameters so they're cleared just in case a format's loader doesn't know to do the clearing MasterRomInfoParams = TMasterRomInfoParams(); if (!AutosaveStatus) @@ -429,7 +432,8 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen memset(GameInfo, 0, sizeof(FCEUGI)); GameInfo->filename = strdup(fp->filename.c_str()); - if (fp->archiveFilename != "") GameInfo->archiveFilename = strdup(fp->archiveFilename.c_str()); + if (fp->archiveFilename != "") + GameInfo->archiveFilename = strdup(fp->archiveFilename.c_str()); GameInfo->archiveCount = fp->archiveCount; GameInfo->soundchan = 0; @@ -445,13 +449,13 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen bool FCEUXLoad(const char *name, FCEUFILE * fp); /*if(FCEUXLoad(name,fp)) goto endlseq;*/ - if (iNESLoad(name, fp, OverwriteVidMode)) + if (iNESLoad(fullname, fp, OverwriteVidMode)) goto endlseq; - if (NSFLoad(name, fp)) + if (NSFLoad(fullname, fp)) goto endlseq; - if (UNIFLoad(name, fp)) + if (UNIFLoad(fullname, fp)) goto endlseq; - if (FDSLoad(name, fp)) + if (FDSLoad(fullname, fp)) goto endlseq; if (!silent) @@ -472,7 +476,7 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen extern char LoadedRomFName[2048]; extern int loadDebugDataFailed; - if ((loadDebugDataFailed = loadPreferences(LoadedRomFName))) + if ((loadDebugDataFailed = loadPreferences(mass_replace(LoadedRomFName, "|", ".").c_str()))) if (!silent) FCEU_printf("Couldn't load debugging data.\n"); diff --git a/trunk/src/ines.cpp b/trunk/src/ines.cpp index d42f9b51..61a51913 100644 --- a/trunk/src/ines.cpp +++ b/trunk/src/ines.cpp @@ -949,8 +949,10 @@ int iNesSaveAs(char* name) char *iNesShortFName() { char *ret; - if (!(ret = strrchr(LoadedRomFName, '\\'))) { - if (!(ret = strrchr(LoadedRomFName, '/'))) return 0; + if (!(ret = strrchr(LoadedRomFName, '\\'))) + { + if (!(ret = strrchr(LoadedRomFName, '/'))) + return 0; } return ret + 1; }