comparison romdb.c @ 2161:6a954675d634

Improved detection of bogus device headers
author Michael Pavone <pavone@retrodev.com>
date Tue, 24 May 2022 18:49:38 -0700
parents 2ed402b4c1fb
children 0bf077df45c3
comparison
equal deleted inserted replaced
2160:3f09312685e3 2161:6a954675d634
470 info.rom = rom; 470 info.rom = rom;
471 info.rom_size = rom_size; 471 info.rom_size = rom_size;
472 info.wants_cd = 0; 472 info.wants_cd = 0;
473 for (uint32_t offset = 0x190; offset < rom_size && offset < 0x1A0; offset++) 473 for (uint32_t offset = 0x190; offset < rom_size && offset < 0x1A0; offset++)
474 { 474 {
475 if (rom[offset] == 'F') { 475 uint8_t invalid = 0;
476 // probably a codemasters game with a garbage header 476 switch(rom[offset])
477 {
478 case 'J':
479 case '6':
480 case '0':
481 case 'A':
482 case '4':
483 case 'G':
484 case 'L':
485 case 'M':
486 case 'B':
487 case 'K':
488 case 'R':
489 case 'D':
490 //valid device letter
491 //TODO: do something with these
477 break; 492 break;
478 } 493 case 'F':
479 if (rom[offset] == 'C') { 494 case 'T':
495 case 'P':
496 //unreleased peripheral, probably garbage
497 invalid = 1;
498 break;
499 case 'C':
480 info.wants_cd = 1; 500 info.wants_cd = 1;
501 break;
502 default:
503 invalid = 1;
504 }
505 if (invalid) {
506 info.wants_cd = 0;
481 break; 507 break;
482 } 508 }
483 } 509 }
484 add_memmap_header(&info, rom, rom_size, base_map, base_chunks); 510 add_memmap_header(&info, rom, rom_size, base_map, base_chunks);
485 info.port1_override = info.port2_override = info.ext_override = info.mouse_mode = NULL; 511 info.port1_override = info.port2_override = info.ext_override = info.mouse_mode = NULL;