Mercurial > repos > blastem
changeset 1195:b8ba086b96ed
Improved parsing of cartridge region header
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 24 Jan 2017 21:26:46 -0800 |
parents | 1ad0ec7e3939 |
children | 74e77aec9004 |
files | romdb.c |
diffstat | 1 files changed, 22 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/romdb.c Tue Jan 24 20:53:10 2017 -0800 +++ b/romdb.c Tue Jan 24 21:26:46 2017 -0800 @@ -441,18 +441,36 @@ } } -char *region_chars = "UB4JEA"; -uint8_t region_bits[] = {REGION_U, REGION_U, REGION_U, REGION_J, REGION_E, REGION_E}; +char *region_chars = "JUEW"; +uint8_t region_bits[] = {REGION_J, REGION_U, REGION_E, REGION_J|REGION_U|REGION_E}; uint8_t translate_region_char(uint8_t c) -{ +{ for (int i = 0; i < sizeof(region_bits); i++) { if (c == region_chars[i]) { return region_bits[i]; } } - return 0; + uint8_t bin_region = 0; + if (c >= '0' && c <= '9') { + bin_region = c - '0'; + } else if (c >= 'A' && c <= 'F') { + bin_region = c - 'A' + 0xA; + } else if (c >= 'a' && c <= 'f') { + bin_region = c - 'a' + 0xA; + } + uint8_t ret = 0; + if (bin_region & 8) { + ret |= REGION_E; + } + if (bin_region & 4) { + ret |= REGION_U; + } + if (bin_region & 1) { + ret |= REGION_J; + } + return ret; } uint8_t get_header_regions(uint8_t *rom)