Mercurial > repos > blastem
changeset 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 | 5083bc84fd84 |
children | 5b308c7b098c |
files | genesis.c |
diffstat | 1 files changed, 17 insertions(+), 0 deletions(-) [+] |
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);