mirror of
https://github.com/holub/mame
synced 2025-04-17 22:13:04 +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
|
||||
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);
|
||||
_OV = (_S && val >= 0.0f) || (!_S && val <= -1.0f);
|
||||
|
Loading…
Reference in New Issue
Block a user