From 392d63a0de29a8be62d88e6d0ade7747e43fa50b Mon Sep 17 00:00:00 2001 From: LegendOfDragoon Date: Sat, 23 Jan 2016 02:18:08 -0800 Subject: [PATCH] Fix regression in CRecompilerOps::SPECIAL_DADDU() It should only add carry if GetMipsRegLo(source2) != 0 --- .../N64System/Recompiler/RecompilerOps.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Source/Project64-core/N64System/Recompiler/RecompilerOps.cpp b/Source/Project64-core/N64System/Recompiler/RecompilerOps.cpp index 7e478a0b4..b12627a76 100644 --- a/Source/Project64-core/N64System/Recompiler/RecompilerOps.cpp +++ b/Source/Project64-core/N64System/Recompiler/RecompilerOps.cpp @@ -4875,8 +4875,16 @@ void CRecompilerOps::SPECIAL_DADDU() Map_GPR_64bit(m_Opcode.rd, source1); if (IsConst(source2)) { - AddConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd), GetMipsRegLo(source2)); - AdcConstToX86Reg(GetMipsRegMapHi(m_Opcode.rd), GetMipsRegHi(source2)); + DWORD LoReg = GetMipsRegLo(source2); + AddConstToX86Reg(GetMipsRegMapLo(m_Opcode.rd), LoReg); + if(LoReg != 0) + { + AdcConstToX86Reg(GetMipsRegMapHi(m_Opcode.rd), GetMipsRegHi(source2)); + } + else + { + AddConstToX86Reg(GetMipsRegMapHi(m_Opcode.rd), GetMipsRegHi(source2)); + } } else if (IsMapped(source2)) {