summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar MerryMage2017-02-18 19:45:24 +0000
committerGravatar MerryMage2017-02-18 20:04:54 +0000
commitb1253881524ee6681399d6d79756d92e9d052d05 (patch)
tree138cf5b468c8983004e01fe015ea3b3e397aa230 /src
parentMerge pull request #2482 from yuriks/pica-refactor (diff)
downloadyuzu-b1253881524ee6681399d6d79756d92e9d052d05.tar.gz
yuzu-b1253881524ee6681399d6d79756d92e9d052d05.tar.xz
yuzu-b1253881524ee6681399d6d79756d92e9d052d05.zip
dyncom: Correct SXTAB16 and SXTB16
Diffstat (limited to 'src')
-rw-r--r--src/core/arm/dyncom/arm_dyncom_interpreter.cpp8
1 files 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 : {
3928 if (inst_cream->Rn == 15) { 3928 if (inst_cream->Rn == 15) {
3929 u32 lo = (u32)(s8)rm_val; 3929 u32 lo = (u32)(s8)rm_val;
3930 u32 hi = (u32)(s8)(rm_val >> 16); 3930 u32 hi = (u32)(s8)(rm_val >> 16);
3931 RD = (lo | (hi << 16)); 3931 RD = (lo & 0xFFFF) | (hi << 16);
3932 } 3932 }
3933 // SXTAB16 3933 // SXTAB16
3934 else { 3934 else {
3935 u32 lo = (rn_val & 0xFFFF) + (u32)(s8)(rm_val & 0xFF); 3935 u32 lo = rn_val + (u32)(s8)(rm_val & 0xFF);
3936 u32 hi = ((rn_val >> 16) & 0xFFFF) + (u32)(s8)((rm_val >> 16) & 0xFF); 3936 u32 hi = (rn_val >> 16) + (u32)(s8)((rm_val >> 16) & 0xFF);
3937 RD = (lo | (hi << 16)); 3937 RD = (lo & 0xFFFF) | (hi << 16);
3938 } 3938 }
3939 } 3939 }
3940 3940