about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-02-04 21:12:47 +0100
committerptitSeb <sebastien.chev@gmail.com>2025-02-04 21:12:53 +0100
commit7cbe71c2188498adb43c1bcaf42d196b032a1940 (patch)
tree10cadb8ff3342a624f937caa396762831dce17ac
parent8bb53e10018e7ebee785afc8ad571f1cee5f9bef (diff)
downloadbox64-7cbe71c2188498adb43c1bcaf42d196b032a1940.tar.gz
box64-7cbe71c2188498adb43c1bcaf42d196b032a1940.zip
[DYNAREC] Fixed a rare issue when flags would not be computed on 1st opcode of a block if a jump go there (and added a profile for fixed MGSV:TPP)"
-rw-r--r--src/dynarec/dynarec_native_pass.c2
-rw-r--r--system/box64.box64rc10
2 files changed, 11 insertions, 1 deletions
diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c
index 1e013eb6..724a2115 100644
--- a/src/dynarec/dynarec_native_pass.c
+++ b/src/dynarec/dynarec_native_pass.c
@@ -123,7 +123,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
             WILLWRITE();
         }
         #endif
-        if((dyn->insts[ninst].x64.need_before&~X_PEND) && !dyn->insts[ninst].pred_sz) {
+        if((dyn->insts[ninst].x64.need_before&~X_PEND) && !ninst) {
             READFLAGS(dyn->insts[ninst].x64.need_before&~X_PEND);
         }
         if(BOX64ENV(dynarec_test) && (!BOX64ENV(dynarec_test_end) || (ip>=BOX64ENV(dynarec_test_start) && ip<BOX64ENV(dynarec_test_end)))) {
diff --git a/system/box64.box64rc b/system/box64.box64rc
index 8246c36e..e7f5b049 100644
--- a/system/box64.box64rc
+++ b/system/box64.box64rc
@@ -479,6 +479,16 @@ BOX64_DYNAREC_STRONGMEM=1
 BOX64_DYNAREC_X87DOUBLE=1
 BOX64_DYNAREC_FASTROUND=0
 
+[mgsvtpp.exe]
+BOX64_DYNAREC_SAFEFLAGS=2
+BOX64_DYNAREC_BIGBLOCK=3
+BOX64_DYNAREC_CALLRET=1
+
+[mgsvmgo.exe]
+BOX64_DYNAREC_SAFEFLAGS=2
+BOX64_DYNAREC_BIGBLOCK=3
+BOX64_DYNAREC_CALLRET=1
+
 [MinutesTillDawn.exe]
 BOX64_DYNAREC_STRONGMEM=1