Mercurial > repos > blastem
diff romdb.c @ 2072:cc13c100b027
Merge Sega CD branch now that it sort of works
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 30 Jan 2022 22:29:29 -0800 |
parents | 8ee7ecbf3f21 |
children | 0407d812cb4a |
line wrap: on
line diff
--- a/romdb.c Sat Jan 01 18:54:46 2022 -0800 +++ b/romdb.c Sun Jan 30 22:29:29 2022 -0800 @@ -38,11 +38,14 @@ return "SRAM"; } -tern_node *load_rom_db() +tern_node *get_rom_db() { - tern_node *db = parse_bundled_config("rom.db"); + static tern_node *db; if (!db) { - fatal_error("Failed to load ROM DB\n"); + db = parse_bundled_config("rom.db"); + if (!db) { + fatal_error("Failed to load ROM DB\n"); + } } return db; } @@ -472,6 +475,19 @@ info.rom_size = rom_size; add_memmap_header(&info, rom, rom_size, base_map, base_chunks); info.port1_override = info.port2_override = info.ext_override = info.mouse_mode = NULL; + info.wants_cd = 0; + for (uint32_t offset = 0x190; offset < rom_size && offset < 0x1A0; offset++) + { + if (rom[offset] == 'F') { + // probably a codemasters game with a garbage header + break; + } + if (rom[offset] == 'C') { + info.wants_cd = 1; + break; + } + } + return info; } @@ -1052,6 +1068,7 @@ info.port1_override = info.port2_override = info.ext_override = NULL; } info.mouse_mode = tern_find_ptr(entry, "mouse_mode"); + info.wants_cd = !strcmp(tern_find_ptr_default(entry, "wants_cd", "no"), "yes"); return info; }