diff --git a/core/cd_hw/scd.c b/core/cd_hw/scd.c index 975de03..321d7bc 100644 --- a/core/cd_hw/scd.c +++ b/core/cd_hw/scd.c @@ -1218,6 +1218,11 @@ void scd_reset(int hard) m68k.memory_map[i].base = scd.prg_ram; m68k.memory_map[i+1].base = scd.prg_ram + 0x10000; } + + /* reset & halt SUB-CPU */ + s68k.cycles = 0; + s68k_pulse_reset(); + s68k_pulse_halt(); } else { diff --git a/core/genesis.c b/core/genesis.c index 729d59b..f15f2f7 100644 --- a/core/genesis.c +++ b/core/genesis.c @@ -253,19 +253,16 @@ void gen_reset(int hard_reset) { if (system_hw == SYSTEM_MCD) { - /* reset CD hardware */ - scd_reset(1); - - /* reset & halt SUB-CPU */ - s68k.cycles = 0; - s68k_pulse_reset(); - s68k_pulse_halt(); - } - else - { - /* reset MD cartridge hardware */ - md_cart_reset(hard_reset); + /* FRES is only asserted on Power ON */ + if (hard_reset) + { + /* reset CD hardware */ + scd_reset(1); + } } + + /* reset MD cartridge hardware */ + md_cart_reset(hard_reset); /* Z80 bus is released & Z80 is reseted */ m68k.memory_map[0xa0].read8 = m68k_read_bus_8;