Mercurial > repos > blastem
changeset 2099:b92c998c6742
Add some missing null checks in the Sega CD code dealing with word RAM switching
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 09 Feb 2022 00:47:20 -0800 |
parents | da326c32ad8f |
children | 539450d905b3 |
files | segacd.c |
diffstat | 1 files changed, 9 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/segacd.c Wed Feb 09 00:46:54 2022 -0800 +++ b/segacd.c Wed Feb 09 00:47:20 2022 -0800 @@ -127,6 +127,9 @@ m68k_context *m68k = vcontext; //TODO: fixme for interleaving uint16_t* bank = m68k->mem_pointers[1]; + if (!bank) { + return 0xFFFF; + } uint16_t raw = bank[address >> 2]; if (address & 2) { return (raw & 0xF) | (raw << 4 & 0xF00); @@ -164,6 +167,9 @@ } } uint16_t* bank = m68k->mem_pointers[1]; + if (!bank) { + return vcontext; + } uint16_t raw = bank[address >> 2]; uint16_t shift = ((address & 3) * 4); raw &= ~(0xF000 >> shift); @@ -268,6 +274,9 @@ m68k_context *m68k = vcontext; genesis_context *gen = m68k->system; segacd_context *cd = gen->expansion; + if (!m68k->mem_pointers[cd->memptr_start_index + 1]) { + return 0xFFFF; + } return m68k->mem_pointers[cd->memptr_start_index + 1][address>>1]; }