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)