Mercurial > repos > blastem
comparison segacd.c @ 2137:3ef9456b76cf
Fix a crash regression from word RAM interleave changes
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 19 Mar 2022 00:42:05 -0700 |
parents | 01fcbcba5cf8 |
children | b6338e18787e |
comparison
equal
deleted
inserted
replaced
2136:01fcbcba5cf8 | 2137:3ef9456b76cf |
---|---|
279 m68k_context *m68k = vcontext; | 279 m68k_context *m68k = vcontext; |
280 genesis_context *gen = m68k->system; | 280 genesis_context *gen = m68k->system; |
281 segacd_context *cd = gen->expansion; | 281 segacd_context *cd = gen->expansion; |
282 if (cd->gate_array[GA_MEM_MODE] & BIT_MEM_MODE) { | 282 if (cd->gate_array[GA_MEM_MODE] & BIT_MEM_MODE) { |
283 cd->word_ram[address + cd->bank_toggle] = value; | 283 cd->word_ram[address + cd->bank_toggle] = value; |
284 m68k_invalidate_code_range(m68k, cd->base + address, address + 1); | 284 m68k_invalidate_code_range(m68k, cd->base + 0x200000 + address, cd->base + 0x200000 + address + 1); |
285 } | 285 } |
286 return vcontext; | 286 return vcontext; |
287 } | 287 } |
288 | 288 |
289 static void *unmapped_word_write8(uint32_t address, void *vcontext, uint8_t value) | 289 static void *unmapped_word_write8(uint32_t address, void *vcontext, uint8_t value) |
298 cd->word_ram[offset] |= value; | 298 cd->word_ram[offset] |= value; |
299 } else { | 299 } else { |
300 cd->word_ram[address + cd->bank_toggle] &= 0xFF; | 300 cd->word_ram[address + cd->bank_toggle] &= 0xFF; |
301 cd->word_ram[address + cd->bank_toggle] |= value << 8; | 301 cd->word_ram[address + cd->bank_toggle] |= value << 8; |
302 } | 302 } |
303 m68k_invalidate_code_range(m68k, cd->base + (address & ~1), address + 1); | 303 m68k_invalidate_code_range(m68k, cd->base + 0x200000 + (address & ~1), cd->base + 0x200000 + address + 1); |
304 } | 304 } |
305 return vcontext; | 305 return vcontext; |
306 } | 306 } |
307 | 307 |
308 static uint32_t cell_image_translate_address(uint32_t address) | 308 static uint32_t cell_image_translate_address(uint32_t address) |