summaryrefslogtreecommitdiffstats
path: root/src/video_core/shader/shader_interpreter.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2016-03-16 18:17:07 +0100
committerbunnei <bunneidev@gmail.com>2016-03-16 18:17:07 +0100
commitcaba93fa455ff52a297db057ccae5d5108b115b9 (patch)
tree8d7e8bfe85f72eaff15209cb7eccb391b84d25e5 /src/video_core/shader/shader_interpreter.cpp
parentMerge pull request #1526 from bunnei/sdl-rgb8 (diff)
parentPICA: Fix MAD/MADI encoding (diff)
downloadyuzu-caba93fa455ff52a297db057ccae5d5108b115b9.tar
yuzu-caba93fa455ff52a297db057ccae5d5108b115b9.tar.gz
yuzu-caba93fa455ff52a297db057ccae5d5108b115b9.tar.bz2
yuzu-caba93fa455ff52a297db057ccae5d5108b115b9.tar.lz
yuzu-caba93fa455ff52a297db057ccae5d5108b115b9.tar.xz
yuzu-caba93fa455ff52a297db057ccae5d5108b115b9.tar.zst
yuzu-caba93fa455ff52a297db057ccae5d5108b115b9.zip
Diffstat (limited to 'src/video_core/shader/shader_interpreter.cpp')
-rw-r--r--src/video_core/shader/shader_interpreter.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/video_core/shader/shader_interpreter.cpp b/src/video_core/shader/shader_interpreter.cpp
index 79fcc56b9..295a2466b 100644
--- a/src/video_core/shader/shader_interpreter.cpp
+++ b/src/video_core/shader/shader_interpreter.cpp
@@ -413,9 +413,12 @@ void RunInterpreter(UnitState<Debug>& state) {
bool is_inverted = (instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MADI);
+ const int address_offset = (instr.mad.address_register_index == 0)
+ ? 0 : state.address_registers[instr.mad.address_register_index - 1];
+
const float24* src1_ = LookupSourceRegister(instr.mad.GetSrc1(is_inverted));
- const float24* src2_ = LookupSourceRegister(instr.mad.GetSrc2(is_inverted));
- const float24* src3_ = LookupSourceRegister(instr.mad.GetSrc3(is_inverted));
+ const float24* src2_ = LookupSourceRegister(instr.mad.GetSrc2(is_inverted) + (!is_inverted * address_offset));
+ const float24* src3_ = LookupSourceRegister(instr.mad.GetSrc3(is_inverted) + ( is_inverted * address_offset));
const bool negate_src1 = ((bool)swizzle.negate_src1 != false);
const bool negate_src2 = ((bool)swizzle.negate_src2 != false);