private void UpdateCarryFlag(CarryFlagAffect flagAffect, byte initialValue, byte newValue) { switch (flagAffect) { case CarryFlagAffect.UNAFFECTED: break; case CarryFlagAffect.SET_IF_BORROW: flags.CarryFlag = (newValue > initialValue); break; case CarryFlagAffect.SET_IF_CARRY: flags.CarryFlag = (newValue < initialValue); break; case CarryFlagAffect.SET: flags.CarryFlag = true; break; case CarryFlagAffect.RESET: flags.CarryFlag = false; break; } }
private void UpdateHalfCarryFlag(CarryFlagAffect flagAffect, byte initialValue, byte newValue) { switch (flagAffect) { case CarryFlagAffect.UNAFFECTED: break; case CarryFlagAffect.SET_IF_BORROW: flags.HalfCarryFlag = ((initialValue & 0xf0) > ((newValue - initialValue) & 0xf0)); break; case CarryFlagAffect.SET_IF_CARRY: flags.HalfCarryFlag = ((initialValue & 0x0f) + ((newValue - initialValue) & 0x0f)) > 0x0f; break; case CarryFlagAffect.SET: flags.HalfCarryFlag = true; break; case CarryFlagAffect.RESET: flags.HalfCarryFlag = false; break; } }