Mercurial > repos > blastem
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);