diff --git a/Processors/6502Mk2/Perform.hpp b/Processors/6502Mk2/Perform.hpp index 25084ae55..e408fd12f 100644 --- a/Processors/6502Mk2/Perform.hpp +++ b/Processors/6502Mk2/Perform.hpp @@ -33,16 +33,15 @@ void anc(RegistersT ®isters, const uint8_t operand) { template void adc(RegistersT ®isters, const uint8_t operand) { + uint8_t result = registers.a + operand + registers.flags.carry; + registers.flags.carry = result < registers.a + registers.flags.carry; + if(!has_decimal_mode(model) || !registers.flags.decimal) { - const uint8_t result = registers.a + operand + registers.flags.carry; - registers.flags.carry = result < registers.a + registers.flags.carry; registers.flags.set_v(result, registers.a, operand); registers.flags.set_nz(registers.a = result); return; } - uint8_t result = registers.a + operand + registers.flags.carry; - registers.flags.carry = Numeric::carried_out(registers.a, operand, result); if constexpr (!is_65c02(model)) { registers.flags.zero_result = result; }