v60: improve CVTSW flags and fix issue with float-to-u32 cast

This commit is contained in:
hap 2025-03-17 15:41:21 +01:00
parent 9bf243a537
commit b5fafba307
4 changed files with 5 additions and 7 deletions

View File

@ -71,12 +71,11 @@ uint32_t v60_device::opCVTSW()
// Convert to uint32_t
val = u2f(m_op1);
m_modwritevalw = (uint32_t)val;
m_modwritevalw = (uint32_t)(int64_t)val;
_OV = 0;
_CY =(val < 0.0f);
_S = ((m_modwritevalw & 0x80000000) != 0);
_Z = (val == 0.0f);
_OV = (_S && val >= 0.0f) || (!_S && val <= -1.0f);
_Z = (m_modwritevalw == 0);
F2WriteSecondOperand(2);
F2END();

View File

@ -776,7 +776,6 @@ private:
[[noreturn]] uint32_t opUNHANDLED();
void v60_do_irq(int vector);
void v60_try_irq();
};