changeset 2159:2ed402b4c1fb

Merge
author Michael Pavone <pavone@retrodev.com>
date Tue, 24 May 2022 09:11:12 -0700
parents bdd83b47d78a (current diff) 6f58af5bd6fa (diff)
children 3f09312685e3
files romdb.c
diffstat 3 files changed, 27 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lc8951.c	Tue May 24 09:10:54 2022 -0700
+++ b/lc8951.c	Tue May 24 09:11:12 2022 -0700
@@ -249,13 +249,13 @@
 				&& context->regs[HEAD3] < 3 && !(context->regs[STAT0] & (BIT_NOSYNC|BIT_ILSYNC))
 			) {
 
-				if (context->ctrl0 & (BIT_ORQ|BIT_PRQ)) {
+				if (context->ctrl0 & (BIT_WRRQ|BIT_ORQ|BIT_PRQ)) {
 					context->regs[STAT0] |= BIT_CRCOK;
 				}
 				context->regs[STAT1] = 0;
-				context->regs[STAT2] = 0x90;
+				context->regs[STAT2] = 0x10;
 			} else {
-				if (context->ctrl0 & (BIT_ORQ|BIT_PRQ)) {
+				if (context->ctrl0 & (BIT_WRRQ|BIT_ORQ|BIT_PRQ)) {
 					context->regs[STAT0] |= BIT_UCEBLK;
 				}
 				context->regs[STAT1] = 0xFF;
--- a/rom.db	Tue May 24 09:10:54 2022 -0700
+++ b/rom.db	Tue May 24 09:11:12 2022 -0700
@@ -1435,7 +1435,6 @@
 		200000 {
 			device SRAM
 			last 2FFFFF
-			mask FFFF
 		}
 		300000 {
 			device ROM
@@ -1444,3 +1443,20 @@
 		}
 	}
 }
+T-172036 {
+	name NHL '96
+	SRAM {
+		size 8192
+		bus odd
+	}
+	map {
+		0 {
+			device ROM
+			last 1FFFFF
+		}
+		200000 {
+			device SRAM
+			last 3FFFFF
+		}
+	}
+}
--- a/romdb.c	Tue May 24 09:10:54 2022 -0700
+++ b/romdb.c	Tue May 24 09:11:12 2022 -0700
@@ -776,30 +776,35 @@
 		process_sram_def(key, state);
 		map->buffer = state->info->save_buffer + offset;
 		map->flags = MMAP_READ | MMAP_WRITE;
+		uint32_t save_size_mask = state->info->save_size;
 		if (state->info->save_type == RAM_FLAG_ODD) {
 			map->flags |= MMAP_ONLY_ODD;
+			save_size_mask *= 2;
 		} else if(state->info->save_type == RAM_FLAG_EVEN) {
 			map->flags |= MMAP_ONLY_EVEN;
+			save_size_mask *= 2;
 		} else {
 			map->flags |= MMAP_CODE;
 		}
-		map->mask = calc_mask(state->info->save_size, start, end);
+		map->mask = calc_mask(save_size_mask, start, end);
 	} else if (!strcmp(dtype, "RAM")) {
 		uint32_t size = strtol(tern_find_ptr_default(node, "size", "0"), NULL, 16);
 		if (!size || size > map->end - map->start) {
 			size = map->end - map->start;
 		}
 		map->buffer = calloc(size, 1);
-		map->mask = calc_mask(size, start, end);
 		map->flags = MMAP_READ | MMAP_WRITE;
 		char *bus = tern_find_ptr_default(node, "bus", "both");
 		if (!strcmp(bus, "odd")) {
 			map->flags |= MMAP_ONLY_ODD;
+			size *= 2;
 		} else if (!strcmp(bus, "even")) {
 			map->flags |= MMAP_ONLY_EVEN;
+			size *= 2;
 		} else {
 			map->flags |= MMAP_CODE;
 		}
+		map->mask = calc_mask(size, start, end);
 	} else if (!strcmp(dtype, "NOR")) {
 		process_nor_def(key, state);