static void ProcessNextSample() { int retval; TCHAR buffer[200]; retval = MameUIVerifySampleSet(sample_index); switch (retval) { case CORRECT: if (DriverUsesSamples(sample_index)) { samples_correct++; _stprintf(buffer, TEXT("%i"), samples_correct); SendDlgItemMessage(hAudit, IDC_SAMPLES_CORRECT, WM_SETTEXT, 0, (LPARAM)buffer); _stprintf(buffer, TEXT("%i"), samples_correct + samples_incorrect); SendDlgItemMessage(hAudit, IDC_SAMPLES_TOTAL, WM_SETTEXT, 0, (LPARAM)buffer); break; } case NOTFOUND: break; case INCORRECT: samples_incorrect++; _stprintf(buffer, TEXT("%i"), samples_incorrect); SendDlgItemMessage(hAudit, IDC_SAMPLES_INCORRECT, WM_SETTEXT, 0, (LPARAM)buffer); _stprintf(buffer, TEXT("%i"), samples_correct + samples_incorrect); SendDlgItemMessage(hAudit, IDC_SAMPLES_TOTAL, WM_SETTEXT, 0, (LPARAM)buffer); break; } sample_index++; SendDlgItemMessage(hAudit, IDC_SAMPLES_PROGRESS, PBM_SETPOS, sample_index, 0); if (sample_index == driver_list_get_count(drivers)) { DetailsPrintf("Audit complete.\n"); SendDlgItemMessage(hAudit, IDCANCEL, WM_SETTEXT, 0, (LPARAM)TEXT("Close")); sample_index = -1; } }
static void ProcessNextRom() { int retval; TCHAR buffer[200]; retval = MameUIVerifyRomSet(rom_index); switch (retval) { case BEST_AVAILABLE: /* correct, incorrect or separate count? */ case CORRECT: roms_correct++; _stprintf(buffer, TEXT("%i"), roms_correct); SendDlgItemMessage(hAudit, IDC_ROMS_CORRECT, WM_SETTEXT, 0, (LPARAM)buffer); _stprintf(buffer, TEXT("%i"), roms_correct + roms_incorrect); SendDlgItemMessage(hAudit, IDC_ROMS_TOTAL, WM_SETTEXT, 0, (LPARAM)buffer); break; case NOTFOUND: break; case INCORRECT: roms_incorrect++; _stprintf(buffer, TEXT("%i"), roms_incorrect); SendDlgItemMessage(hAudit, IDC_ROMS_INCORRECT, WM_SETTEXT, 0, (LPARAM)buffer); _stprintf(buffer, TEXT("%i"), roms_correct + roms_incorrect); SendDlgItemMessage(hAudit, IDC_ROMS_TOTAL, WM_SETTEXT, 0, (LPARAM)buffer); break; } rom_index++; SendDlgItemMessage(hAudit, IDC_ROMS_PROGRESS, PBM_SETPOS, rom_index, 0); if (rom_index == driver_list_get_count(drivers)) { sample_index = 0; rom_index = -1; } }
int cli_info_listbrothers(core_options *options, const char *gamename) { UINT8 *didit = global_alloc_array_clear(UINT8, driver_list_get_count(drivers)); int drvindex, count = 0; astring filename; /* iterate over drivers */ for (drvindex = 0; drivers[drvindex] != NULL; drvindex++) if (!didit[drvindex] && mame_strwildcmp(gamename, drivers[drvindex]->name) == 0) { int matchindex; didit[drvindex] = TRUE; if (count > 0) mame_printf_info("\n"); mame_printf_info("%s ... other drivers in %s:\n", drivers[drvindex]->name, core_filename_extract_base(&filename, drivers[drvindex]->source_file, FALSE)->cstr()); /* now iterate again over drivers, finding those with the same source file */ for (matchindex = 0; drivers[matchindex]; matchindex++) if (matchindex != drvindex && strcmp(drivers[drvindex]->source_file, drivers[matchindex]->source_file) == 0) { const char *matchstring = (mame_strwildcmp(gamename, drivers[matchindex]->name) == 0) ? "-> " : " "; const game_driver *clone_of = driver_get_clone(drivers[matchindex]); if (clone_of != NULL && (clone_of->flags & GAME_IS_BIOS_ROOT) == 0) mame_printf_info("%s%-16s [%s]\n", matchstring, drivers[matchindex]->name, clone_of->name); else mame_printf_info("%s%s\n", matchstring, drivers[matchindex]->name); didit[matchindex] = TRUE; } count++; } /* return an error if none found */ global_free(didit); return (count > 0) ? MAMERR_NONE : MAMERR_NO_SUCH_GAME; }
static INT_PTR CALLBACK AuditWindowProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { static HANDLE hThread; static DWORD dwThreadID; DWORD dwExitCode; HWND hEdit; switch (Msg) { case WM_INITDIALOG: hAudit = hDlg; //RS 20030613 Set Bkg of RichEdit Ctrl hEdit = GetDlgItem(hAudit, IDC_AUDIT_DETAILS); if (hEdit != NULL) { SendMessage( hEdit, EM_SETBKGNDCOLOR, FALSE, GetSysColor(COLOR_BTNFACE) ); // MSH - Set to max SendMessage( hEdit, EM_SETLIMITTEXT, MAX_AUDITBOX_TEXT, 0 ); } SendDlgItemMessage(hDlg, IDC_ROMS_PROGRESS, PBM_SETRANGE, 0, MAKELPARAM(0, driver_list_get_count(drivers))); SendDlgItemMessage(hDlg, IDC_SAMPLES_PROGRESS, PBM_SETRANGE, 0, MAKELPARAM(0, driver_list_get_count(drivers))); bPaused = FALSE; bCancel = FALSE; rom_index = 0; hThread = CreateThread(NULL, 0, AuditThreadProc, hDlg, 0, &dwThreadID); return 1; case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: bPaused = FALSE; if (hThread) { bCancel = TRUE; if (GetExitCodeThread(hThread, &dwExitCode) && (dwExitCode == STILL_ACTIVE)) { PostMessage(hDlg, WM_COMMAND, wParam, lParam); return 1; } CloseHandle(hThread); } EndDialog(hDlg,0); break; case IDPAUSE: if (bPaused) { SendDlgItemMessage(hAudit, IDPAUSE, WM_SETTEXT, 0, (LPARAM)TEXT("Pause")); bPaused = FALSE; } else { SendDlgItemMessage(hAudit, IDPAUSE, WM_SETTEXT, 0, (LPARAM)TEXT("Continue")); bPaused = TRUE; } break; } return 1; } return 0; }
static struct DriversInfo* GetDriversInfo(int driver_index) { if (drivers_info == NULL) { int ndriver; drivers_info = (DriversInfo*)malloc(sizeof(struct DriversInfo) * driver_list_get_count(drivers)); for (ndriver = 0; ndriver < driver_list_get_count(drivers); ndriver++) { const game_driver *gamedrv = drivers[ndriver]; struct DriversInfo *gameinfo = &drivers_info[ndriver]; const rom_entry *region, *rom; windows_options pCurrentOpts; load_options(pCurrentOpts, OPTIONS_GLOBAL, driver_index); machine_config config(*gamedrv,pCurrentOpts); const rom_source *source; int num_speakers; gameinfo->isClone = (GetParentRomSetIndex(gamedrv) != -1); gameinfo->isBroken = ((gamedrv->flags & GAME_NOT_WORKING) != 0); gameinfo->supportsSaveState = ((gamedrv->flags & GAME_SUPPORTS_SAVE) != 0); gameinfo->isHarddisk = FALSE; gameinfo->isVertical = (gamedrv->flags & ORIENTATION_SWAP_XY) ? TRUE : FALSE; for (source = rom_first_source(config); source != NULL; source = rom_next_source(*source)) { for (region = rom_first_region(*source); region; region = rom_next_region(region)) { if (ROMREGION_ISDISKDATA(region)) gameinfo->isHarddisk = TRUE; } } gameinfo->hasOptionalBIOS = FALSE; if (gamedrv->rom != NULL) { for (rom = gamedrv->rom; !ROMENTRY_ISEND(rom); rom++) { if (ROMENTRY_ISSYSTEM_BIOS(rom)) { gameinfo->hasOptionalBIOS = TRUE; break; } } } num_speakers = numberOfSpeakers(&config); gameinfo->isStereo = (num_speakers > 1); gameinfo->screenCount = numberOfScreens(&config); gameinfo->isVector = isDriverVector(&config); // ((drv.video_attributes & VIDEO_TYPE_VECTOR) != 0); gameinfo->usesRoms = FALSE; for (source = rom_first_source(config); source != NULL; source = rom_next_source(*source)) { for (region = rom_first_region(*source); region; region = rom_next_region(region)) { for (rom = rom_first_file(region); rom; rom = rom_next_file(rom)) { gameinfo->usesRoms = TRUE; break; } } } gameinfo->usesSamples = FALSE; { const device_config_sound_interface *sound = NULL; const char * const * samplenames = NULL; for (bool gotone = config.m_devicelist.first(sound); gotone; gotone = sound->next(sound)) { if (sound->devconfig().type() == SAMPLES) { const samples_interface *intf = (const samples_interface *)sound->devconfig().static_config(); samplenames = intf->samplenames; if (samplenames != 0 && samplenames[0] != 0) { gameinfo->usesSamples = TRUE; break; } } } } gameinfo->usesTrackball = FALSE; gameinfo->usesLightGun = FALSE; if (gamedrv->ipt != NULL) { const input_port_config *port; ioport_list portlist; input_port_list_init(portlist, gamedrv->ipt, NULL, 0, FALSE, NULL); for (device_config *cfg = config.m_devicelist.first(); cfg != NULL; cfg = cfg->next()) { if (cfg->input_ports()!=NULL) { input_port_list_init(portlist, cfg->input_ports(), NULL, 0, FALSE, cfg); } } for (port = portlist.first(); port != NULL; port = port->next()) { const input_field_config *field; for (field = port->fieldlist; field != NULL; field = field->next) { UINT32 type; type = field->type; if (type == IPT_END) break; if (type == IPT_DIAL || type == IPT_PADDLE || type == IPT_TRACKBALL_X || type == IPT_TRACKBALL_Y || type == IPT_AD_STICK_X || type == IPT_AD_STICK_Y) gameinfo->usesTrackball = TRUE; if (type == IPT_LIGHTGUN_X || type == IPT_LIGHTGUN_Y) gameinfo->usesLightGun = TRUE; if (type == IPT_MOUSE_X || type == IPT_MOUSE_Y) gameinfo->usesMouse = TRUE; } } } } } return &drivers_info[driver_index]; }
void driver_list_get_approx_matches(const game_driver * const driverlist[], const char *name, int matches, const game_driver **list) { #undef rand int matchnum, drvnum; int *penalty; /* if no name, pick random entries */ if (name == NULL || name[0] == 0) { const game_driver **templist; int driver_count; int shufnum; /* allocate a temporary list */ templist = malloc_or_die(driver_list_get_count(driverlist) * sizeof(*templist)); /* build up a list of valid entries */ for (drvnum = driver_count = 0; driverlist[drvnum] != NULL; drvnum++) if ((driverlist[drvnum]->flags & GAME_NO_STANDALONE) == 0) templist[driver_count++] = driverlist[drvnum]; /* seed the RNG first */ srand(osd_ticks()); /* shuffle */ for (shufnum = 0; shufnum < 4 * driver_count; shufnum++) { int item1 = rand() % driver_count; int item2 = rand() % driver_count; const game_driver *temp; temp = templist[item1]; templist[item1] = templist[item2]; templist[item2] = temp; } /* copy out the first few entries */ for (matchnum = 0; matchnum < matches; matchnum++) list[matchnum] = templist[matchnum % driver_count]; free((void *)templist); return; } /* allocate some temp memory */ penalty = malloc_or_die(matches * sizeof(*penalty)); /* initialize everyone's states */ for (matchnum = 0; matchnum < matches; matchnum++) { penalty[matchnum] = 9999; list[matchnum] = NULL; } /* scan the entire drivers array */ for (drvnum = 0; driverlist[drvnum] != NULL; drvnum++) { int curpenalty, tmp; /* skip things that can't run */ if ((driverlist[drvnum]->flags & GAME_NO_STANDALONE) != 0) continue; /* pick the best match between driver name and description */ curpenalty = penalty_compare(name, driverlist[drvnum]->description); tmp = penalty_compare(name, driverlist[drvnum]->name); curpenalty = MIN(curpenalty, tmp); /* insert into the sorted table of matches */ for (matchnum = matches - 1; matchnum >= 0; matchnum--) { /* stop if we're worse than the current entry */ if (curpenalty >= penalty[matchnum]) break; /* as lng as this isn't the last entry, bump this one down */ if (matchnum < matches - 1) { penalty[matchnum + 1] = penalty[matchnum]; list[matchnum + 1] = list[matchnum]; } list[matchnum] = driverlist[drvnum]; penalty[matchnum] = curpenalty; } } /* free our temp memory */ free(penalty); }