# HG changeset patch # User Michael Pavone # Date 1644396440 28800 # Node ID b92c998c67420f139411da0abe047ee466aadecb # Parent da326c32ad8fa422954b5f735187e2a5aa9c5ffb Add some missing null checks in the Sega CD code dealing with word RAM switching diff -r da326c32ad8f -r b92c998c6742 segacd.c --- 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]; }