comparison segacd.c @ 2120:91ed3c4cdfd9

Fix the regression in Stellar Fire while still passing RET/DMNA tests
author Michael Pavone <pavone@retrodev.com>
date Thu, 10 Mar 2022 20:45:50 -0800
parents 5ec2f97365a2
children 76ea19e8b1a9
comparison
equal deleted inserted replaced
2119:5ec2f97365a2 2120:91ed3c4cdfd9
579 cd->bank_toggle = value & BIT_RET; 579 cd->bank_toggle = value & BIT_RET;
580 genesis_context *gen = cd->genesis; 580 genesis_context *gen = cd->genesis;
581 cd->gate_array[reg] &= 0xFFC0; 581 cd->gate_array[reg] &= 0xFFC0;
582 if (changed & BIT_MEM_MODE) { 582 if (changed & BIT_MEM_MODE) {
583 //FIXME: ram banks are supposed to be interleaved when in 2M mode 583 //FIXME: ram banks are supposed to be interleaved when in 2M mode
584 cd->main_swap_request = old_bank_toggle != cd->bank_toggle; 584 cd->main_swap_request = cd->bank_toggle && !old_bank_toggle;
585 if (value & BIT_MEM_MODE) { 585 if (value & BIT_MEM_MODE) {
586 //switch to 1M mode 586 //switch to 1M mode
587 gen->m68k->mem_pointers[cd->memptr_start_index + 1] = (value & BIT_RET) ? cd->word_ram + 0x10000 : cd->word_ram; 587 gen->m68k->mem_pointers[cd->memptr_start_index + 1] = (value & BIT_RET) ? cd->word_ram + 0x10000 : cd->word_ram;
588 gen->m68k->mem_pointers[cd->memptr_start_index + 2] = NULL; 588 gen->m68k->mem_pointers[cd->memptr_start_index + 2] = NULL;
589 m68k->mem_pointers[0] = NULL; 589 m68k->mem_pointers[0] = NULL;