diff --git a/desmume/src/utils/arm_jit/arm64_emit.cpp b/desmume/src/utils/arm_jit/arm64_emit.cpp index 5f37bb37d..ab5ee922c 100755 --- a/desmume/src/utils/arm_jit/arm64_emit.cpp +++ b/desmume/src/utils/arm_jit/arm64_emit.cpp @@ -710,8 +710,8 @@ static void emit_negs(t_bytes *out, int rs, int rt) static void emit_mvns(t_bytes *out, int rs,int rt) { - output_w32(out, 0x2a200000|rs<<16|WZR<<5|rt); - emit_cmp(out, rt, rt); + output_w32(out, 0x2A2003E0|rs<<16|WZR<<5|rt); + emit_cmpimm(out, rt, 0); } static void emit_zeroreg(t_bytes *out, int rt) diff --git a/desmume/src/utils/arm_jit/arm_jit_arm.cpp b/desmume/src/utils/arm_jit/arm_jit_arm.cpp index e4bf0be4c..b205a324e 100755 --- a/desmume/src/utils/arm_jit/arm_jit_arm.cpp +++ b/desmume/src/utils/arm_jit/arm_jit_arm.cpp @@ -3253,8 +3253,9 @@ static int OP_SUB_REG(const u32 i) //----------------------------------------------------------------------------- static int OP_ADC_REG(const u32 i) { - reg_pos_thumb(3, tmp, VALUE); + GET_CARRY(0); + reg_pos_thumb(3, tmp, VALUE); reg_pos_thumb(0, tmp2, VALUE); emit_adcs(g_out, tmp2, tmp, tmp2); emit_write_ptr32_regptrTO_regFROM(g_out, CACHED_PTR(reg_pos_thumb(0, R1, ADDRESS)), tmp2); @@ -3268,8 +3269,8 @@ static int OP_ADC_REG(const u32 i) //----------------------------------------------------------------------------- static int OP_SBC_REG(const u32 i) { - reg_pos_thumb(3, tmp, VALUE); GET_CARRY(1); + reg_pos_thumb(3, tmp, VALUE); reg_pos_thumb(0, tmp2, VALUE); emit_sbcs(g_out, tmp2, tmp, tmp2); emit_write_ptr32_regptrTO_regFROM(g_out, CACHED_PTR(reg_pos_thumb(0, R1, ADDRESS)), tmp2);