diff options
| author | 2017-02-18 19:45:24 +0000 | |
|---|---|---|
| committer | 2017-02-18 20:04:54 +0000 | |
| commit | b1253881524ee6681399d6d79756d92e9d052d05 (patch) | |
| tree | 138cf5b468c8983004e01fe015ea3b3e397aa230 /src | |
| parent | Merge pull request #2482 from yuriks/pica-refactor (diff) | |
| download | yuzu-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.cpp | 8 |
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 | ||