bool Save_Watches() { Rom_Name = path.GetRomName(); strncpy(Str_Tmp,Rom_Name.c_str(),512); strcat(Str_Tmp,".wch"); if(Change_File_S(Str_Tmp, Gens_Path, "Save Watches", "DeSmuME Watchlist\0*.wch\0All Files\0*.*\0\0", "wch", RamWatchHWnd)) { FILE *WatchFile = fopen(Str_Tmp,"r+b"); if (!WatchFile) WatchFile = fopen(Str_Tmp,"w+b"); fputc('\n',WatchFile); strcpy(currentWatch,Str_Tmp); RWAddRecentFile(currentWatch); sprintf(Str_Tmp,"%d\n",WatchCount); fputs(Str_Tmp,WatchFile); const char DELIM = '\t'; for (int i = 0; i < WatchCount; i++) { sprintf(Str_Tmp,"%05X%c%08X%c%c%c%c%c%d%c%s\n",i,DELIM,rswatches[i].Address,DELIM,rswatches[i].Size,DELIM,rswatches[i].Type,DELIM,rswatches[i].WrongEndian,DELIM,rswatches[i].comment); fputs(Str_Tmp,WatchFile); } fclose(WatchFile); RWfileChanged=false; return true; } return false; }
int Load_Watches(int clear, const char* filename) { const char DELIM = '\t'; FILE* WatchFile = fopen(filename,"rb"); struct AddressWatcher Temp; char mode; int i; int WatchAdd; if (!WatchFile) { MessageBox(MESSAGEBOXPARENT,(LPCWSTR)"Error opening file.",(LPCWSTR)"ERROR",MB_OK); return 0; } if(clear) { if(!ResetWatches()) { fclose(WatchFile); return 0; } } strcpy(currentWatch,filename); RWAddRecentFile(currentWatch); fgets(Str_Tmp,1024,WatchFile); sscanf(Str_Tmp,"%c%*s",&mode); /* if ((mode == '1' && !(SegaCD_Started)) || (mode == '2' && !(_32X_Started))) { char Device[8]; strcpy(Device,(mode > '1')?"32X":"SegaCD"); sprintf(Str_Tmp,"Warning: %s not started. \nWatches for %s addresses will be ignored.",Device,Device); MessageBox(MESSAGEBOXPARENT,Str_Tmp,"Possible Device Mismatch",MB_OK); }*/ fgets(Str_Tmp,1024,WatchFile); sscanf(Str_Tmp,"%d%*s",&WatchAdd); WatchAdd+=WatchCount; for (i = WatchCount; i < WatchAdd; i++) { char *Comment; while (i < 0) i++; do { fgets(Str_Tmp,1024,WatchFile); } while (Str_Tmp[0] == '\n'); sscanf(Str_Tmp,"%*05X%*c%08X%*c%c%*c%c%*c%d",&(Temp.Address),&(Temp.Size),&(Temp.Type),&(Temp.WrongEndian)); Temp.WrongEndian = 0; Comment = strrchr(Str_Tmp,DELIM) + 1; *strrchr(Comment,'\n') = '\0'; InsertWatch(&Temp,Comment); } fclose(WatchFile); if (RamWatchHWnd) ListView_SetItemCount(GetDlgItem(RamWatchHWnd,IDC_WATCHLIST),WatchCount); RWfileChanged=0; return 1; }
int Save_Watches() { const char DELIM = '\t'; int i; strncpy(Str_Tmp,Rom_Name,512); strcat(Str_Tmp,".wch"); if(Change_File_S(Str_Tmp, Gens_Path, "Save Watches", "GENs Watchlist\0*.wch\0All Files\0*.*\0\0", "wch", RamWatchHWnd)) { FILE *WatchFile; WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)Str_Tmp, -1, Str_Tmp, sizeof(Str_Tmp), NULL, NULL); WatchFile = fopen(Str_Tmp,"r+b"); if (!WatchFile) WatchFile = fopen(Str_Tmp,"w+b"); // fputc(SegaCD_Started?'1':(_32X_Started?'2':'0'),WatchFile); fputc('\n',WatchFile); strcpy(currentWatch,Str_Tmp); RWAddRecentFile(currentWatch); sprintf(Str_Tmp,"%d\n",WatchCount); fputs(Str_Tmp,WatchFile); for (i = 0; i < WatchCount; i++) { sprintf(Str_Tmp,"%05X%c%08X%c%c%c%c%c%d%c%s\n",i,DELIM,rswatches[i].Address,DELIM,rswatches[i].Size,DELIM,rswatches[i].Type,DELIM,rswatches[i].WrongEndian,DELIM,rswatches[i].comment); fputs(Str_Tmp,WatchFile); } fclose(WatchFile); RWfileChanged=0; //TODO: Add to recent list function call here return 1; } return 0; }
bool Save_Watches() { char* slash = std::max(strrchr(Config::exefilename, '\\'), strrchr(Config::exefilename, '/')); strcpy(Str_Tmp_RW,slash ? slash+1 : Config::exefilename); char* dot = strrchr(Str_Tmp_RW, '.'); if(dot) *dot = 0; strcat(Str_Tmp_RW,".wch"); if(Change_File_S(Str_Tmp_RW, Config::thisprocessPath, "Save Watches", "Watchlist\0*.wch\0All Files\0*.*\0\0", "wch", RamWatchHWnd)) { FILE *WatchFile = fopen(Str_Tmp_RW,"r+b"); if(!WatchFile) WatchFile = fopen(Str_Tmp_RW,"w+b"); //fputc(SegaCD_Started?'1':(_32X_Started?'2':'0'),WatchFile); fputc('0',WatchFile); fputc('\n',WatchFile); strcpy(currentWatch,Str_Tmp_RW); RWAddRecentFile(currentWatch); sprintf(Str_Tmp_RW,"%d\n",WatchCount); fputs(Str_Tmp_RW,WatchFile); const char DELIM = '\t'; for (int i = 0; i < WatchCount; i++) { sprintf(Str_Tmp_RW,"%05X%c%08X%c%c%c%c%c%d%c%s\n",i,DELIM,rswatches[i].Address,DELIM,rswatches[i].Size,DELIM,rswatches[i].Type,DELIM,rswatches[i].WrongEndian,DELIM,rswatches[i].comment); fputs(Str_Tmp_RW,WatchFile); } fclose(WatchFile); RWfileChanged=false; //TODO: Add to recent list function call here return true; } return false; }
bool Load_Watches(bool clear, const char* filename) { const char DELIM = '\t'; FILE* WatchFile = fopen(filename,"rb"); if(!WatchFile) { MessageBox(MESSAGEBOXPARENT,"Error opening file.","ERROR",MB_OK); return false; } if(clear) { if(!ResetWatches()) { fclose(WatchFile); return false; } } strcpy(currentWatch,filename); RWAddRecentFile(currentWatch); AddressWatcher Temp = {}; char mode; fgets(Str_Tmp_RW,1024,WatchFile); sscanf(Str_Tmp_RW,"%c%*s",&mode); //if((mode == '1' && !(SegaCD_Started)) || (mode == '2' && !(_32X_Started))) //{ // char Device[8]; // strcpy(Device,(mode > '1')?"32X":"SegaCD"); // sprintf(Str_Tmp_RW,"Warning: %s not started. \nWatches for %s addresses will be ignored.",Device,Device); // MessageBox(MESSAGEBOXPARENT,Str_Tmp_RW,"Possible Device Mismatch",MB_OK); //} int WatchAdd; fgets(Str_Tmp_RW,1024,WatchFile); sscanf(Str_Tmp_RW,"%d%*s",&WatchAdd); WatchAdd += WatchCount; for (int i = WatchCount; i < WatchAdd; i++) { while(i < 0) i++; do { fgets(Str_Tmp_RW,1024,WatchFile); } while(Str_Tmp_RW[0] == '\n'); int dummy_wrong_endian; sscanf(Str_Tmp_RW,"%*05X%*c%08X%*c%c%*c%c%*c%d",&(Temp.Address),&(Temp.Size),&(Temp.Type),&dummy_wrong_endian); Temp.WrongEndian = false; char* Comment = strrchr(Str_Tmp_RW,DELIM) + 1; if(Comment == (char*)NULL + 1) continue; char* newline = strrchr(Comment,'\n'); if(newline) *newline = '\0'; InsertWatch(Temp,Comment); } fclose(WatchFile); if(RamWatchHWnd) ListView_SetItemCount(GetDlgItem(RamWatchHWnd,IDC_WATCHLIST),WatchCount); RWfileChanged=false; return true; }
bool Load_Watches(bool clear, const char* filename) { const char DELIM = '\t'; FILE* WatchFile = fopen(filename,"rb"); if (!WatchFile) { MessageBox(MESSAGEBOXPARENT,"Error opening file.","ERROR",MB_OK); return false; } if(clear) { if(!ResetWatches()) { fclose(WatchFile); return false; } } strcpy(currentWatch,filename); RWAddRecentFile(currentWatch); AddressWatcher Temp; char mode; fgets(Str_Tmp,1024,WatchFile); sscanf(Str_Tmp,"%c%*s",&mode); int WatchAdd; fgets(Str_Tmp,1024,WatchFile); sscanf(Str_Tmp,"%d%*s",&WatchAdd); WatchAdd+=WatchCount; for (int i = WatchCount; i < WatchAdd; i++) { while (i < 0) i++; do { fgets(Str_Tmp,1024,WatchFile); } while (Str_Tmp[0] == '\n'); sscanf(Str_Tmp,"%*05X%*c%08X%*c%c%*c%c%*c%d",&(Temp.Address),&(Temp.Size),&(Temp.Type),&(Temp.WrongEndian)); Temp.WrongEndian = 0; char *Comment = strrchr(Str_Tmp,DELIM) + 1; *strrchr(Comment,'\n') = '\0'; InsertWatch(Temp,Comment); } fclose(WatchFile); if (RamWatchHWnd) { ListView_SetItemCount(GetDlgItem(RamWatchHWnd,IDC_WATCHLIST),WatchCount); RefreshWatchListSelectedCountControlStatus(RamWatchHWnd); } RWfileChanged=false; return true; }
void OpenRWRecentFile(int memwRFileNumber) { if(!ResetWatches()) return; int rnum = memwRFileNumber; if ((unsigned int)rnum >= MAX_RECENT_WATCHES) return; //just in case char* x; while(true) { x = rw_recent_files[rnum]; if (!*x) return; //If no recent files exist just return. Useful for Load last file on startup (or if something goes screwy) if (rnum) //Change order of recent files if not most recent { RWAddRecentFile(x); rnum = 0; } else { break; } } strcpy(currentWatch,x); strcpy(Str_Tmp,currentWatch); //loadwatches here FILE *WatchFile = fopen(Str_Tmp,"rb"); if (!WatchFile) { int answer = MessageBox(MESSAGEBOXPARENT,"Error opening file.","ERROR",MB_OKCANCEL); if (answer == IDOK) { rw_recent_files[rnum][0] = '\0'; //Clear file from list if (rnum) //Update the ramwatch list RWAddRecentFile(rw_recent_files[0]); else RWAddRecentFile(rw_recent_files[1]); } return; } const char DELIM = '\t'; AddressWatcher Temp; char mode; fgets(Str_Tmp,1024,WatchFile); sscanf(Str_Tmp,"%c%*s",&mode); int WatchAdd; fgets(Str_Tmp,1024,WatchFile); sscanf(Str_Tmp,"%d%*s",&WatchAdd); WatchAdd+=WatchCount; for (int i = WatchCount; i < WatchAdd; i++) { while (i < 0) i++; do { fgets(Str_Tmp,1024,WatchFile); } while (Str_Tmp[0] == '\n'); sscanf(Str_Tmp,"%*05X%*c%08X%*c%c%*c%c%*c%d",&(Temp.Address),&(Temp.Size),&(Temp.Type),&(Temp.WrongEndian)); Temp.WrongEndian = 0; char *Comment = strrchr(Str_Tmp,DELIM) + 1; *strrchr(Comment,'\n') = '\0'; InsertWatch(Temp,Comment); } fclose(WatchFile); if (RamWatchHWnd) ListView_SetItemCount(GetDlgItem(RamWatchHWnd,IDC_WATCHLIST),WatchCount); RWfileChanged=false; return; }
void OpenRWRecentFile(int memwRFileNumber) { const char DELIM = '\t'; struct AddressWatcher Temp; char mode; int i; int WatchAdd; FILE *WatchFile; char* x; int rnum; if(!ResetWatches()) return; rnum = memwRFileNumber; if ((unsigned int)rnum >= MAX_RECENT_WATCHES) return; //just in case while(1) { x = rw_recent_files[rnum]; if (!*x) return; //If no recent files exist just return. Useful for Load last file on startup (or if something goes screwy) if (rnum) //Change order of recent files if not most recent { RWAddRecentFile(x); rnum = 0; } else { break; } } strcpy(currentWatch,x); strcpy(Str_Tmp,currentWatch); //loadwatches here WatchFile = fopen(Str_Tmp,"rb"); if (!WatchFile) { int answer = MessageBox(MESSAGEBOXPARENT,(LPCWSTR)"Error opening file.",(LPCWSTR)"ERROR",MB_OKCANCEL); if (answer == IDOK) { rw_recent_files[rnum][0] = '\0'; //Clear file from list if (rnum) //Update the ramwatch list RWAddRecentFile(rw_recent_files[0]); else RWAddRecentFile(rw_recent_files[1]); } return; } fgets(Str_Tmp,1024,WatchFile); sscanf(Str_Tmp,"%c%*s",&mode); /* if ((mode == '1' && !(SegaCD_Started)) || (mode == '2' && !(_32X_Started))) { char Device[8]; strcpy(Device,(mode > '1')?"32X":"SegaCD"); sprintf(Str_Tmp,"Warning: %s not started. \nWatches for %s addresses will be ignored.",Device,Device); MessageBox(MESSAGEBOXPARENT,Str_Tmp,"Possible Device Mismatch",MB_OK); }*/ fgets(Str_Tmp,1024,WatchFile); sscanf(Str_Tmp,"%d%*s",&WatchAdd); WatchAdd+=WatchCount; for (i = WatchCount; i < WatchAdd; i++) { char *Comment; while (i < 0) i++; do { fgets(Str_Tmp,1024,WatchFile); } while (Str_Tmp[0] == '\n'); sscanf(Str_Tmp,"%*05X%*c%08X%*c%c%*c%c%*c%d",&(Temp.Address),&(Temp.Size),&(Temp.Type),&(Temp.WrongEndian)); Temp.WrongEndian = 0; Comment = strrchr(Str_Tmp,DELIM) + 1; *strrchr(Comment,'\n') = '\0'; InsertWatch(&Temp,Comment); } fclose(WatchFile); if (RamWatchHWnd) ListView_SetItemCount(GetDlgItem(RamWatchHWnd,IDC_WATCHLIST),WatchCount); RWfileChanged=0; return; }