Mercurial > repos > blastem
changeset 2055:c4d066d798c4 segacd
Fix prog RAM banking and Genesis to SCD cycle conversion. Arkagis Escape demo now works
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 18 Jan 2022 23:54:02 -0800 |
parents | 8ee7ecbf3f21 |
children | 27bbfcb7850a |
files | segacd.c |
diffstat | 1 files changed, 2 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/segacd.c Tue Jan 18 00:03:50 2022 -0800 +++ b/segacd.c Tue Jan 18 23:54:02 2022 -0800 @@ -300,7 +300,6 @@ //switch to 2M mode if (value & BIT_RET) { //Main CPU will have word ram - genesis_context *gen = cd->genesis; gen->m68k->mem_pointers[cd->memptr_start_index + 1] = cd->word_ram; gen->m68k->mem_pointers[cd->memptr_start_index + 2] = cd->word_ram + 0x10000; m68k->mem_pointers[0] = NULL; @@ -425,7 +424,7 @@ uint32_t gen_cycle_to_scd(uint32_t cycle, genesis_context *gen) { - return ((uint64_t)cycle) * ((uint64_t)gen->normal_clock) / ((uint64_t)SCD_MCLKS); + return ((uint64_t)cycle) * ((uint64_t)SCD_MCLKS) / ((uint64_t)gen->normal_clock); } void scd_adjust_cycle(segacd_context *cd, uint32_t deduction) @@ -552,7 +551,7 @@ } if (changed & MASK_PROG_BANK) { uint32_t bank = cd->gate_array[GA_MEM_MODE] >> 6 & 0x3; - m68k->mem_pointers[cd->memptr_start_index] = cd->word_ram + bank * 0x10000; + m68k->mem_pointers[cd->memptr_start_index] = cd->prog_ram + bank * 0x10000; m68k_invalidate_code_range(m68k, cd->base + 0x220000, cd->base + 0x240000); } break;