mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-11 16:49:28 +02:00
DSPLLE: fixed 0x20 handling, we still don't know what it is good for
though:( git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3980 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -28,6 +28,7 @@ namespace DSPInterpreter {
|
||||
|
||||
void Update_SR_Register64(s64 _Value)
|
||||
{
|
||||
// TODO: Should also set 0x10 and 0x01
|
||||
g_dsp.r[DSP_REG_SR] &= ~SR_CMP_MASK;
|
||||
|
||||
if (_Value < 0)
|
||||
@ -40,17 +41,20 @@ void Update_SR_Register64(s64 _Value)
|
||||
g_dsp.r[DSP_REG_SR] |= SR_ARITH_ZERO;
|
||||
}
|
||||
|
||||
// weird
|
||||
if ((_Value >> 62) == 0)
|
||||
// Checks if top bits are equal, what is it good for?
|
||||
if ((_Value >> 62) == 0 || _Value >> 62 == 3)
|
||||
{
|
||||
g_dsp.r[DSP_REG_SR] |= 0x20;
|
||||
g_dsp.r[DSP_REG_SR] |= SR_TOP2BITS;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Update_SR_Register16(s16 _Value)
|
||||
{
|
||||
g_dsp.r[DSP_REG_SR] &= ~SR_CMP_MASK;
|
||||
|
||||
// Only sets those 3 bits
|
||||
|
||||
if (_Value < 0)
|
||||
{
|
||||
g_dsp.r[DSP_REG_SR] |= SR_SIGN;
|
||||
@ -61,10 +65,10 @@ void Update_SR_Register16(s16 _Value)
|
||||
g_dsp.r[DSP_REG_SR] |= SR_ARITH_ZERO;
|
||||
}
|
||||
|
||||
// weird
|
||||
if ((_Value >> 14) == 0)
|
||||
// Checks if top bits are equal, what is it good for?
|
||||
if ((_Value >> 14) == 0 || _Value >> 14 == 3)
|
||||
{
|
||||
g_dsp.r[DSP_REG_SR] |= 0x20;
|
||||
g_dsp.r[DSP_REG_SR] |= SR_TOP2BITS;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user