Mercurial > repos > blastem
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; |