diff --git a/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp b/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp index e75ad731e..3577f79fa 100644 --- a/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp +++ b/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp @@ -747,18 +747,25 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor Duplicate(SUBb, ADDb) StdCASE(ADDb, perform_state_ = Perform_np) Duplicate(SUBw, ADDw) StdCASE(ADDw, perform_state_ = Perform_np) Duplicate(SUBl, ADDl) StdCASE(ADDl, { - if(instruction_.mode(1) != Mode::DataRegisterDirect) { - perform_state_ = Perform_np; + if(instruction_.mode(0) == Mode::Quick) { + perform_state_ = ( + instruction_.mode(1) == Mode::AddressRegisterDirect || + instruction_.mode(1) == Mode::DataRegisterDirect + ) ? Perform_np_nn : Perform_np; } else { - switch(instruction_.mode(0)) { - default: - perform_state_ = Perform_np_n; - break; - case Mode::DataRegisterDirect: - case Mode::AddressRegisterDirect: - case Mode::ImmediateData: - perform_state_ = Perform_np_nn; - break; + if(instruction_.mode(1) != Mode::DataRegisterDirect) { + perform_state_ = Perform_np; + } else { + switch(instruction_.mode(0)) { + default: + perform_state_ = Perform_np_n; + break; + case Mode::DataRegisterDirect: + case Mode::AddressRegisterDirect: + case Mode::ImmediateData: + perform_state_ = Perform_np_nn; + break; + } } } })