changeset 2403:8171409b62ef

Fix incorrect manipulation of lock-on cart memory map
author Michael Pavone <pavone@retrodev.com>
date Mon, 01 Jan 2024 20:02:41 -0800
parents 49b7ead35482
children 6f8400ce7a0f
files romdb.c
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/romdb.c	Mon Jan 01 19:50:20 2024 -0800
+++ b/romdb.c	Mon Jan 01 20:02:41 2024 -0800
@@ -862,9 +862,12 @@
 			*map = lock_info.map[i];
 			if (map->start < 0x200000) {
 				if (map->buffer) {
-					uint8_t *buf = map->buffer;
-					buf += (0x200000 - map->start) & ((map->flags & MMAP_AUX_BUFF) ? map->aux_mask : map->mask);
-					map->buffer = buf;
+					uint32_t mask = (map->flags & MMAP_AUX_BUFF) ? map->aux_mask : map->mask;
+					if (mask < 0x3FFFFF) {
+						uint8_t *buf = map->buffer;
+						buf += (0x200000 - map->start) & mask;
+						map->buffer = buf;
+					}
 				}
 				map->start = 0x200000;
 			}