mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
v60: implement correct rounding mode when converting float to integer (#13506)
This commit is contained in:
parent
760ae70305
commit
53f391ff5e
@ -71,7 +71,13 @@ uint32_t v60_device::opCVTSW()
|
|||||||
|
|
||||||
// Convert to uint32_t
|
// Convert to uint32_t
|
||||||
val = u2f(m_op1);
|
val = u2f(m_op1);
|
||||||
m_modwritevalw = (uint32_t)(int64_t)val;
|
switch (TKCW & 7)
|
||||||
|
{
|
||||||
|
case 0: m_modwritevalw = (uint32_t)(int64_t)round(val); break;
|
||||||
|
case 1: m_modwritevalw = (uint32_t)(int64_t)floor(val); break;
|
||||||
|
case 2: m_modwritevalw = (uint32_t)(int64_t)ceil(val); break;
|
||||||
|
default: m_modwritevalw = (uint32_t)(int64_t)trunc(val); break;
|
||||||
|
}
|
||||||
|
|
||||||
_S = ((m_modwritevalw & 0x80000000) != 0);
|
_S = ((m_modwritevalw & 0x80000000) != 0);
|
||||||
_OV = (_S && val >= 0.0f) || (!_S && val <= -1.0f);
|
_OV = (_S && val >= 0.0f) || (!_S && val <= -1.0f);
|
||||||
|
Loading…
Reference in New Issue
Block a user