From b1253881524ee6681399d6d79756d92e9d052d05 Mon Sep 17 00:00:00 2001
From: MerryMage <MerryMage@users.noreply.github.com>
Date: Sat, 18 Feb 2017 19:45:24 +0000
Subject: [PATCH] dyncom: Correct SXTAB16 and SXTB16

---
 src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp
index 67c45640a..273bc8167 100644
--- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp
+++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp
@@ -3928,13 +3928,13 @@ SXTB16_INST : {
         if (inst_cream->Rn == 15) {
             u32 lo = (u32)(s8)rm_val;
             u32 hi = (u32)(s8)(rm_val >> 16);
-            RD = (lo | (hi << 16));
+            RD = (lo & 0xFFFF) | (hi << 16);
         }
         // SXTAB16
         else {
-            u32 lo = (rn_val & 0xFFFF) + (u32)(s8)(rm_val & 0xFF);
-            u32 hi = ((rn_val >> 16) & 0xFFFF) + (u32)(s8)((rm_val >> 16) & 0xFF);
-            RD = (lo | (hi << 16));
+            u32 lo = rn_val + (u32)(s8)(rm_val & 0xFF);
+            u32 hi = (rn_val >> 16) + (u32)(s8)((rm_val >> 16) & 0xFF);
+            RD = (lo & 0xFFFF) | (hi << 16);
         }
     }