diff --git a/core/hw/sh4/dyna/decoder.cpp b/core/hw/sh4/dyna/decoder.cpp index 742216508..e50f29953 100644 --- a/core/hw/sh4/dyna/decoder.cpp +++ b/core/hw/sh4/dyna/decoder.cpp @@ -825,16 +825,15 @@ bool dec_generic(u32 op) bool update_after=false; if ((s32)e<0) { - if (rs1._reg!=rs2._reg) //reg shouldn't be updated if its written + if (rs1._reg!=rs2._reg && !mmu_enabled()) //reg shouldn't be updated if its written { - if (!mmu_enabled()) - Emit(shop_sub,rs1,rs1,mk_imm(-e)); - else - { - verify(rs3.is_null()); - rs3=mk_imm(e); - update_after=true; - } + Emit(shop_sub,rs1,rs1,mk_imm(-e)); + } + else + { + verify(rs3.is_null()); + rs3=mk_imm(e); + update_after=true; } }