this->m_Z = (val == 0);
this->m_S = ((val >> (BIT_LEN-1)) & 0x1);
this->m_C = ((val >> (BIT_LEN)) & 0x1);
- bool v = (((a ^ b) >> (BIT_LEN-1)) & 0x1) ? true : false;
- this->m_O = (this->m_S != v);
+ bool a_31 = ((a >> (BIT_LEN-1)) & 0x1);
+ bool b_31 = ((b >> (BIT_LEN-1)) & 0x1);
+ bool val_31 = ((val >> (BIT_LEN-1)) & 0x1);
+ this->m_O = ((a_31 && b_31 && !val_31) || (!a_31 && !b_31 && val_31));
}
void CCpu::updateCarry(bool c)