void CreateSourceFolders(int parent_index) { int i,jj; int nGames = GetNumGames(); int start_folder = numFolders; LPTREEFOLDER lpFolder = treeFolders[parent_index]; // no games in top level folder SetAllBits(lpFolder->m_lpGameBits,FALSE); for (jj = 0; jj < nGames; jj++) { const char *s = GetDriverFilename(jj); if (s == NULL || s[0] == '\0') continue; // look for an extant source treefolder for this game // (likely to be the previous one, so start at the end) for (i=numFolders-1;i>=start_folder;i--) { if (strcmp(treeFolders[i]->m_lpTitle,s) == 0) { AddGame(treeFolders[i],jj); break; } } if (i == start_folder-1) { // nope, it's a source file we haven't seen before, make it. LPTREEFOLDER lpTemp; lpTemp = NewFolder(s, next_folder_id++, parent_index, IDI_SOURCE, GetFolderFlags(numFolders)); AddFolder(lpTemp); AddGame(lpTemp,jj); } } }
int load_driver_driverinfo(const game_driver *drv, char *buffer, int bufsize, int filenum) { int drivinfo = 0; char source_file[40]; char tmp[100]; std::string temp = core_filename_extract_base(drv->source_file); strcpy(source_file, temp.c_str()); *buffer = 0; if (filenum) snprintf(filename, ARRAY_LENGTH(filename), "%s\\messinfo.dat", GetDatsDir()); else snprintf(filename, ARRAY_LENGTH(filename), "%s\\mameinfo.dat", GetDatsDir()); /* Print source code file */ snprintf(tmp, ARRAY_LENGTH(tmp), "\n\nSOURCE: %s\n\n", source_file); strcat(buffer, tmp); /* Try to open mameinfo datafile - driver section*/ if (ParseOpen(filename)) { if (filenum) { /* create index if necessary */ if (messdriv_idx) drivinfo = 1; else drivinfo = (index_datafile (&messdriv_idx, 1) != 0); /* load informational text (append) */ if (messdriv_idx) { int len = strlen(buffer); int err = load_datafile_text(drv, buffer + len, bufsize - len, messdriv_idx, DATAFILE_TAG_DRIV, 1, 1); if (err) drivinfo = 0; } } else { /* create index if necessary */ if (driv_idx) drivinfo = 1; else drivinfo = (index_datafile (&driv_idx, 1) != 0); /* load informational text (append) */ if (driv_idx) { int len = strlen(buffer); int err = load_datafile_text(drv, buffer + len, bufsize - len, driv_idx, DATAFILE_TAG_DRIV, 1, 1); if (err) drivinfo = 0; } } ParseClose(); } strcat(buffer, "\nGAMES SUPPORTED:\n"); for (int i = 0; i < driver_list::total(); i++) { if (!strcmp(source_file, GetDriverFilename(i)) && !(DriverIsBios(i))) { strcat(buffer, driver_list::driver(i).description); strcat(buffer,"\n"); } } strcat(buffer, "\n\n"); return (drivinfo == 0); }