Mercurial > repos > blastem
diff segacd.c @ 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 | ca6fc8c8dc60 |
children | ff32a90260c9 |
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]; }