diff --git a/src/emu/sound/aicadsp.c b/src/emu/sound/aicadsp.c index 1879ea89ff8..65d6e3358cb 100644 --- a/src/emu/sound/aicadsp.c +++ b/src/emu/sound/aicadsp.c @@ -24,6 +24,7 @@ static UINT16 PACK(INT32 val) else val <<= 11; val >>= 11; + val &= 0x7FF; val |= sign << 15; val |= exponent << 11; @@ -40,7 +41,10 @@ static INT32 UNPACK(UINT16 val) mantissa = val & 0x7FF; uval = mantissa << 11; if (exponent > 11) + { exponent = 11; + uval |= sign << 22; + } else uval |= (sign ^ 1) << 22; uval |= sign << 23; diff --git a/src/emu/sound/scspdsp.c b/src/emu/sound/scspdsp.c index bb30dd376be..0415aebf021 100644 --- a/src/emu/sound/scspdsp.c +++ b/src/emu/sound/scspdsp.c @@ -24,6 +24,7 @@ static UINT16 PACK(INT32 val) else val <<= 11; val >>= 11; + val &= 0x7FF; val |= sign << 15; val |= exponent << 11; @@ -40,7 +41,10 @@ static INT32 UNPACK(UINT16 val) mantissa = val & 0x7FF; uval = mantissa << 11; if (exponent > 11) + { exponent = 11; + uval |= sign << 22; + } else uval |= (sign ^ 1) << 22; uval |= sign << 23;