Mercurial > repos > blastem
diff genesis.c @ 2267:94cca8b8429e
Use byte in security code for region identification for Sega/Mega CD discs
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 24 Dec 2022 20:23:05 -0800 |
parents | 74112041b2c7 |
children | 3ef80963c2a7 |
line wrap: on
line diff
--- a/genesis.c Sat Dec 24 14:02:14 2022 -0800 +++ b/genesis.c Sat Dec 24 20:23:05 2022 -0800 @@ -2269,6 +2269,23 @@ { tern_node *rom_db = get_rom_db(); rom_info info = configure_rom(rom_db, media->buffer, media->size, NULL, 0, base_map, base_chunks); + if (media->size > 0x20B) { + //Use a byte in the security code region that's unique across all 3 regions + //since it's more reliable than the official header field for this + uint8_t *bytes = media->buffer; + switch (bytes[0x20B]) + { + case 0x7A: + info.regions = REGION_U; + break; + case 0xA1: + info.regions = REGION_J; + break; + case 0x64: + info.regions = REGION_E; + break; + } + } segacd_context *cd = alloc_configure_segacd(media, system_opts, force_region, &info); genesis_context *gen = shared_init(system_opts, &info, force_region);