about summary refs log tree commit diff stats
path: root/src/dynarec
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynarec')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_00.c126
-rw-r--r--src/dynarec/arm64/dynarec_arm64_0f.c40
-rw-r--r--src/dynarec/arm64/dynarec_arm64_64.c40
-rw-r--r--src/dynarec/arm64/dynarec_arm64_66.c32
-rw-r--r--src/dynarec/arm64/dynarec_arm64_660f.c58
-rw-r--r--src/dynarec/arm64/dynarec_arm64_67.c16
-rw-r--r--src/dynarec/arm64/dynarec_arm64_67_avx.c2
-rw-r--r--src/dynarec/arm64/dynarec_arm64_avx.c2
-rw-r--r--src/dynarec/arm64/dynarec_arm64_avx_0f.c10
-rw-r--r--src/dynarec/arm64/dynarec_arm64_avx_0f38.c2
-rw-r--r--src/dynarec/arm64/dynarec_arm64_avx_66_0f.c54
-rw-r--r--src/dynarec/arm64/dynarec_arm64_avx_f2_0f.c22
-rw-r--r--src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c12
-rw-r--r--src/dynarec/arm64/dynarec_arm64_d8.c48
-rw-r--r--src/dynarec/arm64/dynarec_arm64_d9.c50
-rw-r--r--src/dynarec/arm64/dynarec_arm64_da.c24
-rw-r--r--src/dynarec/arm64/dynarec_arm64_db.c6
-rw-r--r--src/dynarec/arm64/dynarec_arm64_dc.c48
-rw-r--r--src/dynarec/arm64/dynarec_arm64_de.c24
-rw-r--r--src/dynarec/arm64/dynarec_arm64_emit_math.c4
-rw-r--r--src/dynarec/arm64/dynarec_arm64_emit_shift.c140
-rw-r--r--src/dynarec/arm64/dynarec_arm64_f0.c18
-rw-r--r--src/dynarec/arm64/dynarec_arm64_f20f.c22
-rw-r--r--src/dynarec/arm64/dynarec_arm64_f30f.c12
-rw-r--r--src/dynarec/arm64/dynarec_arm64_functions.c40
-rw-r--r--src/dynarec/arm64/dynarec_arm64_helper.c8
-rw-r--r--src/dynarec/arm64/dynarec_arm64_helper.h32
-rw-r--r--src/dynarec/arm64/dynarec_arm64_pass0.h8
-rw-r--r--src/dynarec/arm64/dynarec_arm64_pass1.h2
-rw-r--r--src/dynarec/arm64/dynarec_arm64_pass3.h4
-rw-r--r--src/dynarec/dynablock.c2
-rw-r--r--src/dynarec/dynarec.c16
-rw-r--r--src/dynarec/dynarec_helper.h60
-rw-r--r--src/dynarec/dynarec_native.c48
-rw-r--r--src/dynarec/dynarec_native_functions.c2
-rw-r--r--src/dynarec/dynarec_native_pass.c26
-rw-r--r--src/dynarec/la64/dynarec_la64_00.c30
-rw-r--r--src/dynarec/la64/dynarec_la64_0f.c8
-rw-r--r--src/dynarec/la64/dynarec_la64_66.c10
-rw-r--r--src/dynarec/la64/dynarec_la64_660f.c22
-rw-r--r--src/dynarec/la64/dynarec_la64_f20f.c18
-rw-r--r--src/dynarec/la64/dynarec_la64_f30f.c10
-rw-r--r--src/dynarec/la64/dynarec_la64_functions.c16
-rw-r--r--src/dynarec/la64/dynarec_la64_helper.c4
-rw-r--r--src/dynarec/la64/dynarec_la64_helper.h6
-rw-r--r--src/dynarec/la64/dynarec_la64_pass0.h4
-rw-r--r--src/dynarec/la64/dynarec_la64_pass3.h4
-rw-r--r--src/dynarec/rv64/dynarec_rv64_00_3.c50
-rw-r--r--src/dynarec/rv64/dynarec_rv64_0f.c22
-rw-r--r--src/dynarec/rv64/dynarec_rv64_0f_vector.c10
-rw-r--r--src/dynarec/rv64/dynarec_rv64_66.c10
-rw-r--r--src/dynarec/rv64/dynarec_rv64_660f.c44
-rw-r--r--src/dynarec/rv64/dynarec_rv64_660f_vector.c36
-rw-r--r--src/dynarec/rv64/dynarec_rv64_avx.c2
-rw-r--r--src/dynarec/rv64/dynarec_rv64_d9.c2
-rw-r--r--src/dynarec/rv64/dynarec_rv64_db.c12
-rw-r--r--src/dynarec/rv64/dynarec_rv64_dd.c4
-rw-r--r--src/dynarec/rv64/dynarec_rv64_df.c16
-rw-r--r--src/dynarec/rv64/dynarec_rv64_f20f.c28
-rw-r--r--src/dynarec/rv64/dynarec_rv64_f20f_vector.c20
-rw-r--r--src/dynarec/rv64/dynarec_rv64_f30f.c28
-rw-r--r--src/dynarec/rv64/dynarec_rv64_f30f_vector.c22
-rw-r--r--src/dynarec/rv64/dynarec_rv64_functions.c40
-rw-r--r--src/dynarec/rv64/dynarec_rv64_helper.c8
-rw-r--r--src/dynarec/rv64/dynarec_rv64_helper.h12
-rw-r--r--src/dynarec/rv64/dynarec_rv64_pass0.h4
-rw-r--r--src/dynarec/rv64/dynarec_rv64_pass3.h8
67 files changed, 787 insertions, 783 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c
index 5ab33ffe..25b70278 100644
--- a/src/dynarec/arm64/dynarec_arm64_00.c
+++ b/src/dynarec/arm64/dynarec_arm64_00.c
@@ -725,7 +725,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         u32 = PK(i32);
                         i32++;
                     }
-                if(!box64_dynarec_test && u32>=0x50 && u32<=0x57 && (dyn->size>(ninst+1) && dyn->insts[ninst+1].pred_sz==1) && gd != xRSP) {
+                if(!BOX64ENV(dynarec_test) && u32>=0x50 && u32<=0x57 && (dyn->size>(ninst+1) && dyn->insts[ninst+1].pred_sz==1) && gd != xRSP) {
                     u32 = TO_NAT((u32 & 0x07) + (rex.b << 3));
                     if(u32==xRSP) {
                         PUSH1z(gd);
@@ -770,7 +770,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         u32 = PK(i32);
                         i32++;
                     }
-                if(!box64_dynarec_test && (gd!=xRSP) && u32>=0x58 && u32<=0x5f && (dyn->size>(ninst+1) && dyn->insts[ninst+1].pred_sz==1)) {
+                if (!BOX64ENV(dynarec_test) && (gd != xRSP) && u32 >= 0x58 && u32 <= 0x5f && (dyn->size > (ninst + 1) && dyn->insts[ninst + 1].pred_sz == 1)) {
                     // double pop!
                     u32 = TO_NAT((u32 & 0x07) + (rex.b << 3));
                     MESSAGE(LOG_DUMP, "DOUBLE POP\n");
@@ -1010,7 +1010,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0x6C:
         case 0x6D:
             INST_NAME(opcode == 0x6C ? "INSB" : "INSD");
-            if(box64_dynarec_safeflags>1) {
+            if(BOX64ENV(dynarec_safeflags)>1) {
                 READFLAGS(X_PEND);
             } else {
                 SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state
@@ -1026,7 +1026,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0x6E:
         case 0x6F:
             INST_NAME(opcode == 0x6C ? "OUTSB" : "OUTSD");
-            if(box64_dynarec_safeflags>1) {
+            if(BOX64ENV(dynarec_safeflags)>1) {
                 READFLAGS(X_PEND);
             } else {
                 SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state
@@ -1553,7 +1553,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             if(gd==xRAX) {
                 if (rep == 2) {
                     INST_NAME("PAUSE");
-                    switch (box64_dynarec_pause) {
+                    switch (BOX64ENV(dynarec_pause)) {
                         case 1: YIELD; break;
                         case 2: WFI; break;
                         case 3:
@@ -1730,7 +1730,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             case 1:
             case 2:
                 if(rep==1) {INST_NAME("REPNZ CMPSB");} else {INST_NAME("REPZ CMPSB");}
-                if(box64_dynarec_safeflags>1)
+                if(BOX64ENV(dynarec_safeflags)>1)
                     MAYSETFLAGS();
                 SMREAD();
                 SETFLAGS(X_ALL, SF_SET_PENDING);
@@ -1772,7 +1772,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             case 1:
             case 2:
                 if(rep==1) {INST_NAME("REPNZ CMPSD");} else {INST_NAME("REPZ CMPSD");}
-                if(box64_dynarec_safeflags>1)
+                if(BOX64ENV(dynarec_safeflags)>1)
                     MAYSETFLAGS();
                 SETFLAGS(X_ALL, SF_SET_PENDING);
                 SMREAD();
@@ -1914,7 +1914,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             case 1:
             case 2:
                 if(rep==1) {INST_NAME("REPNZ SCASB");} else {INST_NAME("REPZ SCASB");}
-                if(box64_dynarec_safeflags>1)
+                if(BOX64ENV(dynarec_safeflags)>1)
                     MAYSETFLAGS();
                 SMREAD();
                 SETFLAGS(X_ALL, SF_SET_PENDING);
@@ -1953,7 +1953,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             case 1:
             case 2:
                 if(rep==1) {INST_NAME("REPNZ SCASD");} else {INST_NAME("REPZ SCASD");}
-                if(box64_dynarec_safeflags>1)
+                if(BOX64ENV(dynarec_safeflags)>1)
                     MAYSETFLAGS();
                 SMREAD();
                 SETFLAGS(X_ALL, SF_SET_PENDING);
@@ -2283,7 +2283,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0xC2:
             INST_NAME("RETN");
             //SETFLAGS(X_ALL, SF_SET_NODF);    // Hack, set all flags (to an unknown state...)
-            if(box64_dynarec_safeflags) {
+            if(BOX64ENV(dynarec_safeflags)) {
                 READFLAGS(X_PEND);  // lets play safe here too
             }
             fpu_purgecache(dyn, ninst, 1, x1, x2, x3);  // using next, even if there no next
@@ -2295,7 +2295,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0xC3:
             INST_NAME("RET");
             // SETFLAGS(X_ALL, SF_SET_NODF);    // Hack, set all flags (to an unknown state...)
-            if(box64_dynarec_safeflags) {
+            if(BOX64ENV(dynarec_safeflags)) {
                 READFLAGS(X_PEND);  // so instead, force the deferred flags, so it's not too slow, and flags are not lost
             }
             fpu_purgecache(dyn, ninst, 1, x1, x2, x3);  // using next, even if there no next
@@ -2500,7 +2500,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     if(isRetX87Wrapper(*(wrapper_t*)(addr)))
                         // return value will be on the stack, so the stack depth needs to be updated
                         x87_purgecache(dyn, ninst, 0, x3, x1, x4);
-                    if((box64_log<2 && !cycle_log && !box64_dynarec_test) && tmp) {
+                    if ((BOX64ENV(log)<2 && !BOX64ENV(rolling_log) && !BOX64ENV(dynarec_test)) && tmp) {
                         //GETIP(ip+3+8+8); // read the 0xCC
                         call_n(dyn, ninst, *(void**)(addr+8), tmp);
                         addr+=8+8;
@@ -2524,7 +2524,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 }
             } else {
                 INST_NAME("INT 3");
-                if(!box64_ignoreint3) {
+                if(!BOX64ENV(ignoreint3)) {
                     // check if TRAP signal is handled
                     TABLE64(x1, (uintptr_t)my_context);
                     MOV32w(x2, offsetof(box64context_t, signals[SIGTRAP]));
@@ -2573,7 +2573,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 jump_to_epilog(dyn, 0, xRIP, ninst);
             } else if(u8==0x03) {
                 INST_NAME("INT 3");
-                if(box64_dynarec_safeflags>1) {
+                if(BOX64ENV(dynarec_safeflags)>1) {
                     READFLAGS(X_PEND);
                 } else {
                     SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state
@@ -2587,7 +2587,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 *ok = 0;
             } else {
                 INST_NAME("INT n");
-                if(box64_dynarec_safeflags>1) {
+                if(BOX64ENV(dynarec_safeflags)>1) {
                     READFLAGS(X_PEND);
                 } else {
                     SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state
@@ -2748,7 +2748,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 0:
                     INST_NAME("ROL Eb, CL");
                     SETFLAGS(X_OF|X_CF, SF_SUBSET);
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     UFLAG_IF {
                         UFLAG_DF(x2, d_none);
@@ -2778,7 +2778,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 1:
                     INST_NAME("ROR Eb, CL");
                     SETFLAGS(X_OF|X_CF, SF_SUBSET);
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     UFLAG_IF {
                         UFLAG_DF(x2, d_none);
@@ -2808,7 +2808,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     INST_NAME("RCL Eb, CL");
                     MESSAGE(LOG_DUMP, "Need Optimization\n");
                     READFLAGS(X_CF);
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     SETFLAGS(X_OF|X_CF, SF_SET_DF);
                     ANDw_mask(x2, xRCX, 0, 0b00100);
@@ -2820,7 +2820,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     INST_NAME("RCR Eb, CL");
                     MESSAGE(LOG_DUMP, "Need Optimization\n");
                     READFLAGS(X_CF);
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     SETFLAGS(X_OF|X_CF, SF_SET_DF);
                     ANDw_mask(x2, xRCX, 0, 0b00100);
@@ -2832,7 +2832,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 6:
                     INST_NAME("SHL Eb, CL");
                     SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     ANDw_mask(x2, xRCX, 0, 0b00100);  //mask=0x00000001f
                     UFLAG_IF {
@@ -2845,7 +2845,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 5:
                     INST_NAME("SHR Eb, CL");
                     SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     ANDw_mask(x2, xRCX, 0, 0b00100);  //mask=0x00000001f
                     UFLAG_IF {
@@ -2858,7 +2858,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 7:
                     INST_NAME("SAR Eb, CL");
                     SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     ANDw_mask(x2, xRCX, 0, 0b00100);  //mask=0x00000001f
                     UFLAG_IF {
@@ -2876,7 +2876,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 0:
                     INST_NAME("ROL Ed, CL");
                     SETFLAGS(X_OF|X_CF, SF_SUBSET);
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     if(rex.w) {
                         ANDx_mask(x3, xRCX, 1, 0, 0b00101);  //mask=0x000000000000003f
@@ -2911,7 +2911,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 1:
                     INST_NAME("ROR Ed, CL");
                     SETFLAGS(X_OF|X_CF, SF_SUBSET);
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     if(rex.w) {
                         ANDx_mask(x3, xRCX, 1, 0, 0b00101);  //mask=0x000000000000003f
@@ -2947,7 +2947,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     MESSAGE(LOG_DUMP, "Need Optimization\n");
                     READFLAGS(X_CF);
                     SETFLAGS(X_OF|X_CF, SF_SET_DF);
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     if(rex.w) {
                         ANDx_mask(x2, xRCX, 1, 0, 0b00101);  //mask=0x000000000000003f
@@ -2965,7 +2965,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     MESSAGE(LOG_DUMP, "Need Optimization\n");
                     READFLAGS(X_CF);
                     SETFLAGS(X_OF|X_CF, SF_SET_DF);
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     if(rex.w) {
                         ANDx_mask(x2, xRCX, 1, 0, 0b00101);  //mask=0x000000000000003f
@@ -2982,7 +2982,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 6:
                     INST_NAME("SHL Ed, CL");
                     SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     if(rex.w) {
                         ANDx_mask(x3, xRCX, 1, 0, 0b00101);  //mask=0x000000000000003f
@@ -3000,7 +3000,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 5:
                     INST_NAME("SHR Ed, CL");
                     SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     if(rex.w) {
                         ANDx_mask(x3, xRCX, 1, 0, 0b00101);  //mask=0x000000000000003f
@@ -3018,7 +3018,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 7:
                     INST_NAME("SAR Ed, CL");
                     SETFLAGS(X_ALL, SF_SET_PENDING);
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     if(rex.w) {
                         ANDx_mask(x3, xRCX, 1, 0, 0b00101);  //mask=0x000000000000003f
@@ -3149,10 +3149,10 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0xE6:                      /* OUT Ib, AL */
         case 0xE7:                      /* OUT Ib, EAX */
             INST_NAME(opcode==0xE4?"IN AL, Ib":(opcode==0xE5?"IN EAX, Ib":(opcode==0xE6?"OUT Ib, AL":"OUT Ib, EAX")));
-            if (rex.is32bits && box64_ignoreint3) {
+            if (rex.is32bits && BOX64ENV(ignoreint3)) {
                 F8;
             } else {
-                if(box64_dynarec_safeflags>1) {
+                if(BOX64ENV(dynarec_safeflags)>1) {
                     READFLAGS(X_PEND);
                 } else {
                     SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state
@@ -3197,14 +3197,14 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     // calling a native function
                     SMEND();
                     sse_purge07cache(dyn, ninst, x3);
-                    if((box64_log<2 && !cycle_log && !box64_dynarec_test) && dyn->insts[ninst].natcall) {
+                    if ((BOX64ENV(log) < 2 && !BOX64ENV(rolling_log) && !BOX64ENV(dynarec_test)) && dyn->insts[ninst].natcall) {
                         tmp=isSimpleWrapper(*(wrapper_t*)(dyn->insts[ninst].natcall+2));
                     } else
                         tmp=0;
                     if(dyn->insts[ninst].natcall && isRetX87Wrapper(*(wrapper_t*)(dyn->insts[ninst].natcall+2)))
                     // return value will be on the stack, so the stack depth needs to be updated
                         x87_purgecache(dyn, ninst, 0, x3, x1, x4);
-                    if((box64_log<2 && !cycle_log) && dyn->insts[ninst].natcall && tmp) {
+                    if ((BOX64ENV(log)<2 && !BOX64ENV(rolling_log)) && dyn->insts[ninst].natcall && tmp) {
                         //GETIP(ip+3+8+8); // read the 0xCC
                         call_n(dyn, ninst, *(void**)(dyn->insts[ninst].natcall+2+8), tmp);
                         SMWRITE2();
@@ -3239,7 +3239,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     PUSH1z(x2);
                     break;
                 default:
-                    if((box64_dynarec_safeflags>1) || (ninst && dyn->insts[ninst-1].x64.set_flags)) {
+                    if((BOX64ENV(dynarec_safeflags)>1) || (ninst && dyn->insts[ninst-1].x64.set_flags)) {
                         READFLAGS(X_PEND);  // that's suspicious
                     } else {
                         SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags to "dont'care" state
@@ -3248,7 +3248,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     MOV64x(x2, addr);
                     fpu_purgecache(dyn, ninst, 1, x1, x3, x4);
                     PUSH1z(x2);
-                    if(box64_dynarec_callret) {
+                    if(BOX64ENV(dynarec_callret)) {
                         SET_HASCALLRET();
                         // Push actual return address
                         if(addr < (dyn->start+dyn->isize)) {
@@ -3271,7 +3271,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     else
                         j64 = addr+i32;
                     jump_to_next(dyn, j64, 0, ninst, rex.is32bits);
-                    if(box64_dynarec_callret && addr >= (dyn->start + dyn->isize)) {
+                    if(BOX64ENV(dynarec_callret) && addr >= (dyn->start + dyn->isize)) {
                         // jumps out of current dynablock...
                         MARK;
                         j64 = getJumpTableAddress64(addr);
@@ -3329,9 +3329,9 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0xEE:                      /* OUT DX, AL */
         case 0xEF:                      /* OUT DX, EAX */
             INST_NAME(opcode==0xEC?"IN AL, DX":(opcode==0xED?"IN EAX, DX":(opcode==0xEE?"OUT DX, AL":"OUT DX, EAX")));
-            if(rex.is32bits && box64_ignoreint3)
+            if(rex.is32bits && BOX64ENV(ignoreint3))
             {} else {
-                if(box64_dynarec_safeflags>1) {
+                if(BOX64ENV(dynarec_safeflags)>1) {
                     READFLAGS(X_PEND);
                 } else {
                     SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state
@@ -3351,7 +3351,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             break;
         case 0xF1:
             INST_NAME("INT1");
-            if(box64_dynarec_safeflags>1) {
+            if(BOX64ENV(dynarec_safeflags)>1) {
                 READFLAGS(X_PEND);
             } else {
                 SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state
@@ -3367,7 +3367,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
 
         case 0xF4:
             INST_NAME("HLT");
-            if(box64_dynarec_safeflags>1) {
+            if(BOX64ENV(dynarec_safeflags)>1) {
                 READFLAGS(X_PEND);
             } else {
                 SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state
@@ -3437,7 +3437,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             }
                         }
                         IFX(X_AF | X_PF | X_ZF | X_SF)
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 // to avoid noise during test
                                 MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));
                                 BICw(xFlags, xFlags, x3);
@@ -3465,7 +3465,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             }
                         }
                         IFX(X_AF | X_PF | X_ZF | X_SF)
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 // to avoid noise during test
                                 MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));
                                 BICw(xFlags, xFlags, x3);
@@ -3477,7 +3477,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     SETFLAGS(X_ALL, SF_SET);
                     GETEB(x1, 0);
                     UXTHw(x2, xRAX);
-                    if(box64_dynarec_div0) {
+                    if(BOX64ENV(dynarec_div0)) {
                         CBNZw_MARK3(ed);
                         GETIP_(ip);
                         STORE_XEMU_CALL(xRIP);
@@ -3493,7 +3493,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     BFIx(xRAX, x4, 8, 8);
                     SET_DFNONE();
                     IFX(X_AF | X_SF | X_CF | X_PF | X_ZF | X_OF)
-                        if(box64_dynarec_test) {
+                        if (BOX64ENV(dynarec_test)) {
                             MOV32w(x1, (1<<F_AF) | (1<<F_SF) | (1<<F_CF) | (1<<F_PF) | (1<<F_ZF) | (1<<F_OF));
                             BICw(xFlags, xFlags, x1);
                         }
@@ -3503,7 +3503,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     SKIPTEST(x1);
                     SETFLAGS(X_ALL, SF_SET);
                     GETSEB(x1, 0);
-                    if(box64_dynarec_div0) {
+                    if(BOX64ENV(dynarec_div0)) {
                         CBNZw_MARK3(ed);
                         GETIP_(ip);
                         STORE_XEMU_CALL(xRIP);
@@ -3520,7 +3520,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     BFIx(xRAX, x4, 8, 8);
                     SET_DFNONE();
                     IFX(X_AF | X_SF | X_CF | X_PF | X_ZF | X_OF)
-                        if(box64_dynarec_test) {
+                        if (BOX64ENV(dynarec_test)) {
                             MOV32w(x1, (1<<F_AF) | (1<<F_SF) | (1<<F_CF) | (1<<F_PF) | (1<<F_ZF) | (1<<F_OF));
                             BICw(xFlags, xFlags, x1);
                         }
@@ -3578,7 +3578,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             }
                         }
                         IFX(X_AF | X_PF | X_ZF | X_SF)
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 // to avoid noise during test
                                 MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));
                                 BICw(xFlags, xFlags, x3);
@@ -3612,7 +3612,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             }
                         }
                         IFX(X_AF | X_PF | X_ZF | X_SF)
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 // to avoid noise during test
                                 MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));
                                 BICw(xFlags, xFlags, x3);
@@ -3635,7 +3635,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             CALL(native_div0, -1);
                             LOAD_XEMU_CALL(xRIP);
                         } else {
-                            if(box64_dynarec_div0) {
+                            if(BOX64ENV(dynarec_div0)) {
                                 CBNZx_MARK3(ed);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(xRIP);
@@ -3662,7 +3662,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                            && *(uint8_t*)(dyn->insts[ninst-1].x64.addr)==0x31
                            && *(uint8_t*)(dyn->insts[ninst-1].x64.addr+1)==0xD2) {
                             GETED(0);
-                            if(box64_dynarec_div0) {
+                            if(BOX64ENV(dynarec_div0)) {
                                 CBNZx_MARK3(ed);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(xRIP);
@@ -3677,7 +3677,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             MOVx_REG(xRAX, x2);
                         } else {
                             GETEDH(x1, 0);  // get edd changed addr, so cannot be called 2 times for same op...
-                            if(box64_dynarec_div0) {
+                            if(BOX64ENV(dynarec_div0)) {
                                 CBNZx_MARK3(ed);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(xRIP);
@@ -3699,7 +3699,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     }
                     SET_DFNONE();
                     IFX(X_AF | X_SF | X_CF | X_PF | X_ZF | X_OF)
-                        if(box64_dynarec_test) {
+                        if (BOX64ENV(dynarec_test)) {
                             MOV32w(x1, (1<<F_AF) | (1<<F_SF) | (1<<F_CF) | (1<<F_PF) | (1<<F_ZF) | (1<<F_OF));
                             BICw(xFlags, xFlags, x1);
                         }
@@ -3710,7 +3710,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     SETFLAGS(X_ALL, SF_SET);
                     if(!rex.w) {
                         GETSEDw(0);
-                        if(box64_dynarec_div0) {
+                        if(BOX64ENV(dynarec_div0)) {
                             CBNZx_MARK3(wb);
                             GETIP_(ip);
                             STORE_XEMU_CALL(xRIP);
@@ -3732,7 +3732,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                            && *(uint8_t*)(dyn->insts[ninst-1].x64.addr)==0x48
                            && *(uint8_t*)(dyn->insts[ninst-1].x64.addr+1)==0x99) {
                             GETED(0);
-                            if(box64_dynarec_div0) {
+                            if(BOX64ENV(dynarec_div0)) {
                                 CBNZx_MARK3(ed);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(xRIP);
@@ -3747,7 +3747,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             MOVx_REG(xRAX, x2);
                         } else {
                             GETEDH(x1, 0);  // get edd changed addr, so cannot be called 2 times for same op...
-                            if(box64_dynarec_div0) {
+                            if(BOX64ENV(dynarec_div0)) {
                                 CBNZx_MARK3(ed);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(xRIP);
@@ -3777,7 +3777,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     }
                     SET_DFNONE();
                     IFX(X_AF | X_SF | X_CF | X_PF | X_ZF | X_OF)
-                        if(box64_dynarec_test) {
+                        if (BOX64ENV(dynarec_test)) {
                             MOV32w(x1, (1<<F_AF) | (1<<F_SF) | (1<<F_CF) | (1<<F_PF) | (1<<F_ZF) | (1<<F_OF));
                             BICw(xFlags, xFlags, x1);
                         }
@@ -3799,9 +3799,9 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0xFA:                      /* STI */
         case 0xFB:                      /* CLI */
             INST_NAME(opcode==0xFA?"CLI":"STI");
-            if(rex.is32bits && box64_ignoreint3)
+            if(rex.is32bits && BOX64ENV(ignoreint3))
             {} else {
-                if(box64_dynarec_safeflags>1) {
+                if(BOX64ENV(dynarec_safeflags)>1) {
                     READFLAGS(X_PEND);
                 } else {
                     SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state
@@ -3864,7 +3864,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     break;
                 case 2: // CALL Ed
                     INST_NAME("CALL Ed");
-                    PASS2IF((box64_dynarec_safeflags>1) ||
+                    PASS2IF((BOX64ENV(dynarec_safeflags)>1) ||
                         ((ninst && dyn->insts[ninst-1].x64.set_flags)
                         || ((ninst>1) && dyn->insts[ninst-2].x64.set_flags)), 1)
                     {
@@ -3873,7 +3873,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         SETFLAGS(X_ALL, SF_SET_NODF);    //Hack to put flag in "don't care" state
                     }
                     GETEDz(0);
-                    if(box64_dynarec_callret && box64_dynarec_bigblock>1) {
+                    if(BOX64ENV(dynarec_callret) && BOX64ENV(dynarec_bigblock)>1) {
                         BARRIER(BARRIER_FULL);
                     } else {
                         BARRIER(BARRIER_FLOAT);
@@ -3881,7 +3881,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         *ok = 0;
                     }
                     GETIP_(addr);
-                    if(box64_dynarec_callret) {
+                    if(BOX64ENV(dynarec_callret)) {
                         SET_HASCALLRET();
                         // Push actual return address
                         if(addr < (dyn->start+dyn->isize)) {
@@ -3898,7 +3898,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     }
                     PUSH1z(xRIP);
                     jump_to_next(dyn, 0, ed, ninst, rex.is32bits);
-                    if(box64_dynarec_callret && addr >= (dyn->start + dyn->isize)) {
+                    if(BOX64ENV(dynarec_callret) && addr >= (dyn->start + dyn->isize)) {
                         // jumps out of current dynablock...
                         MARK;
                         j64 = getJumpTableAddress64(addr);
@@ -3922,7 +3922,7 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         LDH(x4, xEmu, offsetof(x64emu_t, segs[_CS]));
                         GETIP_(addr);
                         /*
-                        if(box64_dynarec_callret) {
+                        if(BOX64ENV(dynarec_callret)) {
                             SET_HASCALLRET();
                             // Push actual return address
                             if(addr < (dyn->start+dyn->isize)) {
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c
index fbb5d399..98f84863 100644
--- a/src/dynarec/arm64/dynarec_arm64_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_0f.c
@@ -165,7 +165,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
 

         case 0x09:

             INST_NAME("WBINVD");

-            if(box64_dynarec_safeflags>1) {

+            if(BOX64ENV(dynarec_safeflags)>1) {

                 READFLAGS(X_PEND);

             } else {

                 SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state

@@ -181,7 +181,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
 

         case 0x0B:

             INST_NAME("UD2");

-            if(box64_dynarec_safeflags>1) {

+            if(BOX64ENV(dynarec_safeflags)>1) {

                 READFLAGS(X_PEND);

             } else {

                 SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state

@@ -220,7 +220,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             break;

         case 0x0E:

             INST_NAME("femms");

-            if(box64_dynarec_safeflags>1) {

+            if(BOX64ENV(dynarec_safeflags)>1) {

                 READFLAGS(X_PEND);

             } else {

                 SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state

@@ -446,7 +446,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             nextop = F8;

             GETGM(q0);

             GETEX(v1, 0, 0);

-            if (box64_dynarec_fastround) {

+            if (BOX64ENV(dynarec_fastround)) {

                 VFCVTZSS(q0, v1);

             } else {

                 if(arm64_frintts) {

@@ -480,7 +480,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             nextop = F8;

             GETGM(q0);

             GETEX(v1, 0, 0);

-            if (box64_dynarec_fastround) {

+            if (BOX64ENV(dynarec_fastround)) {

                 u8 = sse_setround(dyn, ninst, x1, x2, x3);

                 VFRINTIS(q0, v1);

                 x87_restoreround(dyn, ninst, u8);

@@ -527,7 +527,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             break;

         case 0x30:

             INST_NAME("WRMSR");

-            if(box64_dynarec_safeflags>1) {

+            if(BOX64ENV(dynarec_safeflags)>1) {

                 READFLAGS(X_PEND);

             } else {

                 SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state

@@ -1175,7 +1175,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             // FMIN/FMAX wll not copy the value if v0[x] is NaN

             // but x86 will copy if either v0[x] or v1[x] is NaN, so lets force a copy if source is NaN

             VFMINQS(v0, v0, v1);

-            if(!box64_dynarec_fastnan && (v0!=v1)) {

+            if(!BOX64ENV(dynarec_fastnan) && (v0!=v1)) {

                 q0 = fpu_get_scratch(dyn, ninst);

                 VFCMEQQS(q0, v0, v0);   // 0 is NaN, 1 is not NaN, so MASK for NaN

                 VBIFQ(v0, v1, q0);   // copy dest where source is NaN

@@ -1196,7 +1196,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             // FMIN/FMAX wll not copy the value if v0[x] is NaN

             // but x86 will copy if either v0[x] or v1[x] is NaN, so lets force a copy if source is NaN

             VFMAXQS(v0, v0, v1);

-            if(!box64_dynarec_fastnan && (v0!=v1)) {

+            if(!BOX64ENV(dynarec_fastnan) && (v0!=v1)) {

                 q0 = fpu_get_scratch(dyn, ninst);

                 VFCMEQQS(q0, v0, v0);   // 0 is NaN, 1 is not NaN, so MASK for NaN

                 VBIFQ(v0, v1, q0);   // copy dest where source is NaN

@@ -1693,7 +1693,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 LSRxw_REG(x4, ed, x2);

                 BFIw(xFlags, x4, F_CF, 1);

             }

-            if(box64_dynarec_test) {

+            if (BOX64ENV(dynarec_test)) {

                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -1719,7 +1719,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             nextop = F8;

             INST_NAME("SHLD Ed, Gd, CL");

             SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined

-            if(box64_dynarec_safeflags>1)

+            if(BOX64ENV(dynarec_safeflags)>1)

                 MAYSETFLAGS();

             GETGD;

             GETED(0);

@@ -1781,7 +1781,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 STxw(ed, wback, fixedaddress);

                 SMWRITE();

             }

-            if(box64_dynarec_test) {

+            if (BOX64ENV(dynarec_test)) {

                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -1807,7 +1807,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             nextop = F8;

             INST_NAME("SHRD Ed, Gd, CL");

             SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined

-            if(box64_dynarec_safeflags>1)

+            if(BOX64ENV(dynarec_safeflags)>1)

                 MAYSETFLAGS();

             GETGD;

             GETED(0);

@@ -1863,7 +1863,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         INST_NAME("LDMXCSR Md");

                         GETED(0);

                         STRw_U12(ed, xEmu, offsetof(x64emu_t, mxcsr));

-                        if(box64_sse_flushto0) {

+                        if(BOX64ENV(sse_flushto0)) {

                             MRS_fpcr(x1);                   // get fpscr

                             LSRw_IMM(x3, ed, 15);           // get FZ bit

                             BFIw(x1, x3, 24, 1);            // inject FZ bit

@@ -1956,7 +1956,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 }

             }

             IFX(X_AF | X_PF | X_ZF | X_SF)

-                if(box64_dynarec_test) {

+                if (BOX64ENV(dynarec_test)) {

                     // to avoid noise during test

                     MOV32w(x1, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));

                     BICw(xFlags, xFlags, x1);

@@ -2025,7 +2025,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 STxw(ed, wback, fixedaddress);

                 SMWRITE();

             }

-            if(box64_dynarec_test) {

+            if (BOX64ENV(dynarec_test)) {

                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2088,7 +2088,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     IFX(X_CF) {

                         BFXILxw(xFlags, ed, u8, 1);  // inject 1 bit from u8 to F_CF (i.e. pos 0)

                     }

-                    if(box64_dynarec_test) {

+                    if (BOX64ENV(dynarec_test)) {

                         IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                         IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2119,7 +2119,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         STxw(ed, wback, fixedaddress);

                         SMWRITE();

                     }

-                    if(box64_dynarec_test) {

+                    if (BOX64ENV(dynarec_test)) {

                         IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                         IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2149,7 +2149,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         STxw(ed, wback, fixedaddress);

                         SMWRITE();

                     }

-                    if(box64_dynarec_test) {

+                    if (BOX64ENV(dynarec_test)) {

                         IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                         IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2180,7 +2180,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         STxw(ed, wback, fixedaddress);

                         SMWRITE();

                     }

-                    if(box64_dynarec_test) {

+                    if (BOX64ENV(dynarec_test)) {

                         IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                         IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2226,7 +2226,7 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 STxw(ed, wback, fixedaddress);

                 SMWRITE();

             }

-            if(box64_dynarec_test) {

+            if (BOX64ENV(dynarec_test)) {

                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

diff --git a/src/dynarec/arm64/dynarec_arm64_64.c b/src/dynarec/arm64/dynarec_arm64_64.c
index 060da592..a0c706cd 100644
--- a/src/dynarec/arm64/dynarec_arm64_64.c
+++ b/src/dynarec/arm64/dynarec_arm64_64.c
@@ -320,7 +320,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                                 }
                             }
                             IFX(X_AF | X_PF | X_ZF | X_SF)
-                                if(box64_dynarec_test) {
+                                if (BOX64ENV(dynarec_test)) {
                                     // to avoid noise during test
                                     MOV32w(x1, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));
                                     BICw(xFlags, xFlags, x1);
@@ -607,7 +607,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0x6C:
         case 0x6D:
             INST_NAME(opcode == 0x6C ? "INSB" : "INSD");
-            if(box64_dynarec_safeflags>1) {
+            if(BOX64ENV(dynarec_safeflags)>1) {
                 READFLAGS(X_PEND);
             } else {
                 SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state
@@ -623,7 +623,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0x6E:
         case 0x6F:
             INST_NAME(opcode == 0x6C ? "OUTSB" : "OUTSD");
-            if(box64_dynarec_safeflags>1) {
+            if(BOX64ENV(dynarec_safeflags)>1) {
                 READFLAGS(X_PEND);
             } else {
                 SETFLAGS(X_ALL, SF_SET_NODF);    // Hack to set flags in "don't care" state
@@ -1263,7 +1263,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 6:
                     INST_NAME("SHL Ed, CL");
                     SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     if(rex.w) {
                         ANDx_mask(x3, xRCX, 1, 0, 0b00101);  //mask=0x000000000000003f
@@ -1279,7 +1279,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 5:
                     INST_NAME("SHR Ed, CL");
                     SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     if(rex.w) {
                         ANDx_mask(x3, xRCX, 1, 0, 0b00101);  //mask=0x000000000000003f
@@ -1295,7 +1295,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 7:
                     INST_NAME("SAR Ed, CL");
                     SETFLAGS(X_ALL, SF_SET_PENDING);
-                    if(box64_dynarec_safeflags>1)
+                    if(BOX64ENV(dynarec_safeflags)>1)
                         MAYSETFLAGS();
                     if(rex.w) {
                         ANDx_mask(x3, xRCX, 1, 0, 0b00101);  //mask=0x000000000000003f
@@ -1367,7 +1367,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             }
                         }
                         IFX(X_AF | X_PF | X_ZF | X_SF)
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 // to avoid noise during test
                                 MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));
                                 BICw(xFlags, xFlags, x3);
@@ -1402,7 +1402,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             }
                         }
                         IFX(X_AF | X_PF | X_ZF | X_SF)
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 // to avoid noise during test
                                 MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));
                                 BICw(xFlags, xFlags, x3);
@@ -1414,7 +1414,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     SETFLAGS(X_ALL, SF_SET);
                     if(!rex.w) {
                         GETEDO(x6, 0);
-                        if(box64_dynarec_div0) {
+                        if(BOX64ENV(dynarec_div0)) {
                             CBNZx_MARK3(ed);
                             GETIP_(ip);
                             STORE_XEMU_CALL(xRIP);
@@ -1440,7 +1440,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                            && *(uint8_t*)(dyn->insts[ninst-1].x64.addr)==0x31
                            && *(uint8_t*)(dyn->insts[ninst-1].x64.addr+1)==0xD2) {
                             GETEDO(x6, 0);
-                            if(box64_dynarec_div0) {
+                            if(BOX64ENV(dynarec_div0)) {
                                 CBNZx_MARK3(ed);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(xRIP);
@@ -1460,7 +1460,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             CALL(div64, -1);
                             B_NEXT_nocond;
                             MARK;
-                            if(box64_dynarec_div0) {
+                            if(BOX64ENV(dynarec_div0)) {
                                 CBNZx_MARK3(ed);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(xRIP);
@@ -1477,7 +1477,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     }
                     SET_DFNONE();
                     IFX(X_AF | X_SF | X_CF | X_PF | X_ZF | X_OF)
-                        if(box64_dynarec_test) {
+                        if (BOX64ENV(dynarec_test)) {
                             MOV32w(x1, (1<<F_AF) | (1<<F_SF) | (1<<F_CF) | (1<<F_PF) | (1<<F_ZF) | (1<<F_OF));
                             BICw(xFlags, xFlags, x1);
                         }
@@ -1490,7 +1490,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         GETSEDOw(x6, 0);
                         MOVw_REG(x3, xRAX);
                         ORRx_REG_LSL(x3, x3, xRDX, 32);
-                        if(box64_dynarec_div0) {
+                        if(BOX64ENV(dynarec_div0)) {
                             CBNZx_MARK3(wb);
                             GETIP_(ip);
                             STORE_XEMU_CALL(xRIP);
@@ -1510,7 +1510,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                            && *(uint8_t*)(dyn->insts[ninst-1].x64.addr)==0x48
                            && *(uint8_t*)(dyn->insts[ninst-1].x64.addr+1)==0x99) {
                             GETEDO(x6, 0);
-                            if(box64_dynarec_div0) {
+                            if(BOX64ENV(dynarec_div0)) {
                                 CBNZx_MARK3(ed);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(xRIP);
@@ -1525,7 +1525,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             MOVx_REG(xRAX, x2);
                         } else {
                             GETEDO(x6, 0);
-                            if(box64_dynarec_div0) {
+                            if(BOX64ENV(dynarec_div0)) {
                                 CBNZx_MARK3(ed);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(xRIP);
@@ -1549,7 +1549,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     }
                     SET_DFNONE();
                     IFX(X_AF | X_SF | X_CF | X_PF | X_ZF | X_OF)
-                        if(box64_dynarec_test) {
+                        if (BOX64ENV(dynarec_test)) {
                             MOV32w(x1, (1<<F_AF) | (1<<F_SF) | (1<<F_CF) | (1<<F_PF) | (1<<F_ZF) | (1<<F_OF));
                             BICw(xFlags, xFlags, x1);
                         }
@@ -1577,7 +1577,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     break;
                 case 2: // CALL Ed
                     INST_NAME("CALL Ed");
-                    PASS2IF((box64_dynarec_safeflags>1) ||
+                    PASS2IF((BOX64ENV(dynarec_safeflags)>1) ||
                         ((ninst && dyn->insts[ninst-1].x64.set_flags)
                         || ((ninst>1) && dyn->insts[ninst-2].x64.set_flags)), 1)
                     {
@@ -1586,7 +1586,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         SETFLAGS(X_ALL, SF_SET_NODF);    //Hack to put flag in "don't care" state
                     }
                     GETEDOz(x6, 0);
-                    if(box64_dynarec_callret && box64_dynarec_bigblock>1) {
+                    if(BOX64ENV(dynarec_callret) && BOX64ENV(dynarec_bigblock)>1) {
                         BARRIER(BARRIER_FULL);
                     } else {
                         BARRIER(BARRIER_FLOAT);
@@ -1594,7 +1594,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         *ok = 0;
                     }
                     GETIP_(addr);
-                    if(box64_dynarec_callret) {
+                    if(BOX64ENV(dynarec_callret)) {
                         SET_HASCALLRET();
                         // Push actual return address
                         if(addr < (dyn->start+dyn->isize)) {
@@ -1611,7 +1611,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     }
                     PUSH1z(xRIP);
                     jump_to_next(dyn, 0, ed, ninst, rex.is32bits);
-                    if(box64_dynarec_callret && addr >= (dyn->start + dyn->isize)) {
+                    if(BOX64ENV(dynarec_callret) && addr >= (dyn->start + dyn->isize)) {
                         // jumps out of current dynablock...
                         MARK;
                         j64 = getJumpTableAddress64(addr);
diff --git a/src/dynarec/arm64/dynarec_arm64_66.c b/src/dynarec/arm64/dynarec_arm64_66.c
index c2a92dc0..b42e14d2 100644
--- a/src/dynarec/arm64/dynarec_arm64_66.c
+++ b/src/dynarec/arm64/dynarec_arm64_66.c
@@ -458,7 +458,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     }

                 }

                 IFX(X_AF | X_PF | X_ZF | X_SF)

-                    if(box64_dynarec_test) {

+                    if (BOX64ENV(dynarec_test)) {

                         // to avoid noise during test

                         MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));

                         BICw(xFlags, xFlags, x3);

@@ -836,7 +836,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             case 1:

             case 2:

                 if(rep==1) {INST_NAME("REPNZ CMPSW");} else {INST_NAME("REPZ CMPSW");}

-                if(box64_dynarec_safeflags>1)

+                if(BOX64ENV(dynarec_safeflags)>1)

                     MAYSETFLAGS();

                 SETFLAGS(X_ALL, SF_SET_PENDING);

                 CBZx_NEXT(xRCX);

@@ -936,7 +936,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             case 1:

             case 2:

                 if(rep==1) {INST_NAME("REPNZ SCASW");} else {INST_NAME("REPZ SCASW");}

-                if(box64_dynarec_safeflags>1)

+                if(BOX64ENV(dynarec_safeflags)>1)

                     MAYSETFLAGS();

                 SETFLAGS(X_ALL, SF_SET_PENDING);

                 CBZx_NEXT(xRCX);

@@ -1167,7 +1167,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 0:

                     INST_NAME("ROL Ew, CL");

                     SETFLAGS(X_OF|X_CF, SF_SUBSET);

-                    if(box64_dynarec_safeflags>1)

+                    if(BOX64ENV(dynarec_safeflags)>1)

                         MAYSETFLAGS();

                     UFLAG_IF {

                         ANDw_mask(x2, xRCX, 0, 0b00100);  //mask=0x00000001f

@@ -1193,7 +1193,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 1:

                     INST_NAME("ROR Ew, CL");

                     SETFLAGS(X_OF|X_CF, SF_SUBSET);

-                    if(box64_dynarec_safeflags>1)

+                    if(BOX64ENV(dynarec_safeflags)>1)

                         MAYSETFLAGS();

                     UFLAG_IF {

                         ANDw_mask(x2, xRCX, 0, 0b00100);  //mask=0x00000001f

@@ -1219,7 +1219,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     INST_NAME("RCL Ew, CL");

                     MESSAGE(LOG_DUMP, "Need Optimization\n");

                     READFLAGS(X_CF);

-                    if(box64_dynarec_safeflags>1)

+                    if(BOX64ENV(dynarec_safeflags)>1)

                         MAYSETFLAGS();

                     SETFLAGS(X_OF|X_CF, SF_SET_DF);

                     ANDw_mask(x2, xRCX, 0, 0b00100);

@@ -1231,7 +1231,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     INST_NAME("RCR Ew, CL");

                     MESSAGE(LOG_DUMP, "Need Optimization\n");

                     READFLAGS(X_CF);

-                    if(box64_dynarec_safeflags>1)

+                    if(BOX64ENV(dynarec_safeflags)>1)

                         MAYSETFLAGS();

                     SETFLAGS(X_OF|X_CF, SF_SET_DF);

                     ANDw_mask(x2, xRCX, 0, 0b00100);

@@ -1243,7 +1243,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 6:

                     INST_NAME("SHL Ew, CL");

                     SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined

-                    if(box64_dynarec_safeflags>1)

+                    if(BOX64ENV(dynarec_safeflags)>1)

                         MAYSETFLAGS();

                     ANDw_mask(x2, xRCX, 0, 0b00100);  //mask=0x00000001f

                     UFLAG_IF {

@@ -1256,7 +1256,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 5:

                     INST_NAME("SHR Ew, CL");

                     SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined

-                    if(box64_dynarec_safeflags>1)

+                    if(BOX64ENV(dynarec_safeflags)>1)

                         MAYSETFLAGS();

                     ANDw_mask(x2, xRCX, 0, 0b00100);  //mask=0x00000001f

                     UFLAG_IF {

@@ -1269,7 +1269,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 case 7:

                     INST_NAME("SAR Ew, CL");

                     SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined

-                    if(box64_dynarec_safeflags>1)

+                    if(BOX64ENV(dynarec_safeflags)>1)

                         MAYSETFLAGS();

                     ANDw_mask(x2, xRCX, 0, 0b00100);  //mask=0x00000001f

                     UFLAG_IF {

@@ -1385,7 +1385,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             }

                         }

                         IFX(X_AF | X_PF | X_ZF | X_SF)

-                            if(box64_dynarec_test) {

+                            if (BOX64ENV(dynarec_test)) {

                                 // to avoid noise during test

                                 MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));

                                 BICw(xFlags, xFlags, x3);

@@ -1414,7 +1414,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             }

                         }

                         IFX(X_AF | X_PF | X_ZF | X_SF)

-                            if(box64_dynarec_test) {

+                            if (BOX64ENV(dynarec_test)) {

                                 // to avoid noise during test

                                 MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));

                                 BICw(xFlags, xFlags, x3);

@@ -1427,7 +1427,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     GETEW(x1, 0);

                     UXTHw(x2, xRAX);

                     BFIw(x2, xRDX, 16, 16);

-                    if(box64_dynarec_div0) {

+                    if(BOX64ENV(dynarec_div0)) {

                         CBNZw_MARK3(ed);

                         GETIP_(ip);

                         STORE_XEMU_CALL(xRIP);

@@ -1443,7 +1443,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     BFIz(xRDX, x4, 0, 16);

                     SET_DFNONE();

                     IFX(X_AF | X_SF | X_CF | X_PF | X_ZF | X_OF)

-                        if(box64_dynarec_test) {

+                        if (BOX64ENV(dynarec_test)) {

                             MOV32w(x1, (1<<F_AF) | (1<<F_SF) | (1<<F_CF) | (1<<F_PF) | (1<<F_ZF) | (1<<F_OF));

                             BICw(xFlags, xFlags, x1);

                         }

@@ -1453,7 +1453,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     SKIPTEST(x1);

                     SETFLAGS(X_ALL, SF_SET);

                     GETSEW(x1, 0);

-                    if(box64_dynarec_div0) {

+                    if(BOX64ENV(dynarec_div0)) {

                         CBNZw_MARK3(ed);

                         GETIP_(ip);

                         STORE_XEMU_CALL(xRIP);

@@ -1471,7 +1471,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     BFIz(xRDX, x4, 0, 16);

                     SET_DFNONE();

                     IFX(X_AF | X_SF | X_CF | X_PF | X_ZF | X_OF)

-                        if(box64_dynarec_test) {

+                        if (BOX64ENV(dynarec_test)) {

                             MOV32w(x1, (1<<F_AF) | (1<<F_SF) | (1<<F_CF) | (1<<F_PF) | (1<<F_ZF) | (1<<F_OF));

                             BICw(xFlags, xFlags, x1);

                         }

diff --git a/src/dynarec/arm64/dynarec_arm64_660f.c b/src/dynarec/arm64/dynarec_arm64_660f.c
index 8867b0a6..54f98516 100644
--- a/src/dynarec/arm64/dynarec_arm64_660f.c
+++ b/src/dynarec/arm64/dynarec_arm64_660f.c
@@ -231,7 +231,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETGM(q0);

             GETEX(v1, 0, 0);

-            if(box64_dynarec_fastround) {

+            if(BOX64ENV(dynarec_fastround)) {

                 VFCVTZSQD(q0, v1);

                 SQXTN_32(q0, q0);

             } else {

@@ -267,7 +267,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETGM(q0);

             GETEX(v1, 0, 0);

-            if(box64_dynarec_fastround) {

+            if(BOX64ENV(dynarec_fastround)) {

                 u8 = sse_setround(dyn, ninst, x1, x2, x3);

                 VFRINTIDQ(q0, v1);

                 FCVTXN(q0, q0);

@@ -1640,7 +1640,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETEX(q0, 0, 0);

             GETGX_empty(q1);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 v0 = fpu_get_scratch(dyn, ninst);

                 v1 = fpu_get_scratch(dyn, ninst);

                 // check if any input value was NAN

@@ -1695,7 +1695,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETEX(q0, 0, 0);

             GETGX(q1, 1);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 v0 = fpu_get_scratch(dyn, ninst);

                 v1 = fpu_get_scratch(dyn, ninst);

                 // check if any input value was NAN

@@ -1703,7 +1703,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 VFCMEQQD(v0, v0, v0);    // 0 if NAN, 1 if not NAN

             }

             VFADDQD(q1, q1, q0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 VFCMEQQD(v1, q1, q1);    // 0 => out is NAN

                 VBICQ(v1, v0, v1);      // forget it in any input was a NAN already

                 VSHLQ_64(v1, v1, 63);   // only keep the sign bit

@@ -1715,7 +1715,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETEX(q0, 0, 0);

             GETGX(q1, 1);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 v0 = fpu_get_scratch(dyn, ninst);

                 v1 = fpu_get_scratch(dyn, ninst);

                 // check if any input value was NAN

@@ -1723,7 +1723,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 VFCMEQQD(v0, v0, v0);    // 0 if NAN, 1 if not NAN

             }

             VFMULQD(q1, q1, q0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 VFCMEQQD(v1, q1, q1);    // 0 => out is NAN

                 VBICQ(v1, v0, v1);      // forget it in any input was a NAN already

                 VSHLQ_64(v1, v1, 63);   // only keep the sign bit

@@ -1735,7 +1735,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETEX(v1, 0, 0);

             GETGX_empty(v0);

-            if(box64_dynarec_fastround==2) {

+            if(BOX64ENV(dynarec_fastround)==2) {

                 FCVTXN(v0, v1);

             } else {

                 u8 = sse_setround(dyn, ninst, x1, x2, x3);

@@ -1748,7 +1748,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETEX(v1, 0, 0);

             GETGX_empty(v0);

-            if(box64_dynarec_fastround) {

+            if(BOX64ENV(dynarec_fastround)) {

                 u8 = sse_setround(dyn, ninst, x1, x2, x3);

                 VFRINTISQ(v0, v1);

                 x87_restoreround(dyn, ninst, u8);

@@ -1783,7 +1783,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETEX(q0, 0, 0);

             GETGX(q1, 1);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 v0 = fpu_get_scratch(dyn, ninst);

                 v1 = fpu_get_scratch(dyn, ninst);

                 // check if any input value was NAN

@@ -1791,7 +1791,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 VFCMEQQD(v0, v0, v0);    // 0 if NAN, 1 if not NAN

             }

             VFSUBQD(q1, q1, q0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 VFCMEQQD(v1, q1, q1);    // 0 => out is NAN

                 VBICQ(v1, v0, v1);      // forget it in any input was a NAN already

                 VSHLQ_64(v1, v1, 63);   // only keep the sign bit

@@ -1805,7 +1805,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             GETEX(v1, 0, 0);

             // FMIN/FMAX wll not copy the value if v0[x] is NaN

             // but x86 will copy if either v0[x] or v1[x] is NaN, so lets force a copy if source is NaN

-            if(!box64_dynarec_fastnan && v0!=v1) {

+            if(!BOX64ENV(dynarec_fastnan) && v0!=v1) {

                 q0 = fpu_get_scratch(dyn, ninst);

                 VFCMEQQD(q0, v0, v0);   // 0 is NaN, 1 is not NaN, so MASK for NaN

                 VANDQ(v0, v0, q0);

@@ -1819,7 +1819,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETEX(q0, 0, 0);

             GETGX(q1, 1);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 v0 = fpu_get_scratch(dyn, ninst);

                 v1 = fpu_get_scratch(dyn, ninst);

                 // check if any input value was NAN

@@ -1827,7 +1827,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 VFCMEQQD(v0, v0, v0);    // 0 if NAN, 1 if not NAN

             }

             VFDIVQD(q1, q1, q0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 VFCMEQQD(v1, q1, q1);    // 0 => out is NAN

                 VBICQ(v1, v0, v1);      // forget it in any input was a NAN already

                 VSHLQ_64(v1, v1, 63);   // only keep the sign bit

@@ -1841,7 +1841,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             GETEX(v1, 0, 0);

             // FMIN/FMAX wll not copy the value if v0[x] is NaN

             // but x86 will copy if either v0[x] or v1[x] is NaN, so lets force a copy if source is NaN

-            if(!box64_dynarec_fastnan && v0!=v1) {

+            if(!BOX64ENV(dynarec_fastnan) && v0!=v1) {

                 q0 = fpu_get_scratch(dyn, ninst);

                 VFCMEQQD(q0, v0, v0);   // 0 is NaN, 1 is not NaN, so MASK for NaN

                 VANDQ(v0, v0, q0);

@@ -2261,7 +2261,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETGX(q1, 1);

             GETEX(q0, 0, 0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 v0 = fpu_get_scratch(dyn, ninst);

                 v1 = fpu_get_scratch(dyn, ninst);

                 // check if any input value was NAN

@@ -2272,7 +2272,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 VFCMEQQD(v0, v0, v0);    // 0 if NAN, 1 if not NAN

             }

             VFADDPQD(q1, q1, q0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 VFCMEQQD(v1, q1, q1);    // 0 => out is NAN

                 VBICQ(v1, v0, v1);      // forget it in any input was a NAN already

                 VSHLQ_64(v1, v1, 63);   // only keep the sign bit

@@ -2348,7 +2348,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 LSRw_REG(x1, ed, x2);

                 BFIw(xFlags, x1, F_CF, 1);

             }

-            if(box64_dynarec_test) {

+            if (BOX64ENV(dynarec_test)) {

                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2375,7 +2375,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             INST_NAME("SHLD Ew, Gw, CL");

             SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined

-            if(box64_dynarec_safeflags>1)

+            if(BOX64ENV(dynarec_safeflags)>1)

                 MAYSETFLAGS();

             GETGW(x2);

             GETEW(x1, 0);

@@ -2416,7 +2416,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 STH(ed, wback, fixedaddress);

                 SMWRITE();

             }

-            if(box64_dynarec_test) {

+            if (BOX64ENV(dynarec_test)) {

                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2443,7 +2443,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             INST_NAME("SHRD Ew, Gw, CL");

             SETFLAGS(X_ALL, SF_SET_PENDING);    // some flags are left undefined

-            if(box64_dynarec_safeflags>1)

+            if(BOX64ENV(dynarec_safeflags)>1)

                 MAYSETFLAGS();

             GETGW(x2);

             GETEW(x1, 0);

@@ -2508,7 +2508,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                     }

                 }

                 IFX(X_AF | X_PF | X_ZF | X_SF)

-                    if(box64_dynarec_test) {

+                    if (BOX64ENV(dynarec_test)) {

                         // to avoid noise during test

                         MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));

                         BICw(xFlags, xFlags, x3);

@@ -2544,7 +2544,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 STH(ed, wback, fixedaddress);

                 SMWRITE();

             }

-            if(box64_dynarec_test) {

+            if (BOX64ENV(dynarec_test)) {

                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2603,7 +2603,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                     IFX(X_CF) {

                         BFXILxw(xFlags, ed, u8, 1);  // inject 1 bit from u8 to F_CF (i.e. pos 0)

                     }

-                    if(box64_dynarec_test) {

+                    if (BOX64ENV(dynarec_test)) {

                         IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                         IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2623,7 +2623,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                     mask = convert_bitmask_xw(1<<u8);

                     ORRxw_mask(ed, ed, (mask>>12)&1, mask&0x3F, (mask>>6)&0x3F);

                     EWBACK;

-                    if(box64_dynarec_test) {

+                    if (BOX64ENV(dynarec_test)) {

                         IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                         IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2642,7 +2642,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                     }

                     BFCxw(ed, u8, 1);

                     EWBACK;

-                    if(box64_dynarec_test) {

+                    if (BOX64ENV(dynarec_test)) {

                         IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                         IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2662,7 +2662,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                     mask = convert_bitmask_xw(1<<u8);

                     EORxw_mask(ed, ed, (mask>>12)&1, mask&0x3F, (mask>>6)&0x3F);

                     EWBACK;

-                    if(box64_dynarec_test) {

+                    if (BOX64ENV(dynarec_test)) {

                         IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                         IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -2703,7 +2703,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 STH(ed, wback, fixedaddress);

                 SMWRITE();

             }

-            if(box64_dynarec_test) {

+            if (BOX64ENV(dynarec_test)) {

                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}

                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}

                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}

@@ -3134,7 +3134,7 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETEX(v1, 0, 0);

             GETGX_empty(v0);

-            if(box64_dynarec_fastround) {

+            if(BOX64ENV(dynarec_fastround)) {

                 VFCVTZSQD(v0, v1);  // convert double -> int64

                 SQXTN_32(v0, v0);   // convert int64 -> int32 with saturation in lower part, RaZ high part

             } else {

diff --git a/src/dynarec/arm64/dynarec_arm64_67.c b/src/dynarec/arm64/dynarec_arm64_67.c
index f7e41c3e..fbe4b4c7 100644
--- a/src/dynarec/arm64/dynarec_arm64_67.c
+++ b/src/dynarec/arm64/dynarec_arm64_67.c
@@ -1488,7 +1488,7 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             }

                         }

                         IFX(X_AF | X_PF | X_ZF | X_SF)

-                            if(box64_dynarec_test) {

+                            if (BOX64ENV(dynarec_test)) {

                                 // to avoid noise during test

                                 MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));

                                 BICw(xFlags, xFlags, x3);

@@ -1522,7 +1522,7 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             }

                         }

                         IFX(X_AF | X_PF | X_ZF | X_SF)

-                            if(box64_dynarec_test) {

+                            if (BOX64ENV(dynarec_test)) {

                                 // to avoid noise during test

                                 MOV32w(x3, (1<<F_ZF)|(1<<F_AF)|(1<<F_PF)|(1<<F_SF));

                                 BICw(xFlags, xFlags, x3);

@@ -1567,7 +1567,7 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     }

                     SET_DFNONE();

                     IFX(X_AF | X_SF | X_CF | X_PF | X_ZF | X_OF)

-                        if(box64_dynarec_test) {

+                        if (BOX64ENV(dynarec_test)) {

                             MOV32w(x1, (1<<F_AF) | (1<<F_SF) | (1<<F_CF) | (1<<F_PF) | (1<<F_ZF) | (1<<F_OF));

                             BICw(xFlags, xFlags, x1);

                         }

@@ -1609,7 +1609,7 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     }

                     SET_DFNONE();

                     IFX(X_AF | X_SF | X_CF | X_PF | X_ZF | X_OF)

-                        if(box64_dynarec_test) {

+                        if (BOX64ENV(dynarec_test)) {

                             MOV32w(x1, (1<<F_AF) | (1<<F_SF) | (1<<F_CF) | (1<<F_PF) | (1<<F_ZF) | (1<<F_OF));

                             BICw(xFlags, xFlags, x1);

                         }

@@ -1635,7 +1635,7 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     break;

                 case 2: // CALL Ed

                     INST_NAME("CALL Ed");

-                    PASS2IF((box64_dynarec_safeflags>1) ||

+                    PASS2IF((BOX64ENV(dynarec_safeflags)>1) ||

                         ((ninst && dyn->insts[ninst-1].x64.set_flags)

                         || ((ninst>1) && dyn->insts[ninst-2].x64.set_flags)), 1)

                     {

@@ -1644,7 +1644,7 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         SETFLAGS(X_ALL, SF_SET_NODF);    //Hack to put flag in "don't care" state

                     }

                     GETED32(0);

-                    if(box64_dynarec_callret && box64_dynarec_bigblock>1) {

+                    if(BOX64ENV(dynarec_callret) && BOX64ENV(dynarec_bigblock)>1) {

                         BARRIER(BARRIER_FULL);

                     } else {

                         BARRIER(BARRIER_FLOAT);

@@ -1652,7 +1652,7 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         *ok = 0;

                     }

                     GETIP_(addr);

-                    if(box64_dynarec_callret) {

+                    if(BOX64ENV(dynarec_callret)) {

                         SET_HASCALLRET();

                         // Push actual return address

                         if(addr < (dyn->start+dyn->isize)) {

@@ -1669,7 +1669,7 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     }

                     PUSH1z(xRIP);

                     jump_to_next(dyn, 0, ed, ninst, rex.is32bits);

-                    if(box64_dynarec_callret && addr >= (dyn->start + dyn->isize)) {

+                    if(BOX64ENV(dynarec_callret) && addr >= (dyn->start + dyn->isize)) {

                         // jumps out of current dynablock...

                         MARK;

                         j64 = getJumpTableAddress64(addr);

diff --git a/src/dynarec/arm64/dynarec_arm64_67_avx.c b/src/dynarec/arm64/dynarec_arm64_67_avx.c
index 6dcf16bf..dbb32abd 100644
--- a/src/dynarec/arm64/dynarec_arm64_67_avx.c
+++ b/src/dynarec/arm64/dynarec_arm64_67_avx.c
@@ -132,7 +132,7 @@ uintptr_t dynarec64_67_AVX(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int
     }
     else {DEFAULT;}
 
-    if((*ok==-1) && (box64_dynarec_log>=LOG_INFO || box64_dynarec_dump || box64_dynarec_missing==1)) {
+    if((*ok==-1) && (BOX64ENV(dynarec_log)>=LOG_INFO || BOX64ENV(dynarec_dump) || BOX64ENV(dynarec_missing)==1)) {
         dynarec_log(LOG_NONE, "Dynarec unimplemented AVX opcode size %d prefix %s map %s opcode %02X ", 128<<vex.l, avx_prefix_string(vex.p), avx_map_string(vex.m), opcode);
     }
     return addr;
diff --git a/src/dynarec/arm64/dynarec_arm64_avx.c b/src/dynarec/arm64/dynarec_arm64_avx.c
index 0fa47ec0..ad90c319 100644
--- a/src/dynarec/arm64/dynarec_arm64_avx.c
+++ b/src/dynarec/arm64/dynarec_arm64_avx.c
@@ -71,7 +71,7 @@ uintptr_t dynarec64_AVX(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int ni
         addr = dynarec64_AVX_F3_0F38(dyn, addr, ip, ninst, vex, ok, need_epilog);
     else {DEFAULT;}
 
-    if((*ok==-1) && (box64_dynarec_log>=LOG_INFO || box64_dynarec_dump || box64_dynarec_missing==1)) {
+    if((*ok==-1) && (BOX64ENV(dynarec_log)>=LOG_INFO || BOX64ENV(dynarec_dump) || BOX64ENV(dynarec_missing)==1)) {
         dynarec_log(LOG_NONE, "Dynarec unimplemented AVX opcode size %d prefix %s map %s opcode %02X ", 128<<vex.l, avx_prefix_string(vex.p), avx_map_string(vex.m), opcode);
     }
     return addr;
diff --git a/src/dynarec/arm64/dynarec_arm64_avx_0f.c b/src/dynarec/arm64/dynarec_arm64_avx_0f.c
index 2cdc6e51..8c333f7d 100644
--- a/src/dynarec/arm64/dynarec_arm64_avx_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_avx_0f.c
@@ -490,7 +490,7 @@ uintptr_t dynarec64_AVX_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int
         case 0x5D:
             INST_NAME("VMINPS Gx, Vx, Ex");
             nextop = F8;
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 q0 = fpu_get_scratch(dyn, ninst);
             }
             for(int l=0; l<1+vex.l; ++l) {
@@ -498,7 +498,7 @@ uintptr_t dynarec64_AVX_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int
                 // FMIN/FMAX wll not copy a NaN if either is NaN
                 // but x86 will copy src2 if either value is NaN, so lets force a copy of Src2 (Ex) if result is NaN
                 VFMINQS(v0, v2, v1);
-                if(!box64_dynarec_fastnan && (v2!=v1)) {
+                if(!BOX64ENV(dynarec_fastnan) && (v2!=v1)) {
                     VFCMEQQS(q0, v0, v0);   // 0 is NaN, 1 is not NaN, so MASK for NaN
                     VBIFQ(v0, v1, q0);   // copy dest where source is NaN
                 }
@@ -518,7 +518,7 @@ uintptr_t dynarec64_AVX_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int
         case 0x5F:
             INST_NAME("VMAXPS Gx, Vx, Ex");
             nextop = F8;
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 q0 = fpu_get_scratch(dyn, ninst);
             }
             for(int l=0; l<1+vex.l; ++l) {
@@ -526,7 +526,7 @@ uintptr_t dynarec64_AVX_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int
                 // FMIN/FMAX wll not copy a NaN if either is NaN
                 // but x86 will copy src2 if either value is NaN, so lets force a copy of Src2 (Ex) if result is NaN
                 VFMAXQS(v0, v2, v1);
-                if(!box64_dynarec_fastnan && (v2!=v1)) {
+                if(!BOX64ENV(dynarec_fastnan) && (v2!=v1)) {
                     VFCMEQQS(q0, v0, v0);   // 0 is NaN, 1 is not NaN, so MASK for NaN
                     VBIFQ(v0, v1, q0);   // copy dest where source is NaN
                 }
@@ -568,7 +568,7 @@ uintptr_t dynarec64_AVX_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int
                         INST_NAME("VLDMXCSR Md");
                         GETED(0);
                         STRw_U12(ed, xEmu, offsetof(x64emu_t, mxcsr));
-                        if(box64_sse_flushto0) {
+                        if(BOX64ENV(sse_flushto0)) {
                             MRS_fpcr(x1);                   // get fpscr
                             LSRw_IMM(x3, ed, 15);           // get FZ bit
                             BFIw(x1, x3, 24, 1);            // inject FZ bit
diff --git a/src/dynarec/arm64/dynarec_arm64_avx_0f38.c b/src/dynarec/arm64/dynarec_arm64_avx_0f38.c
index d07f6d6f..da34d5f7 100644
--- a/src/dynarec/arm64/dynarec_arm64_avx_0f38.c
+++ b/src/dynarec/arm64/dynarec_arm64_avx_0f38.c
@@ -112,7 +112,7 @@ uintptr_t dynarec64_AVX_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, i
                         BFIw(xFlags, x3, F_SF, 1);
                     }
                     IFX(X_OF) BFCw(xFlags, F_OF, 1);
-                    if(box64_dynarec_test) {
+                    if (BOX64ENV(dynarec_test)) {
                         IFX(X_AF) BFCw(xFlags, F_AF, 1);
                         IFX(X_PF) BFCw(xFlags, F_PF, 1);
                     }
diff --git a/src/dynarec/arm64/dynarec_arm64_avx_66_0f.c b/src/dynarec/arm64/dynarec_arm64_avx_66_0f.c
index b9ae6152..570098e4 100644
--- a/src/dynarec/arm64/dynarec_arm64_avx_66_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_avx_66_0f.c
@@ -295,13 +295,13 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
         case 0x51:
             INST_NAME("VSQRTPD Gx, Ex");
             nextop = F8;
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 d0 = fpu_get_scratch(dyn, ninst);
                 d1 = fpu_get_scratch(dyn, ninst);
             }
             for(int l=0; l<1+vex.l; ++l) {
                 if(!l) { GETGX_empty_EX(v0, v1, 0); } else { GETGY_empty_EY(v0, v1); }
-                if(!box64_dynarec_fastnan) {
+                if(!BOX64ENV(dynarec_fastnan)) {
                     // check if any input value was NAN
                     VFCMEQQD(d0, v1, v1);    // 0 if NAN, 1 if not NAN
                     VFSQRTQD(v0, v1);
@@ -359,19 +359,19 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
         case 0x58:
             INST_NAME("VADDPD Gx, Vx, Ex");
             nextop = F8;
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 q0 = fpu_get_scratch(dyn, ninst);
                 q1 = fpu_get_scratch(dyn, ninst);
             }
             for(int l=0; l<1+vex.l; ++l) {
                 if(!l) { GETGX_empty_VXEX(v0, v2, v1, 0); } else { GETGY_empty_VYEY(v0, v2, v1); }
-                if(!box64_dynarec_fastnan) {
+                if(!BOX64ENV(dynarec_fastnan)) {
                     // check if any input value was NAN
                     VFMAXQD(q0, v2, v1);    // propagate NAN
                     VFCMEQQD(q0, q0, q0);    // 0 if NAN, 1 if not NAN
                 }
                 VFADDQD(v0, v2, v1);
-                if(!box64_dynarec_fastnan) {
+                if(!BOX64ENV(dynarec_fastnan)) {
                     VFCMEQQD(q1, v0, v0);    // 0 => out is NAN
                     VBICQ(q1, q0, q1);      // forget it in any input was a NAN already
                     VSHLQ_64(q1, q1, 63);   // only keep the sign bit
@@ -383,19 +383,19 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
         case 0x59:
             INST_NAME("VMULPD Gx, Vx, Ex");
             nextop = F8;
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 q0 = fpu_get_scratch(dyn, ninst);
                 q1 = fpu_get_scratch(dyn, ninst);
             }
             for(int l=0; l<1+vex.l; ++l) {
                 if(!l) { GETGX_empty_VXEX(v0, v2, v1, 0); } else { GETGY_empty_VYEY(v0, v2, v1); }
-                if(!box64_dynarec_fastnan) {
+                if(!BOX64ENV(dynarec_fastnan)) {
                     // check if any input value was NAN
                     VFMAXQD(q0, v2, v1);    // propagate NAN
                     VFCMEQQD(q0, q0, q0);    // 0 if NAN, 1 if not NAN
                 }
                 VFMULQD(v0, v2, v1);
-                if(!box64_dynarec_fastnan) {
+                if(!BOX64ENV(dynarec_fastnan)) {
                     VFCMEQQD(q1, v0, v0);    // 0 => out is NAN
                     VBICQ(q1, q0, q1);      // forget it in any input was a NAN already
                     VSHLQ_64(q1, q1, 63);   // only keep the sign bit
@@ -409,7 +409,7 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             nextop = F8;
             GETEX(v1, 0, 0);
             GETGX_empty(v0);
-            if(box64_dynarec_fastround==2) {
+            if(BOX64ENV(dynarec_fastround)==2) {
                 FCVTXN(v0, v1);
             } else {
                 u8 = sse_setround(dyn, ninst, x1, x2, x4);
@@ -418,7 +418,7 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             }
             if(vex.l) {
                 GETEY(v1);
-                if(box64_dynarec_fastround==2) {
+                if(BOX64ENV(dynarec_fastround)==2) {
                     FCVTXN2(v0, v1);
                 } else {
                     FCVTN2(v0, v1);
@@ -431,14 +431,14 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             INST_NAME("VCVTPS2DQ Gx, Ex");
             nextop = F8;
             u8 = sse_setround(dyn, ninst, x1, x2, x6);
-            if(!box64_dynarec_fastround && !arm64_frintts) {
+            if(!BOX64ENV(dynarec_fastround) && !arm64_frintts) {
                 d0 = fpu_get_scratch(dyn, ninst);
                 d1 = fpu_get_scratch(dyn, ninst);
                 MOVI_32_lsl(d1, 0x80, 3);
             }
             for(int l=0; l<1+vex.l; ++l) {
                 if(!l) { GETEX(v1, 0, 0); GETGX_empty(v0); } else { GETGY_empty_EY(v0, v1); }
-                if(box64_dynarec_fastround) {
+                if(BOX64ENV(dynarec_fastround)) {
                     VFRINTISQ(v0, v1);
                     VFCVTZSQS(v0, v0);
                 } else {
@@ -467,19 +467,19 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
         case 0x5C:
             INST_NAME("VSUBPD Gx, Vx, Ex");
             nextop = F8;
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 q0 = fpu_get_scratch(dyn, ninst);
                 q1 = fpu_get_scratch(dyn, ninst);
             }
             for(int l=0; l<1+vex.l; ++l) {
                 if(!l) { GETGX_empty_VXEX(v0, v2, v1, 0); } else { GETGY_empty_VYEY(v0, v2, v1); }
-                if(!box64_dynarec_fastnan) {
+                if(!BOX64ENV(dynarec_fastnan)) {
                     // check if any input value was NAN
                     VFMAXQD(q0, v1, v2);    // propagate NAN
                     VFCMEQQD(q0, q0, q0);    // 0 if NAN, 1 if not NAN
                 }
                 VFSUBQD(v0, v2, v1);
-                if(!box64_dynarec_fastnan) {
+                if(!BOX64ENV(dynarec_fastnan)) {
                     VFCMEQQD(q1, v0, v0);    // 0 => out is NAN
                     VBICQ(q1, q0, q1);      // forget it in any input was a NAN already
                     VSHLQ_64(q1, q1, 63);   // only keep the sign bit
@@ -491,14 +491,14 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
         case 0x5D:
             INST_NAME("VMINPD Gx, Vx, Ex");
             nextop = F8;
-            if(!box64_dynarec_fastnan)
+            if(!BOX64ENV(dynarec_fastnan))
                 q0 = fpu_get_scratch(dyn, ninst);
             for(int l=0; l<1+vex.l; ++l) {
                 if(!l) { GETGX_empty_VXEX(v0, v2, v1, 0); } else { GETGY_empty_VYEY(v0, v2, v1); }
                 // FMIN/FMAX wll not copy a NaN if either is NaN
                 // but x86 will copy src2 if either value is NaN, so lets force a copy of Src2 (Ex) if result is NaN
                 VFMINQD(v0, v2, v1);
-                if(!box64_dynarec_fastnan && (v2!=v1)) {
+                if(!BOX64ENV(dynarec_fastnan) && (v2!=v1)) {
                     VFCMEQQD(q0, v0, v0);   // 0 is NaN, 1 is not NaN, so MASK for NaN
                     VBIFQ(v0, v1, q0);   // copy dest where source is NaN
                 }
@@ -508,19 +508,19 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
         case 0x5E:
             INST_NAME("DIVPD Gx, Ex");
             nextop = F8;
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 q0 = fpu_get_scratch(dyn, ninst);
                 q1 = fpu_get_scratch(dyn, ninst);
             }
             for(int l=0; l<1+vex.l; ++l) {
                 if(!l) { GETGX_empty_VXEX(v0, v2, v1, 0); } else { GETGY_empty_VYEY(v0, v2, v1); }
-                if(!box64_dynarec_fastnan) {
+                if(!BOX64ENV(dynarec_fastnan)) {
                     // check if any input value was NAN
                     VFMAXQD(q0, v2, v1);    // propagate NAN
                     VFCMEQQD(q0, q0, q0);    // 0 if NAN, 1 if not NAN
                 }
                 VFDIVQD(v0, v2, v1);
-                if(!box64_dynarec_fastnan) {
+                if(!BOX64ENV(dynarec_fastnan)) {
                     VFCMEQQD(q1, v0, v0);    // 0 => out is NAN
                     VBICQ(q1, q0, q1);      // forget it in any input was a NAN already
                     VSHLQ_64(q1, q1, 63);   // only keep the sign bit
@@ -532,7 +532,7 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
         case 0x5F:
             INST_NAME("VMAXPD Gx, Vx, Ex");
             nextop = F8;
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 q0 = fpu_get_scratch(dyn, ninst);
             }
             for(int l=0; l<1+vex.l; ++l) {
@@ -540,7 +540,7 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
                 // FMIN/FMAX wll not copy a NaN if either is NaN
                 // but x86 will copy src2 if either value is NaN, so lets force a copy of Src2 (Ex) if result is NaN
                 VFMAXQD(v0, v2, v1);
-                if(!box64_dynarec_fastnan && (v2!=v1)) {
+                if(!BOX64ENV(dynarec_fastnan) && (v2!=v1)) {
                     VFCMEQQD(q0, v0, v0);   // 0 is NaN, 1 is not NaN, so MASK for NaN
                     VBIFQ(v0, v1, q0);   // copy dest where source is NaN
                 }
@@ -1125,13 +1125,13 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
         case 0x7C:
             INST_NAME("VHADDPD Gx, Vx, Ex");
             nextop = F8;
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 q0 = fpu_get_scratch(dyn, ninst);
                 q1 = fpu_get_scratch(dyn, ninst);
             }
             for(int l=0; l<1+vex.l; ++l) {
                 if(!l) { GETGX_empty_VXEX(v0, v2, v1, 0); } else { GETGY_empty_VYEY(v0, v2, v1); }
-                if(!box64_dynarec_fastnan) {
+                if(!BOX64ENV(dynarec_fastnan)) {
                     // check if any input value was NAN
                     // but need to mix low/high part
                     VTRNQ1_64(q0, v2, v1);
@@ -1140,7 +1140,7 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
                     VFCMEQQD(q0, q0, q0);    // 0 if NAN, 1 if not NAN
                 }
                 VFADDPQD(v0, v2, v1);
-                if(!box64_dynarec_fastnan) {
+                if(!BOX64ENV(dynarec_fastnan)) {
                     VFCMEQQD(q1, v0, v0);    // 0 => out is NAN
                     VBICQ(q1, q0, q1);      // forget it in any input was a NAN already
                     VSHLQ_64(q1, q1, 63);   // only keep the sign bit
@@ -1616,11 +1616,11 @@ uintptr_t dynarec64_AVX_66_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
                     GETEX_Y(v1, 0, 0);
                     GETGX_empty(v0);
                 } else {
-                    if(box64_dynarec_fastround)
+                    if(BOX64ENV(dynarec_fastround))
                         d0 = fpu_get_scratch(dyn, ninst);
                     GETEY(v1);
                 }
-                if(box64_dynarec_fastround) {
+                if(BOX64ENV(dynarec_fastround)) {
                     VFCVTZSQD(l?d0:v0, v1); // convert double -> int64
                     if(!l)
                         SQXTN_32(v0, v0);   // convert int64 -> int32 with saturation in lower part, RaZ high part
diff --git a/src/dynarec/arm64/dynarec_arm64_avx_f2_0f.c b/src/dynarec/arm64/dynarec_arm64_avx_f2_0f.c
index e8858014..8ee698ab 100644
--- a/src/dynarec/arm64/dynarec_arm64_avx_f2_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_avx_f2_0f.c
@@ -140,13 +140,13 @@ uintptr_t dynarec64_AVX_F2_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             nextop = F8;
             GETGD;
             GETEXSD(q0, 0, 0);
-            if(!box64_dynarec_fastround) {
+            if(!BOX64ENV(dynarec_fastround)) {
                 MRS_fpsr(x5);
                 BFCw(x5, FPSR_IOC, 1);   // reset IOC bit
                 MSR_fpsr(x5);
             }
             FCVTZSxwD(gd, q0);
-            if(!box64_dynarec_fastround) {
+            if(!BOX64ENV(dynarec_fastround)) {
                 MRS_fpsr(x5);   // get back FPSR to check the IOC bit
                 TBZ_NEXT(x5, FPSR_IOC);
                 if(rex.w) {
@@ -161,7 +161,7 @@ uintptr_t dynarec64_AVX_F2_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             nextop = F8;
             GETGD;
             GETEXSD(q0, 0, 0);
-            if(!box64_dynarec_fastround) {
+            if(!BOX64ENV(dynarec_fastround)) {
                 MRS_fpsr(x5);
                 BFCw(x5, FPSR_IOC, 1);   // reset IOC bit
                 MSR_fpsr(x5);
@@ -171,7 +171,7 @@ uintptr_t dynarec64_AVX_F2_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             FRINTID(d1, q0);
             x87_restoreround(dyn, ninst, u8);
             FCVTZSxwD(gd, d1);
-            if(!box64_dynarec_fastround) {
+            if(!BOX64ENV(dynarec_fastround)) {
                 MRS_fpsr(x5);   // get back FPSR to check the IOC bit
                 TBZ_NEXT(x5, FPSR_IOC);
                 if(rex.w) {
@@ -188,14 +188,14 @@ uintptr_t dynarec64_AVX_F2_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             d1 = fpu_get_scratch(dyn, ninst);
             GETEXSD(v1, 0, 0);
             GETGX_empty_VX(v0, v2);
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 q0 = fpu_get_scratch(dyn, ninst);
                 q1 = fpu_get_scratch(dyn, ninst);
                 // check if any input value was NAN
                 FCMEQD(q0, v1, v1);    // 0 if NAN, 1 if not NAN
             }
             FSQRTD(d1, v1);
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 FCMEQD(q1, d1, d1);    // 0 => out is NAN
                 VBIC(q1, q0, q1);      // forget it in any input was a NAN already
                 VSHLQ_64(q1, q1, 63);   // only keep the sign bit
@@ -240,7 +240,7 @@ uintptr_t dynarec64_AVX_F2_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             d1 = fpu_get_scratch(dyn, ninst);
             GETEXSD(v1, 0, 0);
             GETGX_empty_VX(v0, v2);
-            if(box64_dynarec_fastround==2) {
+            if(BOX64ENV(dynarec_fastround)==2) {
                 FCVT_S_D(d1, v1);
             } else {
                 u8 = sse_setround(dyn, ninst, x1, x2, x3);
@@ -288,7 +288,7 @@ uintptr_t dynarec64_AVX_F2_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             d1 = fpu_get_scratch(dyn, ninst);
             GETEXSD(v1, 0, 0);
             GETGX_empty_VX(v0, v2);
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 q0 = fpu_get_scratch(dyn, ninst);
                 q1 = fpu_get_scratch(dyn, ninst);
                 // check if any input value was NAN
@@ -296,7 +296,7 @@ uintptr_t dynarec64_AVX_F2_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
                 FCMEQD(q0, q0, q0);    // 0 if NAN, 1 if not NAN
             }
             FDIVD(d1, v2, v1);
-            if(!box64_dynarec_fastnan) {
+            if(!BOX64ENV(dynarec_fastnan)) {
                 FCMEQD(q1, d1, d1);    // 0 => out is NAN
                 VBIC(q1, q0, q1);      // forget it in any input was a NAN already
                 VSHLQ_64(q1, q1, 63);   // only keep the sign bit
@@ -418,12 +418,12 @@ uintptr_t dynarec64_AVX_F2_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
                 if(!l) {
                     GETEX_Y(v1, 0, 0);
                     GETGX_empty(v0);
-                    if(!box64_dynarec_fastround || vex.l)
+                    if(!BOX64ENV(dynarec_fastround) || vex.l)
                         d0 = fpu_get_scratch(dyn, ninst);
                 } else {
                     GETEY(v1);
                 }
-                if(box64_dynarec_fastround) {
+                if(BOX64ENV(dynarec_fastround)) {
                     VFRINTIDQ(l?d0:v0, v1);
                     VFCVTNSQD(l?d0:v0, l?d0:v0);  // convert double -> int64
                     if(!l)
diff --git a/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c b/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c
index cb7d7cdb..eed9fb59 100644
--- a/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_avx_f3_0f.c
@@ -140,13 +140,13 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             nextop = F8;
             GETGD;
             GETEXSS(d0, 0, 0);
-            if(!box64_dynarec_fastround) {
+            if(!BOX64ENV(dynarec_fastround)) {
                 MRS_fpsr(x5);
                 BFCw(x5, FPSR_IOC, 1);   // reset IOC bit
                 MSR_fpsr(x5);
             }
             FCVTZSxwS(gd, d0);
-            if(!box64_dynarec_fastround) {
+            if(!BOX64ENV(dynarec_fastround)) {
                 MRS_fpsr(x5);   // get back FPSR to check the IOC bit
                 TBZ_NEXT(x5, FPSR_IOC);
                 if(rex.w) {
@@ -161,7 +161,7 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             nextop = F8;
             GETGD;
             GETEXSS(q0, 0, 0);
-            if(!box64_dynarec_fastround) {
+            if(!BOX64ENV(dynarec_fastround)) {
                 MRS_fpsr(x5);
                 BFCw(x5, FPSR_IOC, 1);   // reset IOC bit
                 MSR_fpsr(x5);
@@ -171,7 +171,7 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             FRINTIS(d1, q0);
             x87_restoreround(dyn, ninst, u8);
             FCVTZSxwS(gd, d1);
-            if(!box64_dynarec_fastround) {
+            if(!BOX64ENV(dynarec_fastround)) {
                 MRS_fpsr(x5);   // get back FPSR to check the IOC bit
                 TBZ_NEXT(x5, FPSR_IOC);
                 if(rex.w) {
@@ -286,13 +286,13 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip,
             INST_NAME("VCVTTPS2DQ Gx, Ex");
             nextop = F8;
             d0 = fpu_get_scratch(dyn, ninst);
-            if(!box64_dynarec_fastround) {
+            if(!BOX64ENV(dynarec_fastround)) {
                 MRS_fpsr(x5);
                 ORRw_mask(x4, xZR, 1, 0);    //0x80000000
             }
             for(int l=0; l<1+vex.l; ++l) {
                 if(!l) { GETGX_empty_EX(v0, v1, 0); } else { GETGY_empty_EY(v0, v1); }
-                if(box64_dynarec_fastround) {
+                if(BOX64ENV(dynarec_fastround)) {
                     VFCVTZSQS(v0, v1);
                 } else {
                     BFCw(x5, FPSR_IOC, 1);   // reset IOC bit
diff --git a/src/dynarec/arm64/dynarec_arm64_d8.c b/src/dynarec/arm64/dynarec_arm64_d8.c
index 826cad7d..129fe86e 100644
--- a/src/dynarec/arm64/dynarec_arm64_d8.c
+++ b/src/dynarec/arm64/dynarec_arm64_d8.c
@@ -52,14 +52,14 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FADD ST0, STx");
             v1 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v2 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FADDS(v1, v1, v2);
             } else {
                 FADDD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         case 0xC8:
@@ -73,14 +73,14 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FMUL ST0, STx");
             v1 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v2 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FMULS(v1, v1, v2);
             } else {
                 FMULD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         case 0xD0:
@@ -131,14 +131,14 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FSUB ST0, STx");
             v1 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v2 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FSUBS(v1, v1, v2);
             } else {
                 FSUBD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         case 0xE8:
@@ -152,14 +152,14 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FSUBR ST0, STx");
             v1 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v2 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FSUBS(v1, v2, v1);
             } else {
                 FSUBD(v1, v2, v1);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         case 0xF0:
@@ -173,14 +173,14 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FDIV ST0, STx");
             v1 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v2 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FDIVS(v1, v1, v2);
             } else {
                 FDIVD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         case 0xF8:
@@ -194,14 +194,14 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FDIVR ST0, STx");
             v1 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v2 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FDIVS(v1, v2, v1);
             } else {
                 FDIVD(v1, v2, v1);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         default:
@@ -215,7 +215,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 s0 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);
                 VLD32(s0, ed, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 if(ST_IS_F(0)) {
                     FADDS(v1, v1, s0);
@@ -223,7 +223,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     FCVT_D_S(s0, s0);
                     FADDD(v1, v1, s0);
                 }
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 1:
@@ -232,7 +232,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 s0 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);
                 VLD32(s0, ed, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 if(ST_IS_F(0)) {
                     FMULS(v1, v1, s0);
@@ -240,7 +240,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     FCVT_D_S(s0, s0);
                     FMULD(v1, v1, s0);
                 }
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 2:
@@ -278,7 +278,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 s0 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);
                 VLD32(s0, ed, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 if(ST_IS_F(0)) {
                     FSUBS(v1, v1, s0);
@@ -286,7 +286,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     FCVT_D_S(s0, s0);
                     FSUBD(v1, v1, s0);
                 }
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 5:
@@ -295,7 +295,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 s0 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);
                 VLD32(s0, ed, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 if(ST_IS_F(0)) {
                     FSUBS(v1, s0, v1);
@@ -303,7 +303,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     FCVT_D_S(s0, s0);
                     FSUBD(v1, s0, v1);
                 }
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 6:
@@ -312,7 +312,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 s0 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);
                 VLD32(s0, ed, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 if(ST_IS_F(0)) {
                     FDIVS(v1, v1, s0);
@@ -320,7 +320,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     FCVT_D_S(s0, s0);
                     FDIVD(v1, v1, s0);
                 }
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 7:
@@ -329,7 +329,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 s0 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);
                 VLD32(s0, ed, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 if(ST_IS_F(0)) {
                     FDIVS(v1, s0, v1);
@@ -337,7 +337,7 @@ uintptr_t dynarec64_D8(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     FCVT_D_S(s0, s0);
                     FDIVD(v1, s0, v1);
                 }
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             default:
diff --git a/src/dynarec/arm64/dynarec_arm64_d9.c b/src/dynarec/arm64/dynarec_arm64_d9.c
index c1961a01..0fc54e18 100644
--- a/src/dynarec/arm64/dynarec_arm64_d9.c
+++ b/src/dynarec/arm64/dynarec_arm64_d9.c
@@ -291,11 +291,11 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             MESSAGE(LOG_DUMP, "Need Optimization\n");
             i1 = x87_stackcount(dyn, ninst, x1);
             x87_forget(dyn, ninst, x1, x2, 0);
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
-            CALL_(native_ftan, -1, box64_dynarec_fastround ? 0 : u8);
+            CALL_(native_ftan, -1, BOX64ENV(dynarec_fastround) ? 0 : u8);
             x87_unstackcount(dyn, ninst, x1, i1);
-           if(!box64_dynarec_fastround)
+           if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             if(PK(0)==0xdd && PK(1)==0xd8) {
                 MESSAGE(LOG_DUMP, "Optimized next DD D8 fstp st0, st0, not emitting 1\n");
@@ -316,10 +316,10 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             i1 = x87_stackcount(dyn, ninst, x1);
             x87_forget(dyn, ninst, x1, x2, 0);
             x87_forget(dyn, ninst, x1, x2, 1);
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
-            CALL_(native_fpatan, -1, box64_dynarec_fastround ? 0 : u8);
-            if(!box64_dynarec_fastround)
+            CALL_(native_fpatan, -1, BOX64ENV(dynarec_fastround) ? 0 : u8);
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             x87_unstackcount(dyn, ninst, x1, i1);
             X87_POP_OR_FAIL(dyn, ninst, x3);
@@ -426,14 +426,14 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0xFA:
             INST_NAME("FSQRT");
             v1 = x87_get_st(dyn, ninst, x1, x2, 0, X87_ST0);
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FSQRTS(v1, v1);
             } else {
                 FSQRTD(v1, v1);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         case 0xFB:
@@ -442,10 +442,10 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             X87_PUSH_EMPTY_OR_FAIL(dyn, ninst, 0);
             i1 = x87_stackcount(dyn, ninst, x1);
             x87_forget(dyn, ninst, x1, x2, 1);
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
-            CALL_(native_fsincos, -1, box64_dynarec_fastround ? 0 : u8);
-            if(!box64_dynarec_fastround)
+            CALL_(native_fsincos, -1, BOX64ENV(dynarec_fastround) ? 0 : u8);
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             x87_unstackcount(dyn, ninst, x1, i1);
             break;
@@ -473,10 +473,10 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             i1 = x87_stackcount(dyn, ninst, x1);
             x87_forget(dyn, ninst, x1, x2, 0);
             x87_forget(dyn, ninst, x1, x2, 1);
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
-            CALL_(native_fscale, -1, box64_dynarec_fastround ? 0 : u8);
-            if(!box64_dynarec_fastround)
+            CALL_(native_fscale, -1, BOX64ENV(dynarec_fastround) ? 0 : u8);
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             x87_unstackcount(dyn, ninst, x1, i1);
             break;
@@ -485,10 +485,10 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             MESSAGE(LOG_DUMP, "Need Optimization\n");
             i1 = x87_stackcount(dyn, ninst, x1);
             x87_forget(dyn, ninst, x1, x2, 0);
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
-            CALL_(native_fsin, -1, box64_dynarec_fastround ? 0 : u8);
-            if(!box64_dynarec_fastround)
+            CALL_(native_fsin, -1, BOX64ENV(dynarec_fastround) ? 0 : u8);
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             x87_unstackcount(dyn, ninst, x1, i1);
             break;
@@ -497,10 +497,10 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             MESSAGE(LOG_DUMP, "Need Optimization\n");
             i1 = x87_stackcount(dyn, ninst, x1);
             x87_forget(dyn, ninst, x1, x2, 0);
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
-            CALL_(native_fcos, -1, box64_dynarec_fastround ? 0 : u8);
-            if(!box64_dynarec_fastround)
+            CALL_(native_fcos, -1, BOX64ENV(dynarec_fastround) ? 0 : u8);
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             x87_unstackcount(dyn, ninst, x1, i1);
             break;
@@ -511,7 +511,7 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         switch((nextop>>3)&7) {
             case 0:
                 INST_NAME("FLD ST0, float[ED]");
-                X87_PUSH_OR_FAIL(v1, dyn, ninst, x1, box64_dynarec_x87double?NEON_CACHE_ST_D:NEON_CACHE_ST_F);
+                X87_PUSH_OR_FAIL(v1, dyn, ninst, x1, BOX64ENV(dynarec_x87double)?NEON_CACHE_ST_D:NEON_CACHE_ST_F);
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);
                 VLD32(v1, ed, fixedaddress);
                 if(!ST_IS_F(0)) {
@@ -525,10 +525,10 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     s0 = v1;
                 else {
                     s0 = fpu_get_scratch(dyn, ninst);
-                    if(!box64_dynarec_fastround)
+                    if(!BOX64ENV(dynarec_fastround))
                         u8 = x87_setround(dyn, ninst, x1, x2, x4);
                     FCVT_S_D(s0, v1);
-                    if(!box64_dynarec_fastround)
+                    if(!BOX64ENV(dynarec_fastround))
                         x87_restoreround(dyn, ninst, u8);
                 }
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);
@@ -539,10 +539,10 @@ uintptr_t dynarec64_D9(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 v1 = x87_get_st(dyn, ninst, x1, x2, 0, NEON_CACHE_ST_F);
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);
                 if(!ST_IS_F(0)) {
-                    if(!box64_dynarec_fastround)
+                    if(!BOX64ENV(dynarec_fastround))
                         u8 = x87_setround(dyn, ninst, x1, x5, x4);
                     FCVT_S_D(v1, v1);
-                    if(!box64_dynarec_fastround)
+                    if(!BOX64ENV(dynarec_fastround))
                         x87_restoreround(dyn, ninst, u8);
                 }
                 VST32(v1, ed, fixedaddress);
diff --git a/src/dynarec/arm64/dynarec_arm64_da.c b/src/dynarec/arm64/dynarec_arm64_da.c
index 6e4bb528..f6668985 100644
--- a/src/dynarec/arm64/dynarec_arm64_da.c
+++ b/src/dynarec/arm64/dynarec_arm64_da.c
@@ -149,10 +149,10 @@ uintptr_t dynarec64_DA(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 VLD32(v2, ed, fixedaddress);
                 SXTL_32(v2, v2);    // i32 -> i64
                 SCVTFDD(v2, v2);    // i64 -> double
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 FADDD(v1, v1, v2);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 1:
@@ -163,10 +163,10 @@ uintptr_t dynarec64_DA(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 VLD32(v2, ed, fixedaddress);
                 SXTL_32(v2, v2);    // i32 -> i64
                 SCVTFDD(v2, v2);    // i64 -> double
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 FMULD(v1, v1, v2);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 2:
@@ -200,10 +200,10 @@ uintptr_t dynarec64_DA(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 VLD32(v2, ed, fixedaddress);
                 SXTL_32(v2, v2);    // i32 -> i64
                 SCVTFDD(v2, v2);    // i64 -> double
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 FSUBD(v1, v1, v2);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 5:
@@ -214,10 +214,10 @@ uintptr_t dynarec64_DA(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 VLD32(v2, ed, fixedaddress);
                 SXTL_32(v2, v2);    // i32 -> i64
                 SCVTFDD(v2, v2);    // i64 -> double
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 FSUBD(v1, v2, v1);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 6:
@@ -228,10 +228,10 @@ uintptr_t dynarec64_DA(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 VLD32(v2, ed, fixedaddress);
                 SXTL_32(v2, v2);    // i32 -> i64
                 SCVTFDD(v2, v2);    // i64 -> double
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 FDIVD(v1, v1, v2);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 7:
@@ -242,10 +242,10 @@ uintptr_t dynarec64_DA(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 VLD32(v2, ed, fixedaddress);
                 SXTL_32(v2, v2);    // i32 -> i64
                 SCVTFDD(v2, v2);    // i64 -> double
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x5, x4);
                 FDIVD(v1, v2, v1);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
         }
diff --git a/src/dynarec/arm64/dynarec_arm64_db.c b/src/dynarec/arm64/dynarec_arm64_db.c
index 8e5d55b9..1a655889 100644
--- a/src/dynarec/arm64/dynarec_arm64_db.c
+++ b/src/dynarec/arm64/dynarec_arm64_db.c
@@ -300,7 +300,7 @@ uintptr_t dynarec64_DB(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                     STRx_U12(x5, ed, 0);
                     STRH_U12(x6, ed, 8);
                 } else {
-                    if(box64_x87_no80bits) {
+                    if(BOX64ENV(x87_no80bits)) {
                         X87_PUSH_OR_FAIL(v1, dyn, ninst, x1, NEON_CACHE_ST_D);
                         VLDR64_U12(v1, ed, fixedaddress);
                     } else {
@@ -318,12 +318,12 @@ uintptr_t dynarec64_DB(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 break;
             case 7:
                 INST_NAME("FSTP tbyte");
-                if(box64_x87_no80bits) {
+                if(BOX64ENV(x87_no80bits)) {
                     v1 = x87_get_st(dyn, ninst, x1, x2, 0, NEON_CACHE_ST_D);
                     addr = geted(dyn, addr, ninst, nextop, &wback, x2, &fixedaddress, &unscaled, 0xfff<<3, 7, rex, NULL, 0, 0);
                     VST64(v1, wback, fixedaddress);
                 } else {
-                    if(!box64_dynarec_fastround) {
+                    if(!BOX64ENV(dynarec_fastround)) {
                         x87_forget(dyn, ninst, x1, x3, 0);
                         addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
                         if(ed!=x1) {MOVx_REG(x1, ed);}
diff --git a/src/dynarec/arm64/dynarec_arm64_dc.c b/src/dynarec/arm64/dynarec_arm64_dc.c
index 2fbac9d8..1e068277 100644
--- a/src/dynarec/arm64/dynarec_arm64_dc.c
+++ b/src/dynarec/arm64/dynarec_arm64_dc.c
@@ -50,14 +50,14 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FADD STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FADDS(v1, v1, v2);
             } else {
                 FADDD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         case 0xC8:
@@ -71,14 +71,14 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FMUL STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FMULS(v1, v1, v2);
             } else {
                 FMULD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         case 0xD0:
@@ -129,14 +129,14 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FSUBR STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FSUBS(v1, v2, v1);
             } else {
                 FSUBD(v1, v2, v1);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         case 0xE8:
@@ -150,14 +150,14 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FSUB STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FSUBS(v1, v1, v2);
             } else {
                 FSUBD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         case 0xF0:
@@ -171,14 +171,14 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FDIVR STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FDIVS(v1, v2, v1);
             } else {
                 FDIVD(v1, v2, v1);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         case 0xF8:
@@ -192,14 +192,14 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FDIV STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FDIVS(v1, v1, v2);
             } else {
                 FDIVD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             break;
         default:
@@ -213,10 +213,10 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 v2 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, &unscaled, 0xfff<<3, 7, rex, NULL, 0, 0);
                 VLD64(v2, wback, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x2, x4);
                 FADDD(v1, v1, v2);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 1:
@@ -225,10 +225,10 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 v2 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, &unscaled, 0xfff<<3, 7, rex, NULL, 0, 0);
                 VLD64(v2, wback, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x2, x4);
                 FMULD(v1, v1, v2);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 2:
@@ -256,10 +256,10 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 v2 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, &unscaled, 0xfff<<3, 7, rex, NULL, 0, 0);
                 VLD64(v2, wback, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x2, x4);
                 FSUBD(v1, v1, v2);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 5:
@@ -268,10 +268,10 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 v2 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, &unscaled, 0xfff<<3, 7, rex, NULL, 0, 0);
                 VLD64(v2, wback, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x2, x4);
                 FSUBD(v1, v2, v1);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 6:
@@ -280,10 +280,10 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 v2 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, &unscaled, 0xfff<<3, 7, rex, NULL, 0, 0);
                 VLD64(v2, wback, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x2, x4);
                 FDIVD(v1, v1, v2);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
             case 7:
@@ -292,10 +292,10 @@ uintptr_t dynarec64_DC(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 v2 = fpu_get_scratch(dyn, ninst);
                 addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, &unscaled, 0xfff<<3, 7, rex, NULL, 0, 0);
                 VLD64(v2, wback, fixedaddress);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     u8 = x87_setround(dyn, ninst, x1, x2, x4);
                 FDIVD(v1, v2, v1);
-                if(!box64_dynarec_fastround)
+                if(!BOX64ENV(dynarec_fastround))
                     x87_restoreround(dyn, ninst, u8);
                 break;
         }
diff --git a/src/dynarec/arm64/dynarec_arm64_de.c b/src/dynarec/arm64/dynarec_arm64_de.c
index 8dcc16c2..9c4dcc81 100644
--- a/src/dynarec/arm64/dynarec_arm64_de.c
+++ b/src/dynarec/arm64/dynarec_arm64_de.c
@@ -50,14 +50,14 @@ uintptr_t dynarec64_DE(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FADDP STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FADDS(v1, v1, v2);
             } else {
                 FADDD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             X87_POP_OR_FAIL(dyn, ninst, x3);
             break;
@@ -72,14 +72,14 @@ uintptr_t dynarec64_DE(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FMULP STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FMULS(v1, v1, v2);
             } else {
                 FMULD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             X87_POP_OR_FAIL(dyn, ninst, x3);
             break;
@@ -126,14 +126,14 @@ uintptr_t dynarec64_DE(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FSUBRP STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FSUBS(v1, v2, v1);
             } else {
                 FSUBD(v1, v2, v1);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             X87_POP_OR_FAIL(dyn, ninst, x3);
             break;
@@ -148,14 +148,14 @@ uintptr_t dynarec64_DE(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FSUBP STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FSUBS(v1, v1, v2);
             } else {
                 FSUBD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             X87_POP_OR_FAIL(dyn, ninst, x3);
             break;
@@ -170,14 +170,14 @@ uintptr_t dynarec64_DE(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FDIVRP STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FDIVS(v1, v2, v1);
             } else {
                 FDIVD(v1, v2, v1);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             X87_POP_OR_FAIL(dyn, ninst, x3);
             break;
@@ -192,14 +192,14 @@ uintptr_t dynarec64_DE(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             INST_NAME("FDIVP STx, ST0");
             v2 = x87_get_st(dyn, ninst, x1, x2, 0, X87_COMBINE(0, nextop&7));
             v1 = x87_get_st(dyn, ninst, x1, x2, nextop&7, X87_COMBINE(0, nextop&7));
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 u8 = x87_setround(dyn, ninst, x1, x2, x4);
             if(ST_IS_F(0)) {
                 FDIVS(v1, v1, v2);
             } else {
                 FDIVD(v1, v1, v2);
             }
-            if(!box64_dynarec_fastround)
+            if(!BOX64ENV(dynarec_fastround))
                 x87_restoreround(dyn, ninst, u8);
             X87_POP_OR_FAIL(dyn, ninst, x3);
             break;
diff --git a/src/dynarec/arm64/dynarec_arm64_emit_math.c b/src/dynarec/arm64/dynarec_arm64_emit_math.c
index 34687f8d..a20af739 100644
--- a/src/dynarec/arm64/dynarec_arm64_emit_math.c
+++ b/src/dynarec/arm64/dynarec_arm64_emit_math.c
@@ -83,7 +83,7 @@ void emit_add32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3
 void emit_add32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int64_t c, int s3, int s4, int s5)
 {
     MAYUSE(s5);
-    if((s1==xRSP) && (box64_dynarec_safeflags<2) && (!dyn->insts || (dyn->insts[ninst].x64.gen_flags==X_PEND) || (!box64_dynarec_df && (dyn->insts[ninst].x64.gen_flags==X_ALL))))
+    if((s1==xRSP) && (BOX64ENV(dynarec_safeflags)<2) && (!dyn->insts || (dyn->insts[ninst].x64.gen_flags==X_PEND) || (!BOX64ENV(dynarec_df) && (dyn->insts[ninst].x64.gen_flags==X_ALL))))
     {
         // special case when doing math on ESP and only PEND is needed: ignoring it!
         if(c>=0 && c<0x1000) {
@@ -224,7 +224,7 @@ void emit_sub32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3
 void emit_sub32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int64_t c, int s3, int s4, int s5)
 {
     MAYUSE(s5);
-    if(s1==xRSP && (box64_dynarec_safeflags<2) && (!dyn->insts || (dyn->insts[ninst].x64.gen_flags==X_PEND) || (!box64_dynarec_df && (dyn->insts[ninst].x64.gen_flags==X_ALL))))
+    if(s1==xRSP && (BOX64ENV(dynarec_safeflags)<2) && (!dyn->insts || (dyn->insts[ninst].x64.gen_flags==X_PEND) || (!BOX64ENV(dynarec_df) && (dyn->insts[ninst].x64.gen_flags==X_ALL))))
     {
         // special case when doing math on RSP and only PEND is needed: ignoring it!
         if(c>=0 && c<0x1000) {
diff --git a/src/dynarec/arm64/dynarec_arm64_emit_shift.c b/src/dynarec/arm64/dynarec_arm64_emit_shift.c
index fa779a29..058d4440 100644
--- a/src/dynarec/arm64/dynarec_arm64_emit_shift.c
+++ b/src/dynarec/arm64/dynarec_arm64_emit_shift.c
@@ -68,7 +68,7 @@ void emit_shl32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3
             BFIw(xFlags, s4, F_ZF, 1);
         }
     }
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -124,7 +124,7 @@ void emit_shl32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, uint32_t c, i
             BFCw(xFlags, F_OF, 1);
         }
     }
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -183,7 +183,7 @@ void emit_shr32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3
             BFIx(xFlags, s4, F_SF, 1);
         }
     }
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -237,7 +237,7 @@ void emit_shr32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, uint32_t c, i
             BFCw(xFlags, F_SF, 1);
         }
     }
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -291,7 +291,7 @@ void emit_sar32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s3
             BFIx(xFlags, s4, F_SF, 1);
         }
     }
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -338,10 +338,10 @@ void emit_sar32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, uint32_t c, i
         }
     }
     IFX(X_OF)
-        if(c==1 || box64_dynarec_test) {
+        if (c == 1 || BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
-    }
-    if(box64_dynarec_test)
+        }
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -382,7 +382,7 @@ void emit_shl8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4)
             BFIw(xFlags, s4, F_OF, 1);
     }
     COMP_ZFSF(s1, 8)
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -423,9 +423,10 @@ void emit_shl8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
                 BFCw(xFlags, F_OF, 1);
             }
         }
-        if(box64_dynarec_test) IFX(X_AF) {
-            BFCw(xFlags, F_AF, 1);
-        }
+        if (BOX64ENV(dynarec_test))
+            IFX (X_AF) {
+                BFCw(xFlags, F_AF, 1);
+            }
         IFX(X_PF) {
             emit_pf(dyn, ninst, s1, s4);
         }
@@ -448,9 +449,10 @@ void emit_shl8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
         IFX(X_SF) {
             IFNATIVE(NF_SF) {} else BFCw(xFlags, F_SF, 1);
         }
-        if(box64_dynarec_test) IFX(X_AF) {
-            BFCw(xFlags, F_AF, 1);
-        }
+        if (BOX64ENV(dynarec_test))
+            IFX (X_AF) {
+                BFCw(xFlags, F_AF, 1);
+            }
         IFX(X_ZF) {
             IFNATIVE(NF_EQ) {} else {
                 ORRw_mask(xFlags, xFlags, 26, 0);   //1<<F_ZF
@@ -492,7 +494,7 @@ void emit_shr8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4)
         STRB_U12(s1, xEmu, offsetof(x64emu_t, res));
     }
     COMP_ZFSF(s1, 8)
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -525,7 +527,7 @@ void emit_shr8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
         if(c==1) {
             LSRw(s4, s1, 7);
             BFIw(xFlags, s4, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -534,7 +536,7 @@ void emit_shr8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
         STRB_U12(s1, xEmu, offsetof(x64emu_t, res));
     }
     COMP_ZFSF(s1, 8)
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -568,7 +570,7 @@ void emit_sar8(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4)
         //CBNZw(s4, 4+4);
             BFCw(xFlags, F_OF, 1);
     }
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -599,9 +601,9 @@ void emit_sar8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
     if(c<8) {
         COMP_ZFSF(s1, 8)
         IFX(X_OF)
-            if((c==1) || box64_dynarec_test) {
+            if ((c == 1) || BOX64ENV(dynarec_test)) {
                 BFCw(xFlags, F_OF, 1);
-        }
+            }
         IFX(X_PF) {
             emit_pf(dyn, ninst, s1, s4);
         }
@@ -619,7 +621,7 @@ void emit_sar8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
             }
         }
     }
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -653,7 +655,7 @@ void emit_shl16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4)
             BFIw(xFlags, s4, F_OF, 1);
     }
     COMP_ZFSF(s1, 16)
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -690,13 +692,14 @@ void emit_shl16c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int
                 IFX2(X_SF, && !arm64_flagm) {} else {LSRw(s3, s1, 15);} // use COMP_ZFSF operation
                 EORw_REG(s4, s3, xFlags);  // CF is set if OF is asked
                 BFIw(xFlags, s4, F_OF, 1);
-            } else if(box64_dynarec_test) {
+            } else if (BOX64ENV(dynarec_test)) {
                 BFCw(xFlags, F_OF, 1);
             }
         }
-        if(box64_dynarec_test) IFX(X_AF) {
-            BFCw(xFlags, F_AF, 1);
-        }
+        if (BOX64ENV(dynarec_test))
+            IFX (X_AF) {
+                BFCw(xFlags, F_AF, 1);
+            }
         IFX(X_PF) {
             if(c>7) {
                 // the 0xff area will be 0, so PF is known
@@ -723,9 +726,10 @@ void emit_shl16c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int
         IFX(X_SF) {
             IFNATIVE(NF_SF) {} else BFCw(xFlags, F_SF, 1);
         }
-        if(box64_dynarec_test) IFX(X_AF) {
-            BFCw(xFlags, F_AF, 1);
-        }
+        if (BOX64ENV(dynarec_test))
+            IFX (X_AF) {
+                BFCw(xFlags, F_AF, 1);
+            }
         IFX(X_ZF) {
             IFNATIVE(NF_EQ) {} else {
                 ORRw_mask(xFlags, xFlags, 26, 0);   //1<<F_ZF
@@ -763,7 +767,7 @@ void emit_shr16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4)
         STRH_U12(s1, xEmu, offsetof(x64emu_t, res));
     }
     COMP_ZFSF(s1, 16)
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -797,7 +801,7 @@ void emit_shr16c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int
         if(c==1) {
             LSRw(s4, s1, 15);
             BFIw(xFlags, s4, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -806,7 +810,7 @@ void emit_shr16c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int
         STRH_U12(s1, xEmu, offsetof(x64emu_t, res));
     }
     COMP_ZFSF(s1, 16)
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -840,7 +844,7 @@ void emit_sar16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s3, int s4)
             BFCw(xFlags, F_OF, 1);
     }
     COMP_ZFSF(s1, 16)
-    if(box64_dynarec_test)
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -871,10 +875,10 @@ void emit_sar16c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int
     }
     COMP_ZFSF(s1, 16)
     IFX(X_OF)
-        if((c==1) || box64_dynarec_test) {
+        if ((c == 1) || BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
-    }
-    if(box64_dynarec_test)
+        }
+    if (BOX64ENV(dynarec_test))
         IFX(X_AF) {
             BFCw(xFlags, F_AF, 1);
         }
@@ -899,7 +903,7 @@ void emit_rol32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, uint32_t c, i
         if(c==1) {
             EORxw_REG_LSR(s3, s1, s1, rex.w?63:31);
             BFIw(xFlags, s3, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -923,7 +927,7 @@ void emit_ror32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, uint32_t c, i
             LSRxw(s3, s1, rex.w?62:30);
             EORxw_REG_LSR(s3, s3, s3, 1);
             BFIw(xFlags, s3, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -950,7 +954,7 @@ void emit_rol8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
         if(c==1) {
             EORw_REG_LSR(s3, s1, s1, 7);
             BFIw(xFlags, s3, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -977,7 +981,7 @@ void emit_ror8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
             LSRw(s3, s1, 6);
             EORw_REG_LSR(s3, s3, s3, 1);
             BFIw(xFlags, s3, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -1004,7 +1008,7 @@ void emit_rol16c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int
         if(c==1) {
             EORw_REG_LSR(s3, s1, s1, 15);
             BFIw(xFlags, s3, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -1031,7 +1035,7 @@ void emit_ror16c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int
             LSRw(s3, s1, 14);
             EORw_REG_LSR(s3, s3, s3, 1);
             BFIw(xFlags, s3, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -1065,7 +1069,7 @@ void emit_rcl8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
             if(c==1) {
                 EORw_REG_LSR(s3, s3, s1, 7);
                 BFIw(xFlags, s3, F_OF, 1);
-            } else if(box64_dynarec_test) {
+            } else if (BOX64ENV(dynarec_test)) {
                 BFCw(xFlags, F_OF, 1);
             }
         }
@@ -1086,7 +1090,7 @@ void emit_rcr8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
         if(c==1) {
             EORw_REG_LSR(s3, xFlags, s1, 7);
             BFIw(xFlags, s3, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -1127,7 +1131,7 @@ void emit_rcl16c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int
         if(c==1) {
             EORw_REG_LSR(s3, s3, s1, 15);
             BFIw(xFlags, s3, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -1148,7 +1152,7 @@ void emit_rcr16c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int
         if(c==1) {
             EORw_REG_LSR(s3, xFlags, s1, 15);
             BFIw(xFlags, s3, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
         MOVw_REG(s3, wFlags);
@@ -1189,7 +1193,7 @@ void emit_rcl32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, uint32_t c, i
         if(c==1) {
             EORxw_REG_LSR(s3, s3, s1, rex.w?63:31);
             BFIw(xFlags, s3, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -1207,7 +1211,7 @@ void emit_rcr32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, uint32_t c, i
         if(c==1) {
             EORxw_REG_LSR(s3, xFlags, s1, rex.w?63:31);
             BFIw(xFlags, s3, F_OF, 1);
-        } else if(box64_dynarec_test) {
+        } else if (BOX64ENV(dynarec_test)) {
             BFCw(xFlags, F_OF, 1);
         }
     }
@@ -1278,7 +1282,7 @@ void emit_shrd32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, uint
             BFIx(xFlags, s4, F_SF, 1);
         }
     }
-    if(box64_dynarec_test) {
+    if (BOX64ENV(dynarec_test)) {
         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
         IFX2(X_OF, && (c>1)) {BFCw(xFlags, F_OF, 1);}
     }
@@ -1332,7 +1336,7 @@ void emit_shld32c(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, uint
             BFIx(xFlags, s4, F_SF, 1);
         }
     }
-    if(box64_dynarec_test) {
+    if (BOX64ENV(dynarec_test)) {
         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
         IFX2(X_OF, && (c>1)) {BFCw(xFlags, F_OF, 1);}
     }
@@ -1373,13 +1377,13 @@ void emit_shrd32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s
         STRxw_U12(s1, xEmu, offsetof(x64emu_t, res));
     }
     IFX(X_OF) {
-        if(box64_dynarec_test) {
-        CMPSw_U12(s5, 1);
+        if (BOX64ENV(dynarec_test)) {
+            CMPSw_U12(s5, 1);
             EORxw_REG_LSR(s3, s4, s1, rex.w?63:31);   // OF is set if sign changed
             CSELw(s3, s3, xZR, cEQ);
             BFIw(xFlags, s3, F_OF, 1);
         } else {
-        //CMPSw_U12(s5, 1);
+            // CMPSw_U12(s5, 1);
             EORxw_REG_LSR(s3, s4, s1, rex.w?63:31);   // OF is set if sign changed
         //    CSELw(s3, s3, xZR, cEQ);
             BFIw(xFlags, s3, F_OF, 1);
@@ -1401,7 +1405,7 @@ void emit_shrd32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s
             BFIx(xFlags, s4, F_SF, 1);
         }
     }
-    if(box64_dynarec_test) {
+    if (BOX64ENV(dynarec_test)) {
         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
     }
     IFX(X_PF) {
@@ -1439,13 +1443,13 @@ void emit_shld32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s
         STRxw_U12(s1, xEmu, offsetof(x64emu_t, res));
     }
     IFX(X_OF) {
-        if(box64_dynarec_test) {
-        CMPSw_U12(s5, 1);
+        if (BOX64ENV(dynarec_test)) {
+            CMPSw_U12(s5, 1);
             EORx_REG_LSR(s3, s4, s1, rex.w?63:31);   // OF is set if sign changed
             CSELw(s3, s3, xZR, cEQ);
             BFIw(xFlags, s3, F_OF, 1);
         } else {
-        //CMPSw_U12(s5, 1);
+            // CMPSw_U12(s5, 1);
             EORx_REG_LSR(s3, s4, s1, rex.w?63:31);   // OF is set if sign changed
         //    CSELw(s3, s3, xZR, cEQ);
             BFIw(xFlags, s3, F_OF, 1);
@@ -1467,7 +1471,7 @@ void emit_shld32(dynarec_arm_t* dyn, int ninst, rex_t rex, int s1, int s2, int s
             BFIx(xFlags, s4, F_SF, 1);
         }
     }
-    if(box64_dynarec_test) {
+    if (BOX64ENV(dynarec_test)) {
         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
     }
     IFX(X_PF) {
@@ -1513,7 +1517,7 @@ void emit_shrd16c(dynarec_arm_t* dyn, int ninst, int s1, int s2, uint32_t c, int
             BFIw(xFlags, s3, F_OF, 1);
         }
     }
-    if(box64_dynarec_test) {
+    if (BOX64ENV(dynarec_test)) {
         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
         IFX2(X_OF, && (c>1)) {BFCw(xFlags, F_OF, 1);}
     }
@@ -1547,13 +1551,13 @@ void emit_shrd16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s5, int s3,
         STRH_U12(s1, xEmu, offsetof(x64emu_t, res));
     }
     IFX(X_OF) {
-        if(box64_dynarec_test) {
-        CMPSw_U12(s5, 1);
+        if (BOX64ENV(dynarec_test)) {
+            CMPSw_U12(s5, 1);
             EORw_REG_LSR(s3, s4, s1, 15);   // OF is set if sign changed
             CSELw(s3, s3, xZR, cEQ);
             BFIw(xFlags, s3, F_OF, 1);
         } else {
-        //CMPSw_U12(s5, 1);
+            // CMPSw_U12(s5, 1);
             EORw_REG_LSR(s3, s4, s1, 15);   // OF is set if sign changed
         //    CSELw(s3, s3, xZR, cEQ);
             BFIw(xFlags, s3, F_OF, 1);
@@ -1608,7 +1612,7 @@ void emit_shld16c(dynarec_arm_t* dyn, int ninst, int s1, int s2, uint32_t c, int
             BFIw(xFlags, s3, F_OF, 1);
         }
     }
-    if(box64_dynarec_test) {
+    if (BOX64ENV(dynarec_test)) {
         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
         IFX2(X_OF, && (c>1)) {BFCw(xFlags, F_OF, 1);}
     }
@@ -1645,20 +1649,20 @@ void emit_shld16(dynarec_arm_t* dyn, int ninst, int s1, int s2, int s5, int s3,
         STRH_U12(s1, xEmu, offsetof(x64emu_t, res));
     }
     IFX(X_OF) {
-        if(box64_dynarec_test) {
-        CMPSw_U12(s5, 1);
+        if (BOX64ENV(dynarec_test)) {
+            CMPSw_U12(s5, 1);
             EORw_REG_LSR(s3, s4, s1, 15);   // OF is set if sign changed
             CSELw(s3, s3, xZR, cEQ);
             BFIw(xFlags, s3, F_OF, 1);
         } else {
-        //CMPSw_U12(s5, 1);
+            // CMPSw_U12(s5, 1);
             EORw_REG_LSR(s3, s4, s1, 15);   // OF is set if sign changed
         //    CSELw(s3, s3, xZR, cEQ);
             BFIw(xFlags, s3, F_OF, 1);
         }
     }
     COMP_ZFSF(s1, 16)
-    if(box64_dynarec_test) {
+    if (BOX64ENV(dynarec_test)) {
         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
     }
     IFX(X_PF) {
diff --git a/src/dynarec/arm64/dynarec_arm64_f0.c b/src/dynarec/arm64/dynarec_arm64_f0.c
index 588e898b..e0e74535 100644
--- a/src/dynarec/arm64/dynarec_arm64_f0.c
+++ b/src/dynarec/arm64/dynarec_arm64_f0.c
@@ -254,7 +254,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         CBNZw_MARKLOCK(x4);
                         SMDMB();
                     }
-                    if(box64_dynarec_test) {
+                    if (BOX64ENV(dynarec_test)) {
                         IFX(X_OF) {BFCw(xFlags, F_OF, 1);}
                         IFX(X_SF) {BFCw(xFlags, F_SF, 1);}
                         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
@@ -447,7 +447,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         CBNZw_MARKLOCK(x4);
                         SMDMB();
                     }
-                    if(box64_dynarec_test) {
+                    if (BOX64ENV(dynarec_test)) {
                         IFX(X_OF) {BFCw(xFlags, F_OF, 1);}
                         IFX(X_SF) {BFCw(xFlags, F_SF, 1);}
                         IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
@@ -486,7 +486,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                                 BFXILxw(xFlags, x1, u8&7, 1);  // inject 1 bit from u8 to F_CF (i.e. pos 0)
                             }
                         }
-                        if(box64_dynarec_test) {
+                        if (BOX64ENV(dynarec_test)) {
                             IFX(X_OF) {BFCw(xFlags, F_OF, 1);}
                             IFX(X_SF) {BFCw(xFlags, F_SF, 1);}
                             IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
@@ -505,7 +505,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             IFX(X_CF) {
                                 BFXILxw(xFlags, ed, u8, 1);  // inject 1 bit from u8 to F_CF (i.e. pos 0)
                             }
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}
                                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}
                                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
@@ -527,7 +527,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             IFX(X_CF) {
                                 BFXILw(xFlags, ed, u8&7, 1); // inject 1 bit from u8 to F_CF (i.e. pos 0)
                             }
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}
                                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}
                                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
@@ -552,7 +552,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             IFX(X_CF) {
                                 BFXILxw(xFlags, ed, u8, 1);  // inject 1 bit from u8 to F_CF (i.e. pos 0)
                             }
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}
                                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}
                                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
@@ -570,7 +570,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             MARKLOCK;
                             LDAXRB(ed, wback);
                             BFXILw(xFlags, ed, u8&7, 1); // inject 1 bit from u8 to F_CF (i.e. pos 0)
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}
                                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}
                                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
@@ -594,7 +594,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             IFX(X_CF) {
                                 BFXILxw(xFlags, ed, u8, 1);  // inject 1 bit from u8 to F_CF (i.e. pos 0)
                             }
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}
                                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}
                                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
@@ -615,7 +615,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             IFX(X_CF) {
                                 BFXILw(xFlags, ed, u8&7, 1); // inject 1 bit from u8 to F_CF (i.e. pos 0)
                             }
-                            if(box64_dynarec_test) {
+                            if (BOX64ENV(dynarec_test)) {
                                 IFX(X_OF) {BFCw(xFlags, F_OF, 1);}
                                 IFX(X_SF) {BFCw(xFlags, F_SF, 1);}
                                 IFX(X_AF) {BFCw(xFlags, F_AF, 1);}
diff --git a/src/dynarec/arm64/dynarec_arm64_f20f.c b/src/dynarec/arm64/dynarec_arm64_f20f.c
index 0a2c49f2..984ebc2e 100644
--- a/src/dynarec/arm64/dynarec_arm64_f20f.c
+++ b/src/dynarec/arm64/dynarec_arm64_f20f.c
@@ -113,13 +113,13 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETGD;

             GETEXSD(q0, 0, 0);

-            if(!box64_dynarec_fastround) {

+            if(!BOX64ENV(dynarec_fastround)) {

                 MRS_fpsr(x5);

                 BFCw(x5, FPSR_IOC, 1);   // reset IOC bit

                 MSR_fpsr(x5);

             }

             FCVTZSxwD(gd, q0);

-            if(!box64_dynarec_fastround) {

+            if(!BOX64ENV(dynarec_fastround)) {

                 MRS_fpsr(x5);   // get back FPSR to check the IOC bit

                 TBZ_NEXT(x5, FPSR_IOC);

                 if(rex.w) {

@@ -134,7 +134,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETGD;

             GETEXSD(q0, 0, 0);

-            if(!box64_dynarec_fastround) {

+            if(!BOX64ENV(dynarec_fastround)) {

                 MRS_fpsr(x5);

                 BFCw(x5, FPSR_IOC, 1);   // reset IOC bit

                 MSR_fpsr(x5);

@@ -144,7 +144,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             FRINTID(d1, q0);

             x87_restoreround(dyn, ninst, u8);

             FCVTZSxwD(gd, d1);

-            if(!box64_dynarec_fastround) {

+            if(!BOX64ENV(dynarec_fastround)) {

                 MRS_fpsr(x5);   // get back FPSR to check the IOC bit

                 TBZ_NEXT(x5, FPSR_IOC);

                 if(rex.w) {

@@ -209,7 +209,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             GETGX(v0, 1);

             d1 = fpu_get_scratch(dyn, ninst);

             GETEXSD(d0, 0, 0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 v1 = fpu_get_scratch(dyn, ninst);

                 FCMLTD_0(v1, d0);

                 SHL_64(v1, v1, 63);

@@ -227,7 +227,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             GETGX(d1, 1);

             v1 = fpu_get_scratch(dyn, ninst);

             GETEXSD(d0, 0, 0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 v0 = fpu_get_scratch(dyn, ninst);

                 q0 = fpu_get_scratch(dyn, ninst);

                 // check if any input value was NAN

@@ -249,7 +249,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             GETGX(d1, 1);

             v1 = fpu_get_scratch(dyn, ninst);

             GETEXSD(d0, 0, 0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 v0 = fpu_get_scratch(dyn, ninst);

                 q0 = fpu_get_scratch(dyn, ninst);

                 // check if any input value was NAN

@@ -271,7 +271,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             GETGX(v0, 1);

             GETEXSD(d0, 0, 0);

             d1 = fpu_get_scratch(dyn, ninst);

-            if(box64_dynarec_fastround==2) {

+            if(BOX64ENV(dynarec_fastround)==2) {

                 FCVT_S_D(d1, d0);

             } else {

                 u8 = sse_setround(dyn, ninst, x1, x2, x3);

@@ -287,7 +287,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             GETGX(d1, 1);

             v1 = fpu_get_scratch(dyn, ninst);

             GETEXSD(d0, 0, 0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 v0 = fpu_get_scratch(dyn, ninst);

                 q0 = fpu_get_scratch(dyn, ninst);

                 // check if any input value was NAN

@@ -325,7 +325,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             GETGX(v0, 1);

             d1 = fpu_get_scratch(dyn, ninst);

             GETEXSD(v1, 0, 0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 d0 = fpu_get_scratch(dyn, ninst);

                 q0 = fpu_get_scratch(dyn, ninst);

                 // check if any input value was NAN

@@ -515,7 +515,7 @@ uintptr_t dynarec64_F20F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETEX(v1, 0, 0);

             GETGX_empty(v0);

-            if(box64_dynarec_fastround) {

+            if(BOX64ENV(dynarec_fastround)) {

                 u8 = sse_setround(dyn, ninst, x1, x2, x3);

                 VFRINTIDQ(v0, v1);

                 x87_restoreround(dyn, ninst, u8);

diff --git a/src/dynarec/arm64/dynarec_arm64_f30f.c b/src/dynarec/arm64/dynarec_arm64_f30f.c
index bbe987e4..45a5c454 100644
--- a/src/dynarec/arm64/dynarec_arm64_f30f.c
+++ b/src/dynarec/arm64/dynarec_arm64_f30f.c
@@ -131,13 +131,13 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETGD;

             GETEXSS(d0, 0, 0);

-            if(!box64_dynarec_fastround) {

+            if(!BOX64ENV(dynarec_fastround)) {

                 MRS_fpsr(x5);

                 BFCw(x5, FPSR_IOC, 1);   // reset IOC bit

                 MSR_fpsr(x5);

             }

             FCVTZSxwS(gd, d0);

-            if(!box64_dynarec_fastround) {

+            if(!BOX64ENV(dynarec_fastround)) {

                 MRS_fpsr(x5);   // get back FPSR to check the IOC bit

                 TBZ_NEXT(x5, FPSR_IOC);

                 if(rex.w) {

@@ -152,7 +152,7 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETGD;

             GETEXSS(q0, 0, 0);

-            if(!box64_dynarec_fastround) {

+            if(!BOX64ENV(dynarec_fastround)) {

                 MRS_fpsr(x5);

                 BFCw(x5, FPSR_IOC, 1);   // reset IOC bit

                 MSR_fpsr(x5);

@@ -162,7 +162,7 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             FRINTIS(d1, q0);

             x87_restoreround(dyn, ninst, u8);

             FCVTZSxwS(gd, d1);

-            if(!box64_dynarec_fastround) {

+            if(!BOX64ENV(dynarec_fastround)) {

                 MRS_fpsr(x5);   // get back FPSR to check the IOC bit

                 TBZ_NEXT(x5, FPSR_IOC);

                 if(rex.w) {

@@ -258,7 +258,7 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             GETGX(d1, 1);

             v1 = fpu_get_scratch(dyn, ninst);

             GETEXSS(d0, 0, 0);

-            if(!box64_dynarec_fastnan) {

+            if(!BOX64ENV(dynarec_fastnan)) {

                 v0 = fpu_get_scratch(dyn, ninst);

                 q0 = fpu_get_scratch(dyn, ninst);

                 // check if any input value was NAN

@@ -288,7 +288,7 @@ uintptr_t dynarec64_F30F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
             nextop = F8;

             GETEX(v1, 0, 0) ;

             GETGX_empty(v0);

-            if(box64_dynarec_fastround) {

+            if(BOX64ENV(dynarec_fastround)) {

                 VFCVTZSQS(v0, v1);

             } else {

                 MRS_fpsr(x5);

diff --git a/src/dynarec/arm64/dynarec_arm64_functions.c b/src/dynarec/arm64/dynarec_arm64_functions.c
index 2a7a2a09..9d211a51 100644
--- a/src/dynarec/arm64/dynarec_arm64_functions.c
+++ b/src/dynarec/arm64/dynarec_arm64_functions.c
@@ -287,7 +287,7 @@ static void neoncache_promote_double_combined(dynarec_arm_t* dyn, int ninst, int
         } else
             a = dyn->insts[ninst].n.combined1;
         int i = neoncache_get_st_f_i64_noback(dyn, ninst, a);
-        //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "neoncache_promote_double_combined, ninst=%d combined%c %d i=%d (stack:%d/%d)\n", ninst, (a == dyn->insts[ninst].n.combined2)?'2':'1', a ,i, dyn->insts[ninst].n.stack_push, -dyn->insts[ninst].n.stack_pop);
+        //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "neoncache_promote_double_combined, ninst=%d combined%c %d i=%d (stack:%d/%d)\n", ninst, (a == dyn->insts[ninst].n.combined2)?'2':'1', a ,i, dyn->insts[ninst].n.stack_push, -dyn->insts[ninst].n.stack_pop);
         if(i>=0) {
             dyn->insts[ninst].n.neoncache[i].t = NEON_CACHE_ST_D;
             if(!dyn->insts[ninst].n.barrier)
@@ -304,19 +304,19 @@ static void neoncache_promote_double_internal(dynarec_arm_t* dyn, int ninst, int
     while(ninst>=0) {
         a+=dyn->insts[ninst].n.stack_pop;    // adjust Stack depth: add pop'd ST (going backward)
         int i = neoncache_get_st_f_i64(dyn, ninst, a);
-        //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "neoncache_promote_double_internal, ninst=%d, a=%d st=%d:%d, i=%d\n", ninst, a, dyn->insts[ninst].n.stack, dyn->insts[ninst].n.stack_next, i);
+        //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "neoncache_promote_double_internal, ninst=%d, a=%d st=%d:%d, i=%d\n", ninst, a, dyn->insts[ninst].n.stack, dyn->insts[ninst].n.stack_next, i);
         if(i<0) return;
         dyn->insts[ninst].n.neoncache[i].t = NEON_CACHE_ST_D;
         // check combined propagation too
         if(dyn->insts[ninst].n.combined1 || dyn->insts[ninst].n.combined2) {
             if(dyn->insts[ninst].n.swapped) {
-                //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "neoncache_promote_double_internal, ninst=%d swapped %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].n.combined1 ,dyn->insts[ninst].n.combined2, a, dyn->insts[ninst].n.stack);
+                //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "neoncache_promote_double_internal, ninst=%d swapped %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].n.combined1 ,dyn->insts[ninst].n.combined2, a, dyn->insts[ninst].n.stack);
                 if (a==dyn->insts[ninst].n.combined1)
                     a = dyn->insts[ninst].n.combined2;
                 else if (a==dyn->insts[ninst].n.combined2)
                     a = dyn->insts[ninst].n.combined1;
             } else {
-                //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "neoncache_promote_double_internal, ninst=%d combined %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].n.combined1 ,dyn->insts[ninst].n.combined2, a, dyn->insts[ninst].n.stack);
+                //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "neoncache_promote_double_internal, ninst=%d combined %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].n.combined1 ,dyn->insts[ninst].n.combined2, a, dyn->insts[ninst].n.stack);
                 neoncache_promote_double_combined(dyn, ninst, maxinst, a);
             }
         }
@@ -332,19 +332,19 @@ static void neoncache_promote_double_forward(dynarec_arm_t* dyn, int ninst, int
     while((ninst!=-1) && (ninst<maxinst) && (a>=0)) {
         a+=dyn->insts[ninst].n.stack_push;  // // adjust Stack depth: add push'd ST (going forward)
         if((dyn->insts[ninst].n.combined1 || dyn->insts[ninst].n.combined2) && dyn->insts[ninst].n.swapped) {
-            //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "neoncache_promote_double_forward, ninst=%d swapped %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].n.combined1 ,dyn->insts[ninst].n.combined2, a, dyn->insts[ninst].n.stack);
+            //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "neoncache_promote_double_forward, ninst=%d swapped %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].n.combined1 ,dyn->insts[ninst].n.combined2, a, dyn->insts[ninst].n.stack);
             if (a==dyn->insts[ninst].n.combined1)
                 a = dyn->insts[ninst].n.combined2;
             else if (a==dyn->insts[ninst].n.combined2)
                 a = dyn->insts[ninst].n.combined1;
         }
         int i = neoncache_get_st_f_i64_noback(dyn, ninst, a);
-        //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "neoncache_promote_double_forward, ninst=%d, a=%d st=%d:%d(%d/%d), i=%d\n", ninst, a, dyn->insts[ninst].n.stack, dyn->insts[ninst].n.stack_next, dyn->insts[ninst].n.stack_push, -dyn->insts[ninst].n.stack_pop, i);
+        //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "neoncache_promote_double_forward, ninst=%d, a=%d st=%d:%d(%d/%d), i=%d\n", ninst, a, dyn->insts[ninst].n.stack, dyn->insts[ninst].n.stack_next, dyn->insts[ninst].n.stack_push, -dyn->insts[ninst].n.stack_pop, i);
         if(i<0) return;
         dyn->insts[ninst].n.neoncache[i].t = NEON_CACHE_ST_D;
         // check combined propagation too
         if((dyn->insts[ninst].n.combined1 || dyn->insts[ninst].n.combined2) && !dyn->insts[ninst].n.swapped) {
-            //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "neoncache_promote_double_forward, ninst=%d combined %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].n.combined1 ,dyn->insts[ninst].n.combined2, a, dyn->insts[ninst].n.stack);
+            //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "neoncache_promote_double_forward, ninst=%d combined %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].n.combined1 ,dyn->insts[ninst].n.combined2, a, dyn->insts[ninst].n.stack);
             neoncache_promote_double_combined(dyn, ninst, maxinst, a);
         }
         a-=dyn->insts[ninst].n.stack_pop;    // adjust Stack depth: remove pop'd ST (going forward)
@@ -360,20 +360,20 @@ static void neoncache_promote_double_forward(dynarec_arm_t* dyn, int ninst, int
 void neoncache_promote_double(dynarec_arm_t* dyn, int ninst, int a)
 {
     int i = neoncache_get_current_st_f_i64(dyn, a);
-    //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "neoncache_promote_double, ninst=%d a=%d st=%d i=%d\n", ninst, a, dyn->n.stack, i);
+    //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "neoncache_promote_double, ninst=%d a=%d st=%d i=%d\n", ninst, a, dyn->n.stack, i);
     if(i<0) return;
     dyn->n.neoncache[i].t = NEON_CACHE_ST_D;
     dyn->insts[ninst].n.neoncache[i].t = NEON_CACHE_ST_D;
     // check combined propagation too
     if(dyn->n.combined1 || dyn->n.combined2) {
         if(dyn->n.swapped) {
-            //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "neoncache_promote_double, ninst=%d swapped! %d/%d vs %d\n", ninst, dyn->n.combined1 ,dyn->n.combined2, a);
+            //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "neoncache_promote_double, ninst=%d swapped! %d/%d vs %d\n", ninst, dyn->n.combined1 ,dyn->n.combined2, a);
             if(dyn->n.combined1 == a)
                 a = dyn->n.combined2;
             else if(dyn->n.combined2 == a)
                 a = dyn->n.combined1;
         } else {
-            //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "neoncache_promote_double, ninst=%d combined! %d/%d vs %d\n", ninst, dyn->n.combined1 ,dyn->n.combined2, a);
+            //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "neoncache_promote_double, ninst=%d combined! %d/%d vs %d\n", ninst, dyn->n.combined1 ,dyn->n.combined2, a);
             if(dyn->n.combined1 == a)
                 neoncache_promote_double(dyn, ninst, dyn->n.combined2);
             else if(dyn->n.combined2 == a)
@@ -734,7 +734,7 @@ static register_mapping_t register_mappings[] = {
 
 void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t rex)
 {
-    if (!box64_dynarec_dump && !box64_dynarec_gdbjit && !box64_dynarec_perf_map) return;
+    if (!BOX64ENV(dynarec_dump) && !BOX64ENV(dynarec_gdbjit) && !BOX64ENV(dynarec_perf_map)) return;
 
     static char buf[512];
     int length = sprintf(buf, "barrier=%d state=%d/%d/%d(%d:%d->%d:%d), %s=%X/%X, use=%X, need=%X/%X, sm=%d(%d/%d)",
@@ -805,13 +805,13 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r
         }
     }
     if (memcmp(dyn->insts[ninst].n.neoncache, dyn->n.neoncache, sizeof(dyn->n.neoncache))) {
-        length += sprintf(buf + length, " %s(Change:", (box64_dynarec_dump > 1) ? "\e[1;91m" : "");
+        length += sprintf(buf + length, " %s(Change:", (BOX64ENV(dynarec_dump) > 1) ? "\e[1;91m" : "");
         for (int ii = 0; ii < 32; ++ii)
             if (dyn->insts[ninst].n.neoncache[ii].v != dyn->n.neoncache[ii].v) {
                 length += sprintf(buf + length, " V%d:%s", ii, getCacheName(dyn->n.neoncache[ii].t, dyn->n.neoncache[ii].n));
                 length += sprintf(buf + length, "->%s", getCacheName(dyn->insts[ninst].n.neoncache[ii].t, dyn->insts[ninst].n.neoncache[ii].n));
             }
-        length += sprintf(buf + length, ")%s", (box64_dynarec_dump > 1) ? "\e[0;32m" : "");
+        length += sprintf(buf + length, ")%s", (BOX64ENV(dynarec_dump) > 1) ? "\e[0;32m" : "");
     }
     if (dyn->insts[ninst].n.ymm_used) {
         length += sprintf(buf + length, " ymmUsed=%04x", dyn->insts[ninst].n.ymm_used);
@@ -828,15 +828,15 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r
     if (dyn->insts[ninst].n.combined1 || dyn->insts[ninst].n.combined2) {
         length += sprintf(buf + length, " %s:%d/%d", dyn->insts[ninst].n.swapped ? "SWP" : "CMB", dyn->insts[ninst].n.combined1, dyn->insts[ninst].n.combined2);
     }
-    if (box64_dynarec_dump) {
+    if (BOX64ENV(dynarec_dump)) {
         printf_x64_instruction(rex.is32bits ? my_context->dec32 : my_context->dec, &dyn->insts[ninst].x64, name);
         dynarec_log(LOG_NONE, "%s%p: %d emitted opcodes, inst=%d, %s%s\n",
-            (box64_dynarec_dump > 1) ? "\e[32m" : "",
-            (void*)(dyn->native_start + dyn->insts[ninst].address), dyn->insts[ninst].size / 4, ninst, buf, (box64_dynarec_dump > 1) ? "\e[m" : "");
+            (BOX64ENV(dynarec_dump) > 1) ? "\e[32m" : "",
+            (void*)(dyn->native_start + dyn->insts[ninst].address), dyn->insts[ninst].size / 4, ninst, buf, (BOX64ENV(dynarec_dump) > 1) ? "\e[m" : "");
     }
-    if (box64_dynarec_gdbjit) {
+    if (BOX64ENV(dynarec_gdbjit)) {
         static char buf2[512];
-        if (box64_dynarec_gdbjit > 1) {
+        if (BOX64ENV(dynarec_gdbjit) > 1) {
             sprintf(buf2, "; %d: %d opcodes, %s", ninst, dyn->insts[ninst].size / 4, buf);
             dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), buf2);
         }
@@ -849,7 +849,7 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r
         }
         dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), inst_name);
     }
-    if (box64_dynarec_perf_map && box64_dynarec_perf_map_fd != -1) {
+    if (BOX64ENV(dynarec_perf_map) && BOX64ENV(dynarec_perf_map_fd) != -1) {
         writePerfMap(dyn->insts[ninst].x64.addr, dyn->native_start + dyn->insts[ninst].address, dyn->insts[ninst].size / 4, name);
     }
 }
@@ -1096,7 +1096,7 @@ static void propagateNativeFlags(dynarec_arm_t* dyn, int start)
 
 void updateNativeFlags(dynarec_native_t* dyn)
 {
-    if(!box64_dynarec_nativeflags)
+    if(!BOX64ENV(dynarec_nativeflags))
         return;
     // forward check if native flags are used
     for(int ninst=0; ninst<dyn->size; ++ninst)
diff --git a/src/dynarec/arm64/dynarec_arm64_helper.c b/src/dynarec/arm64/dynarec_arm64_helper.c
index 7f0594f3..411afdca 100644
--- a/src/dynarec/arm64/dynarec_arm64_helper.c
+++ b/src/dynarec/arm64/dynarec_arm64_helper.c
@@ -626,7 +626,7 @@ void ret_to_epilog(dynarec_arm_t* dyn, int ninst, rex_t rex)
     POP1z(xRIP);
     MOVz_REG(x1, xRIP);
     SMEND();
-    if(box64_dynarec_callret) {
+    if(BOX64ENV(dynarec_callret)) {
         // pop the actual return address for ARM stack
         LDPx_S7_postindex(xLR, x6, xSP, 16);
         SUBx_REG(x6, x6, xRIP); // is it the right address?
@@ -673,7 +673,7 @@ void retn_to_epilog(dynarec_arm_t* dyn, int ninst, rex_t rex, int n)
     }
     MOVz_REG(x1, xRIP);
     SMEND();
-    if(box64_dynarec_callret) {
+    if(BOX64ENV(dynarec_callret)) {
         // pop the actual return address for ARM stack
         LDPx_S7_postindex(xLR, x6, xSP, 16);
         SUBx_REG(x6, x6, xRIP); // is it the right address?
@@ -2609,10 +2609,10 @@ void fpu_reset_cache(dynarec_arm_t* dyn, int ninst, int reset_n)
     dyn->ymm_zero = dyn->insts[reset_n].ymm0_out;
     #endif
     #if STEP == 0
-    if(box64_dynarec_dump && dyn->n.x87stack) dynarec_log(LOG_NONE, "New x87stack=%d at ResetCache in inst %d with %d\n", dyn->n.x87stack, ninst, reset_n);
+    if(BOX64ENV(dynarec_dump) && dyn->n.x87stack) dynarec_log(LOG_NONE, "New x87stack=%d at ResetCache in inst %d with %d\n", dyn->n.x87stack, ninst, reset_n);
         #endif
     #if defined(HAVE_TRACE) && (STEP>2)
-    if(box64_dynarec_dump && 0) //disable for now, need more work
+    if(BOX64ENV(dynarec_dump) && 0) //disable for now, need more work
         if(memcmp(&dyn->n, &dyn->insts[reset_n].n, sizeof(neoncache_t))) {
             MESSAGE(LOG_DEBUG, "Warning, difference in neoncache: reset=");
             for(int i=0; i<32; ++i)
diff --git a/src/dynarec/arm64/dynarec_arm64_helper.h b/src/dynarec/arm64/dynarec_arm64_helper.h
index 7ce075be..3bf240ab 100644
--- a/src/dynarec/arm64/dynarec_arm64_helper.h
+++ b/src/dynarec/arm64/dynarec_arm64_helper.h
@@ -728,8 +728,8 @@
     TSTw_mask(xFlags, 0b010110, 0); \
     CNEGx(r, r, cNE)
 
-#define ALIGNED_ATOMICxw ((fixedaddress && !(fixedaddress&(((1<<(2+rex.w))-1)))) || box64_dynarec_aligned_atomics)
-#define ALIGNED_ATOMICH ((fixedaddress && !(fixedaddress&1)) || box64_dynarec_aligned_atomics)
+#define ALIGNED_ATOMICxw ((fixedaddress && !(fixedaddress&(((1<<(2+rex.w))-1)))) || BOX64ENV(dynarec_aligned_atomics))
+#define ALIGNED_ATOMICH ((fixedaddress && !(fixedaddress&1)) || BOX64ENV(dynarec_aligned_atomics))
 
 // CALL will use x7 for the call address. Return value can be put in ret (unless ret is -1)
 // R0 will not be pushed/popd if ret is -2
@@ -1058,7 +1058,7 @@
 #else
 #define X87_PUSH_OR_FAIL(var, dyn, ninst, scratch, t)   \
     if ((dyn->n.x87stack==8) || (dyn->n.pushed==8)) {   \
-        if(box64_dynarec_dump) dynarec_log(LOG_NONE, " Warning, suspicious x87 Push, stack=%d/%d on inst %d\n", dyn->n.x87stack, dyn->n.pushed, ninst); \
+        if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, " Warning, suspicious x87 Push, stack=%d/%d on inst %d\n", dyn->n.x87stack, dyn->n.pushed, ninst); \
         dyn->abort = 1;                                 \
         return addr;                                    \
     }                                                   \
@@ -1066,7 +1066,7 @@
 
 #define X87_PUSH_EMPTY_OR_FAIL(dyn, ninst, scratch)     \
     if ((dyn->n.x87stack==8) || (dyn->n.pushed==8)) {   \
-        if(box64_dynarec_dump) dynarec_log(LOG_NONE, " Warning, suspicious x87 Push, stack=%d/%d on inst %d\n", dyn->n.x87stack, dyn->n.pushed, ninst); \
+        if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, " Warning, suspicious x87 Push, stack=%d/%d on inst %d\n", dyn->n.x87stack, dyn->n.pushed, ninst); \
         dyn->abort = 1;                                 \
         return addr;                                    \
     }                                                   \
@@ -1074,7 +1074,7 @@
 
 #define X87_POP_OR_FAIL(dyn, ninst, scratch)            \
     if ((dyn->n.x87stack==-8) || (dyn->n.poped==8)) {   \
-        if(box64_dynarec_dump) dynarec_log(LOG_NONE, " Warning, suspicious x87 Pop, stack=%d/%d on inst %d\n", dyn->n.x87stack, dyn->n.poped, ninst); \
+        if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, " Warning, suspicious x87 Pop, stack=%d/%d on inst %d\n", dyn->n.x87stack, dyn->n.poped, ninst); \
         dyn->abort = 1;                                 \
         return addr;                                    \
     }                                                   \
@@ -1878,19 +1878,19 @@ uintptr_t dynarec64_AVX_F3_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip
         }                                                   \
         break
 
-#define NOTEST(s1)                                          \
-    if(box64_dynarec_test) {                                \
-        STRw_U12(xZR, xEmu, offsetof(x64emu_t, test.test)); \
-        STRw_U12(xZR, xEmu, offsetof(x64emu_t, test.clean));\
+#define NOTEST(s1)                                           \
+    if (BOX64ENV(dynarec_test)) {                            \
+        STRw_U12(xZR, xEmu, offsetof(x64emu_t, test.test));  \
+        STRw_U12(xZR, xEmu, offsetof(x64emu_t, test.clean)); \
     }
-#define SKIPTEST(s1)                                        \
-    if(box64_dynarec_test) {                                \
-        STRw_U12(xZR, xEmu, offsetof(x64emu_t, test.clean));\
+#define SKIPTEST(s1)                                         \
+    if (BOX64ENV(dynarec_test)) {                            \
+        STRw_U12(xZR, xEmu, offsetof(x64emu_t, test.clean)); \
     }
-#define GOTEST(s1, s2)                                      \
-    if(box64_dynarec_test) {                                \
-        MOV32w(s2, 1);                                      \
-        STRw_U12(s2, xEmu, offsetof(x64emu_t, test.test));  \
+#define GOTEST(s1, s2)                                     \
+    if (BOX64ENV(dynarec_test)) {                          \
+        MOV32w(s2, 1);                                     \
+        STRw_U12(s2, xEmu, offsetof(x64emu_t, test.test)); \
     }
 
 #define GETREX()                                \
diff --git a/src/dynarec/arm64/dynarec_arm64_pass0.h b/src/dynarec/arm64/dynarec_arm64_pass0.h
index 0f096482..3b049d79 100644
--- a/src/dynarec/arm64/dynarec_arm64_pass0.h
+++ b/src/dynarec/arm64/dynarec_arm64_pass0.h
@@ -9,14 +9,14 @@
 #define MAYSETFLAGS()   dyn->insts[ninst].x64.may_set = 1
 #define READFLAGS(A)    \
         dyn->insts[ninst].x64.use_flags = A; dyn->f.dfnone = 1;\
-        if(!box64_dynarec_df && (A)&X_PEND) dyn->insts[ninst].x64.use_flags = X_ALL; \
+        if(!BOX64ENV(dynarec_df) && (A)&X_PEND) dyn->insts[ninst].x64.use_flags = X_ALL; \
         dyn->f.pending=SF_SET
 #define SETFLAGS(A,B)   \
         dyn->insts[ninst].x64.set_flags = A;    \
         dyn->insts[ninst].x64.state_flags = (B)&~SF_DF;  \
         dyn->f.pending=(B)&SF_SET_PENDING;      \
         dyn->f.dfnone=((B)&SF_SET)?(((B)==SF_SET_NODF)?0:1):0;  \
-        if(!box64_dynarec_df) {dyn->f.dfnone=1; dyn->f.pending=0; if((A)==SF_PENDING){printf_log(LOG_INFO, "Warning, some opcode use SF_PENDING, forcing deferedflags ON\n"); box64_dynarec_df=1; }}
+        if(!BOX64ENV(dynarec_df)) {dyn->f.dfnone=1; dyn->f.pending=0; if((A)==SF_PENDING){printf_log(LOG_INFO, "Warning, some opcode use SF_PENDING, forcing deferedflags ON\n"); SET_BOX64ENV(dynarec_df, 1); }}
 #define EMIT(A)         dyn->native_size+=4
 #define JUMP(A, C)         add_jump(dyn, ninst); add_next(dyn, (uintptr_t)A); SMEND(); dyn->insts[ninst].x64.jmp = A; dyn->insts[ninst].x64.jmp_cond = C; dyn->insts[ninst].x64.jmp_insts = 0
 #define BARRIER(A)      if(A!=BARRIER_MAYBE) {fpu_purgecache(dyn, ninst, 0, x1, x2, x3); dyn->insts[ninst].x64.barrier = A;} else dyn->insts[ninst].barrier_maybe = 1
@@ -39,7 +39,7 @@
 #define DEFAULT                         \
         --dyn->size;                    \
         *ok = -1;                       \
-        if(box64_dynarec_log>=LOG_INFO || box64_dynarec_dump || box64_dynarec_missing==1) {\
+        if(BOX64ENV(dynarec_log)>=LOG_INFO || BOX64ENV(dynarec_dump) || BOX64ENV(dynarec_missing)==1) {\
         dynarec_log(LOG_NONE, "%p: Dynarec stopped because of %sOpcode %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", \
         (void*)ip, rex.is32bits?"x86 ":"x64 ",\
         PKip(0),                        \
@@ -67,4 +67,4 @@
 #define INVERT_CARRY(A) dyn->insts[ninst].invert_carry = 1
 #define INVERT_CARRY_BEFORE(A) dyn->insts[ninst].invert_carry_before = 1
 // mark opcode as "unaligned" possible only if the current address is not marked as already unaligned
-#define IF_UNALIGNED(A) if((dyn->insts[ninst].unaligned=(is_addr_unaligned(A)?0:1)))
\ No newline at end of file
+#define IF_UNALIGNED(A) if((dyn->insts[ninst].unaligned=(is_addr_unaligned(A)?0:1)))
diff --git a/src/dynarec/arm64/dynarec_arm64_pass1.h b/src/dynarec/arm64/dynarec_arm64_pass1.h
index f0f7019d..7e81b167 100644
--- a/src/dynarec/arm64/dynarec_arm64_pass1.h
+++ b/src/dynarec/arm64/dynarec_arm64_pass1.h
@@ -12,7 +12,7 @@
         dyn->insts[ninst].x64.state_flags = (B)&~SF_DF;                 \
         dyn->f.pending=(B)&SF_SET_PENDING;                              \
         dyn->f.dfnone=((B)&SF_SET)?(((B)==SF_SET_NODF)?0:1):0;          \
-        if(!box64_dynarec_df) {dyn->f.dfnone=1; dyn->f.pending=0; }
+        if(!BOX64ENV(dynarec_df)) {dyn->f.dfnone=1; dyn->f.pending=0; }
 #define NEW_INST                                \
         dyn->insts[ninst].f_entry = dyn->f;     \
         dyn->n.combined1 = dyn->n.combined2 = 0;\
diff --git a/src/dynarec/arm64/dynarec_arm64_pass3.h b/src/dynarec/arm64/dynarec_arm64_pass3.h
index 260c69c4..6bfad31c 100644
--- a/src/dynarec/arm64/dynarec_arm64_pass3.h
+++ b/src/dynarec/arm64/dynarec_arm64_pass3.h
@@ -5,14 +5,14 @@
     addInst(dyn->instsize, &dyn->insts_size, 0, 0);
 #define EMIT(A)                                         \
     do{                                                 \
-        if(box64_dynarec_dump) print_opcode(dyn, ninst, (uint32_t)(A)); \
+        if(BOX64ENV(dynarec_dump)) print_opcode(dyn, ninst, (uint32_t)(A)); \
         if((uintptr_t)dyn->block<dyn->tablestart)       \
             *(uint32_t*)(dyn->block) = (uint32_t)(A);   \
         dyn->block += 4; dyn->native_size += 4;         \
         dyn->insts[ninst].size2 += 4;                   \
     }while(0)
 
-#define MESSAGE(A, ...)  if(box64_dynarec_dump) dynarec_log(LOG_NONE, __VA_ARGS__)
+#define MESSAGE(A, ...)  if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, __VA_ARGS__)
 #define NEW_INST        \
     if(ninst) {                                                  \
         if(dyn->insts[ninst].address!=(uintptr_t)dyn->block-(uintptr_t)dyn->native_start) dyn->abort = 1;   \
diff --git a/src/dynarec/dynablock.c b/src/dynarec/dynablock.c
index 62a63bec..517a702e 100644
--- a/src/dynarec/dynablock.c
+++ b/src/dynarec/dynablock.c
@@ -208,7 +208,7 @@ static dynablock_t* internalDBGetBlock(x64emu_t* emu, uintptr_t addr, uintptr_t
     }
 
     if(need_lock) {
-        if(box64_dynarec_wait) {
+        if(BOX64ENV(dynarec_wait)) {
             mutex_lock(&my_context->mutex_dyndump);
         } else {
             if(mutex_trylock(&my_context->mutex_dyndump))   // FillBlock not available for now
diff --git a/src/dynarec/dynarec.c b/src/dynarec/dynarec.c
index f6e61db8..ca0bd4f2 100644
--- a/src/dynarec/dynarec.c
+++ b/src/dynarec/dynarec.c
@@ -52,7 +52,7 @@ void* LinkNext(x64emu_t* emu, uintptr_t addr, void* x2, uintptr_t* x3)
     dynablock_t* block = NULL;
     if(hasAlternate((void*)addr)) {
         printf_log(LOG_DEBUG, "Jmp address has alternate: %p", (void*)addr);
-        if(box64_log<LOG_DEBUG) dynarec_log(LOG_INFO, "Jmp address has alternate: %p", (void*)addr);
+        if (BOX64ENV(log)<LOG_DEBUG) dynarec_log(LOG_INFO, "Jmp address has alternate: %p", (void*)addr);
         uintptr_t old_addr = addr;
         addr = (uintptr_t)getAlternate((void*)addr);    // set new address
         R_RIP = addr;   // but also new RIP!
@@ -63,7 +63,7 @@ void* LinkNext(x64emu_t* emu, uintptr_t addr, void* x2, uintptr_t* x3)
         block = DBGetBlock(emu, addr, 1, is32bits);
     if(!block) {
         #ifdef HAVE_TRACE
-        if(LOG_INFO<=box64_dynarec_log) {
+        if(LOG_INFO<=BOX64ENV(dynarec_log)) {
             if(checkInHotPage(addr)) {
                 dynarec_log(LOG_INFO, "Not trying to run a block from a Hotpage at %p\n", (void*)addr);
             } else {
@@ -79,7 +79,7 @@ void* LinkNext(x64emu_t* emu, uintptr_t addr, void* x2, uintptr_t* x3)
     if(!block->done) {
         // not finished yet... leave linker
         #ifdef HAVE_TRACE
-        if(box64_dynarec_log && !block->isize) {
+        if(BOX64ENV(dynarec_log) && !block->isize) {
             dynablock_t* db = FindDynablockFromNativeAddress(x2-4);
             printf_log(LOG_NONE, "Warning, NULL block at %p from %p (db=%p, x64addr=%p/%s)\n", (void*)addr, x2-4, db, db?(void*)getX64Address(db, (uintptr_t)x2-4):NULL, db?getAddrFunctionName(getX64Address(db, (uintptr_t)x2-4)):"(nil)");
         }
@@ -172,7 +172,7 @@ void DynaRun(x64emu_t* emu)
             {
                 printf_log(LOG_DEBUG, "Setjmp DynaRun, fs=0x%x\n", emu->segs[_FS]);
                 #ifdef DYNAREC
-                if(box64_dynarec_test) {
+                if(BOX64ENV(dynarec_test)) {
                     if(emu->test.clean)
                         x64test_check(emu, R_RIP);
                     emu->test.clean = 0;
@@ -184,7 +184,7 @@ void DynaRun(x64emu_t* emu)
             emu->flags.need_jmpbuf = 0;
 
 #ifdef DYNAREC
-        if(!box64_dynarec)
+        if(!BOX64ENV(dynarec))
 #endif
             Run(emu, 0);
 #ifdef DYNAREC
@@ -210,18 +210,18 @@ void DynaRun(x64emu_t* emu)
                 skip = 0;
                 // no block, of block doesn't have DynaRec content (yet, temp is not null)
                 // Use interpreter (should use single instruction step...)
-                if(box64_dynarec_log) {
+                if(BOX64ENV(dynarec_log)) {
                     if(ACCESS_FLAG(F_TF))
                         dynarec_log(LOG_INFO, "%04d|Running Interpreter @%p, emu=%p because TF is on\n", GetTID(), (void*)R_RIP, emu);
                     else
                         dynarec_log(LOG_DEBUG, "%04d|Running Interpreter @%p, emu=%p\n", GetTID(), (void*)R_RIP, emu);
                 }
-                if(box64_dynarec_test)
+                if (BOX64ENV(dynarec_test))
                     emu->test.clean = 0;
                 Run(emu, 1);
             } else {
                 dynarec_log(LOG_DEBUG, "%04d|Running DynaRec Block @%p (%p) of %d x64 insts (hash=0x%x) emu=%p\n", GetTID(), (void*)R_RIP, block->block, block->isize, block->hash, emu);
-                if(!box64_dynarec_df) {
+                if(!BOX64ENV(dynarec_df)) {
                     CHECK_FLAGS(emu);
                 }
                 // block is here, let's run it!
diff --git a/src/dynarec/dynarec_helper.h b/src/dynarec/dynarec_helper.h
index 9997fce2..4f51c9a9 100644
--- a/src/dynarec/dynarec_helper.h
+++ b/src/dynarec/dynarec_helper.h
@@ -49,12 +49,12 @@
         SMWRITE();                     \

     } while (0)

 

-#define SMWRITE2()                                             \

-    do {                                                       \

-        if (box64_dynarec_strongmem >= STRONGMEM_SIMD_WRITE) { \

-            dyn->smwrite = 1;                                  \

-            dyn->insts[ninst].will_write = 2;                  \

-        }                                                      \

+#define SMWRITE2()                                                 \

+    do {                                                           \

+        if (BOX64ENV(dynarec_strongmem) >= STRONGMEM_SIMD_WRITE) { \

+            dyn->smwrite = 1;                                      \

+            dyn->insts[ninst].will_write = 2;                      \

+        }                                                          \

     } while (0)

 

 #define SMREAD()

@@ -71,7 +71,7 @@
 #define SMEND()                                                                                \

     do {                                                                                       \

         /* If there is any guest memory write, which is a SEQ, then compute the last_write. */ \

-        if (dyn->smwrite && (box64_dynarec_strongmem >= STRONGMEM_LAST_WRITE)) {               \

+        if (dyn->smwrite && (BOX64ENV(dynarec_strongmem) >= STRONGMEM_LAST_WRITE)) {           \

             int i = ninst;                                                                     \

             while (i >= 0 && !dyn->insts[i].will_write)                                        \

                 --i;                                                                           \

@@ -88,7 +88,7 @@
 #define SMWRITE()                                                     \

     do {                                                              \

         /* Put a barrier at every third memory write. */              \

-        if (box64_dynarec_strongmem >= STRONGMEM_SEQ_WRITE) {         \

+        if (BOX64ENV(dynarec_strongmem) >= STRONGMEM_SEQ_WRITE) {     \

             if (++dyn->smwrite >= 3 /* Every third memory write */) { \

                 DMB_ISH();                                            \

                 dyn->smwrite = 1;                                     \

@@ -110,10 +110,10 @@
     } while (0)

 

 // Similar to SMWRITE, but for SIMD instructions.

-#define SMWRITE2()                                           \

-    do {                                                     \

-        if (box64_dynarec_strongmem >= STRONGMEM_SIMD_WRITE) \

-            SMWRITE();                                       \

+#define SMWRITE2()                                               \

+    do {                                                         \

+        if (BOX64ENV(dynarec_strongmem) >= STRONGMEM_SIMD_WRITE) \

+            SMWRITE();                                           \

     } while (0)

 

 // An opcode reads guest memory, this need to be put before the LOAD instruction manually.

@@ -130,22 +130,22 @@
     } while (0)

 

 // An opcode will write memory, this will be put before the STORE instruction automatically.

-#define WILLWRITE()                                                                                  \

-    do {                                                                                             \

-        if (box64_dynarec_strongmem >= dyn->insts[ninst].will_write && dyn->smwrite == 0) {          \

-            /* Will write but never written, this is the start of a SEQ, put a barrier. */           \

-            if (box64_dynarec_weakbarrier)                                                           \

-                DMB_ISHLD();                                                                         \

-            else                                                                                     \

-                DMB_ISH();                                                                           \

-        } else if (box64_dynarec_strongmem >= STRONGMEM_LAST_WRITE && box64_dynarec_weakbarrier != 2 \

-            && dyn->insts[ninst].last_write) {                                                       \

-            /* Last write, put a barrier */                                                          \

-            if (box64_dynarec_weakbarrier)                                                           \

-                DMB_ISHST();                                                                         \

-            else                                                                                     \

-                DMB_ISH();                                                                           \

-        }                                                                                            \

+#define WILLWRITE()                                                                                          \

+    do {                                                                                                     \

+        if (BOX64ENV(dynarec_strongmem) >= dyn->insts[ninst].will_write && dyn->smwrite == 0) {              \

+            /* Will write but never written, this is the start of a SEQ, put a barrier. */                   \

+            if (BOX64ENV(dynarec_weakbarrier))                                                               \

+                DMB_ISHLD();                                                                                 \

+            else                                                                                             \

+                DMB_ISH();                                                                                   \

+        } else if (BOX64ENV(dynarec_strongmem) >= STRONGMEM_LAST_WRITE && BOX64ENV(dynarec_weakbarrier) != 2 \

+            && dyn->insts[ninst].last_write) {                                                               \

+            /* Last write, put a barrier */                                                                  \

+            if (BOX64ENV(dynarec_weakbarrier))                                                               \

+                DMB_ISHST();                                                                                 \

+            else                                                                                             \

+                DMB_ISH();                                                                                   \

+        }                                                                                                    \

     } while (0)

 

 // Similar to WILLWRITE, but checks lock.

@@ -167,11 +167,11 @@
 // Will be put at the end of the SEQ

 #define SMEND()                                                         \

     do {                                                                \

-        if (box64_dynarec_strongmem) {                                  \

+        if (BOX64ENV(dynarec_strongmem)) {                              \

             /* It's a SEQ, put a barrier here. */                       \

             if (dyn->smwrite) {                                         \

                 /* Check if the next instruction has a end loop mark */ \

-                if (box64_dynarec_weakbarrier)                          \

+                if (BOX64ENV(dynarec_weakbarrier))                      \

                     DMB_ISHST();                                        \

                 else                                                    \

                     DMB_ISH();                                          \

diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c
index e901e462..b096b79f 100644
--- a/src/dynarec/dynarec_native.c
+++ b/src/dynarec/dynarec_native.c
@@ -30,15 +30,15 @@ void printf_x64_instruction(zydis_dec_t* dec, instruction_x64_t* inst, const cha
     if(ip[0]==0xcc && ip[1]=='S' && ip[2]=='C') {
         uintptr_t a = *(uintptr_t*)(ip+3);
         if(a==0) {
-            dynarec_log(LOG_NONE, "%s%p: Exit x64emu%s\n", (box64_dynarec_dump>1)?"\e[01;33m":"", (void*)ip, (box64_dynarec_dump>1)?"\e[m":"");
+            dynarec_log(LOG_NONE, "%s%p: Exit x64emu%s\n", (BOX64ENV(dynarec_dump)>1)?"\e[01;33m":"", (void*)ip, (BOX64ENV(dynarec_dump)>1)?"\e[m":"");
         } else {
-            dynarec_log(LOG_NONE, "%s%p: Native call to %p%s\n", (box64_dynarec_dump>1)?"\e[01;33m":"", (void*)ip, (void*)a, (box64_dynarec_dump>1)?"\e[m":"");
+            dynarec_log(LOG_NONE, "%s%p: Native call to %p%s\n", (BOX64ENV(dynarec_dump)>1)?"\e[01;33m":"", (void*)ip, (void*)a, (BOX64ENV(dynarec_dump)>1)?"\e[m":"");
         }
     } else {
         if(dec) {
-            dynarec_log(LOG_NONE, "%s%p: %s", (box64_dynarec_dump > 1) ? "\e[01;33m" : "", ip, DecodeX64Trace(dec, inst->addr, 1));
+            dynarec_log(LOG_NONE, "%s%p: %s", (BOX64ENV(dynarec_dump) > 1) ? "\e[01;33m" : "", ip, DecodeX64Trace(dec, inst->addr, 1));
         } else {
-            dynarec_log(LOG_NONE, "%s%p: ", (box64_dynarec_dump>1)?"\e[01;33m":"", ip);
+            dynarec_log(LOG_NONE, "%s%p: ", (BOX64ENV(dynarec_dump)>1)?"\e[01;33m":"", ip);
             for(int i=0; i<inst->size; ++i) {
                 dynarec_log(LOG_NONE, "%02X ", ip[i]);
             }
@@ -55,12 +55,12 @@ void printf_x64_instruction(zydis_dec_t* dec, instruction_x64_t* inst, const cha
             }
         }
         // end of line and colors
-        dynarec_log(LOG_NONE, "%s\n", (box64_dynarec_dump>1)?"\e[m":"");
+        dynarec_log(LOG_NONE, "%s\n", (BOX64ENV(dynarec_dump)>1)?"\e[m":"");
     }
 }
 
 void add_next(dynarec_native_t *dyn, uintptr_t addr) {
-    if(!box64_dynarec_bigblock)
+    if(!BOX64ENV(dynarec_bigblock))
         return;
     // exist?
     for(int i=0; i<dyn->next_sz; ++i)
@@ -422,7 +422,7 @@ static void updateYmm0s(dynarec_native_t* dyn, int ninst, int max_ninst_reached)
     int can_incr = ninst == max_ninst_reached; // Are we the top-level call?
     int ok = 1;
     while ((can_incr || ok) && ninst<dyn->size) {
-        //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "update ninst=%d (%d): can_incr=%d\n", ninst, max_ninst_reached, can_incr);
+        //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "update ninst=%d (%d): can_incr=%d\n", ninst, max_ninst_reached, can_incr);
         uint16_t new_purge_ymm, new_ymm0_in, new_ymm0_out;
 
         if (dyn->insts[ninst].pred_sz && dyn->insts[ninst].x64.alive) {
@@ -433,18 +433,18 @@ static void updateYmm0s(dynarec_native_t* dyn, int ninst, int max_ninst_reached)
             uint16_t ymm0_inter = (ninst && !(dyn->insts[ninst].x64.barrier & BARRIER_FLOAT)) ? ((uint16_t)-1) : (uint16_t)0;
             for (int i = 0; i < dyn->insts[ninst].pred_sz; ++i) {
                 int pred = dyn->insts[ninst].pred[i];
-                //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "\twith pred[%d] = %d", i, pred);
+                //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "\twith pred[%d] = %d", i, pred);
                 if (pred >= max_ninst_reached) {
-                    //if(box64_dynarec_dump) dynarec_log(LOG_NONE, " (skipped)\n");
+                    //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, " (skipped)\n");
                     continue;
                 }
 
                 int pred_out = dyn->insts[pred].x64.has_callret ? 0 : dyn->insts[pred].ymm0_out;
-                //if(box64_dynarec_dump) dynarec_log(LOG_NONE, " ~> %04X\n", pred_out);
+                //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, " ~> %04X\n", pred_out);
                 ymm0_union |= pred_out;
                 ymm0_inter &= pred_out;
             }
-            //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "\t=> %04X,%04X\n", ymm0_union, ymm0_inter);
+            //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "\t=> %04X,%04X\n", ymm0_union, ymm0_inter);
             // Notice the default values yield something coherent here (if all pred are after ninst)
             new_purge_ymm = ymm0_union & ~ymm0_inter;
             new_ymm0_in = ymm0_inter;
@@ -466,7 +466,7 @@ static void updateYmm0s(dynarec_native_t* dyn, int ninst, int max_ninst_reached)
 
                 int jmp = (dyn->insts[ninst].x64.jmp)?dyn->insts[ninst].x64.jmp_insts:-1;
                 if((jmp!=-1) && (jmp < max_ninst_reached)) {
-                    //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "\t! jump to %d\n", jmp);
+                    //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "\t! jump to %d\n", jmp);
                     // The jump goes before the last instruction reached, update the destination
                     // If this is the top level call, this means the jump goes backward (jmp != ninst)
                     // Otherwise, since we don't update all instructions, we may miss the update (don't use jmp < ninst)
@@ -480,7 +480,7 @@ static void updateYmm0s(dynarec_native_t* dyn, int ninst, int max_ninst_reached)
                     // Also update jumps to before (they are skipped otherwise)
                     int jmp = (dyn->insts[ninst].x64.jmp)?dyn->insts[ninst].x64.jmp_insts:-1;
                     if((jmp!=-1) && (jmp < max_ninst_reached)) {
-                        //if(box64_dynarec_dump) dynarec_log(LOG_NONE, "\t! jump to %d\n", jmp);
+                        //if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "\t! jump to %d\n", jmp);
                         updateYmm0s(dyn, jmp, max_ninst_reached);
                     }
                 } else {
@@ -597,7 +597,7 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bit
         C ..    C+sz    : arch: arch specific info (likes flags info) per inst (can be absent)
 
     */
-    if(addr>=box64_nodynarec_start && addr<box64_nodynarec_end) {
+    if(addr>=BOX64ENV(nodynarec_start) && addr<BOX64ENV(nodynarec_end)) {
         dynarec_log(LOG_INFO, "Create empty block in no-dynarec zone\n");
         return CreateEmptyBlock(block, addr, is32bits);
     }
@@ -627,7 +627,7 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bit
     // pass 0, addresses, x64 jump addresses, overall size of the block
     uintptr_t end = native_pass0(&helper, addr, alternate, is32bits);
     if(helper.abort) {
-        if(box64_dynarec_dump || box64_dynarec_log)dynarec_log(LOG_NONE, "Abort dynablock on pass0\n");
+        if(BOX64ENV(dynarec_dump) || BOX64ENV(dynarec_log))dynarec_log(LOG_NONE, "Abort dynablock on pass0\n");
         CancelBlock64(0);
         return NULL;
     }
@@ -742,7 +742,7 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bit
     // pass 1, float optimizations, first pass for flags
     native_pass1(&helper, addr, alternate, is32bits);
     if(helper.abort) {
-        if(box64_dynarec_dump || box64_dynarec_log)dynarec_log(LOG_NONE, "Abort dynablock on pass1\n");
+        if(BOX64ENV(dynarec_dump) || BOX64ENV(dynarec_log))dynarec_log(LOG_NONE, "Abort dynablock on pass1\n");
         CancelBlock64(0);
         return NULL;
     }
@@ -750,7 +750,7 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bit
     // pass 2, instruction size
     native_pass2(&helper, addr, alternate, is32bits);
     if(helper.abort) {
-        if(box64_dynarec_dump || box64_dynarec_log)dynarec_log(LOG_NONE, "Abort dynablock on pass2\n");
+        if(BOX64ENV(dynarec_dump) || BOX64ENV(dynarec_log))dynarec_log(LOG_NONE, "Abort dynablock on pass2\n");
         CancelBlock64(0);
         return NULL;
     }
@@ -783,12 +783,12 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bit
     helper.table64cap = helper.table64size;
     helper.table64 = (uint64_t*)helper.tablestart;
     // pass 3, emit (log emit native opcode)
-    if(box64_dynarec_dump) {
-        dynarec_log(LOG_NONE, "%s%04d|Emitting %zu bytes for %u %s bytes (native=%zu, table64=%zu, instsize=%zu, arch=%zu)", (box64_dynarec_dump>1)?"\e[01;36m":"", GetTID(), helper.native_size, helper.isize, is32bits?"x86":"x64", native_size, helper.table64size*sizeof(uint64_t), insts_rsize, arch_size); 
+    if(BOX64ENV(dynarec_dump)) {
+        dynarec_log(LOG_NONE, "%s%04d|Emitting %zu bytes for %u %s bytes (native=%zu, table64=%zu, instsize=%zu, arch=%zu)", (BOX64ENV(dynarec_dump)>1)?"\e[01;36m":"", GetTID(), helper.native_size, helper.isize, is32bits?"x86":"x64", native_size, helper.table64size*sizeof(uint64_t), insts_rsize, arch_size); 
         printFunctionAddr(helper.start, " => ");
-        dynarec_log(LOG_NONE, "%s\n", (box64_dynarec_dump>1)?"\e[m":"");
+        dynarec_log(LOG_NONE, "%s\n", (BOX64ENV(dynarec_dump)>1)?"\e[m":"");
     }
-    if (box64_dynarec_gdbjit) {
+    if (BOX64ENV(dynarec_gdbjit)) {
         GdbJITNewBlock(helper.gdbjit_block, (GDB_CORE_ADDR)block->actual_block, (GDB_CORE_ADDR)block->actual_block + native_size, helper.start);
     }
     int oldtable64size = helper.table64size;
@@ -800,7 +800,7 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bit
     helper.insts_size = 0;  // reset
     native_pass3(&helper, addr, alternate, is32bits);
     if(helper.abort) {
-        if(box64_dynarec_dump || box64_dynarec_log)dynarec_log(LOG_NONE, "Abort dynablock on pass3\n");
+        if(BOX64ENV(dynarec_dump) || BOX64ENV(dynarec_log))dynarec_log(LOG_NONE, "Abort dynablock on pass3\n");
         CancelBlock64(0);
         return NULL;
     }
@@ -833,7 +833,7 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bit
     //block->x64_addr = (void*)start;
     block->x64_size = end-start;
     // all done...
-    if (box64_dynarec_gdbjit) {
+    if (BOX64ENV(dynarec_gdbjit)) {
         GdbJITBlockReady(helper.gdbjit_block);
     }
     ClearCache(actual_p+sizeof(void*), native_size);   // need to clear the cache before execution...
@@ -892,5 +892,5 @@ void writePerfMap(uintptr_t func_addr, uintptr_t code_addr, size_t code_size, co
     uintptr_t start = 0;
     const char* symbname = FindNearestSymbolName(FindElfAddress(my_context, func_addr), (void*)func_addr, &start, &sz);
     snprintf(pbuf, sizeof(pbuf), "0x%lx %ld %s:%s\n", code_addr, code_size, symbname, inst_name);
-    write(box64_dynarec_perf_map_fd, pbuf, strlen(pbuf));
+    write(BOX64ENV(dynarec_perf_map_fd), pbuf, strlen(pbuf));
 }
diff --git a/src/dynarec/dynarec_native_functions.c b/src/dynarec/dynarec_native_functions.c
index 18082d82..bcf06e6a 100644
--- a/src/dynarec/dynarec_native_functions.c
+++ b/src/dynarec/dynarec_native_functions.c
@@ -184,7 +184,7 @@ void native_fld(x64emu_t* emu, uint8_t* ed)
 
 void native_ud(x64emu_t* emu)
 {
-    if(box64_dynarec_test)
+    if(BOX64ENV(dynarec_test))
         emu->test.test = 0;
     emit_signal(emu, SIGILL, (void*)R_RIP, 0);
 }
diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c
index 50d5e231..7ab4f528 100644
--- a/src/dynarec/dynarec_native_pass.c
+++ b/src/dynarec/dynarec_native_pass.c
@@ -57,7 +57,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
     ARCH_INIT();
     int reset_n = -1; // -1 no reset; -2 reset to 0; else reset to the state of reset_n
     dyn->last_ip = (alternate || (dyn->insts && dyn->insts[0].pred_sz))?0:ip;  // RIP is always set at start of block unless there is a predecessor!
-    int stopblock = 2+(FindElfAddress(my_context, addr)?0:1); // if block is in elf_memory, it can be extended with box64_dynarec_bigblock==2, else it needs 3
+    int stopblock = 2+(FindElfAddress(my_context, addr)?0:1); // if block is in elf_memory, it can be extended with BOX64ENV(dynarec_bigblock)==2, else it needs 3
     // ok, go now
     INIT;
     #if STEP == 0
@@ -126,7 +126,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
         if((dyn->insts[ninst].x64.need_before&~X_PEND) && !dyn->insts[ninst].pred_sz) {
             READFLAGS(dyn->insts[ninst].x64.need_before&~X_PEND);
         }
-        if(box64_dynarec_test && (!box64_dynarec_test_end || (ip>=box64_dynarec_test_start && ip<box64_dynarec_test_end) )) {
+        if(BOX64ENV(dynarec_test) && (!BOX64ENV(dynarec_test_end) || (ip>=BOX64ENV(dynarec_test_start) && ip<BOX64ENV(dynarec_test_end)))) {
             MESSAGE(LOG_DUMP, "TEST STEP ----\n");
             extcache_native_t save;
             fpu_save_and_unwind(dyn, ninst, &save);
@@ -137,7 +137,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
             MESSAGE(LOG_DUMP, "----------\n");
         }
 #ifdef HAVE_TRACE
-        else if(my_context->dec && box64_dynarec_trace) {
+        else if(my_context->dec && BOX64ENV(dynarec_trace)) {
         if((trace_end == 0)
             || ((ip >= trace_start) && (ip < trace_end)))  {
                 MESSAGE(LOG_DUMP, "TRACE ----\n");
@@ -232,7 +232,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
         #else
         // check if block need to be stopped, because it's a 00 00 opcode (unreadeable is already checked earlier)
         if((ok>0) && !dyn->forward && !(*(uint32_t*)addr)) {
-            if(box64_dynarec_dump) dynarec_log(LOG_NONE, "Stopping block at %p reason: %s\n", (void*)addr, "Next opcode is 00 00 00 00");
+            if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "Stopping block at %p reason: %s\n", (void*)addr, "Next opcode is 00 00 00 00");
             ok = 0;
             need_epilog = 1;
             dyn->insts[ninst].x64.need_after |= X_PEND;
@@ -241,7 +241,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
             if(dyn->forward_to == addr && !need_epilog && ok>=0) {
                 // we made it!
                 reset_n = get_first_jump_addr(dyn, addr);
-                if(box64_dynarec_dump) dynarec_log(LOG_NONE, "Forward extend block for %d bytes %s%p -> %p (ninst %d - %d)\n", dyn->forward_to-dyn->forward, dyn->insts[dyn->forward_ninst].x64.has_callret?"(opt. call) ":"", (void*)dyn->forward, (void*)dyn->forward_to, reset_n, ninst);
+                if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "Forward extend block for %d bytes %s%p -> %p (ninst %d - %d)\n", dyn->forward_to-dyn->forward, dyn->insts[dyn->forward_ninst].x64.has_callret?"(opt. call) ":"", (void*)dyn->forward, (void*)dyn->forward_to, reset_n, ninst);
                 if(dyn->insts[dyn->forward_ninst].x64.has_callret && !dyn->insts[dyn->forward_ninst].x64.has_next)
                     dyn->insts[dyn->forward_ninst].x64.has_next = 1;  // this block actually continue
                 dyn->forward = 0;
@@ -251,7 +251,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
                 ok = 1; // in case it was 0
             } else if ((dyn->forward_to < addr) || ok<=0) {
                 // something when wrong! rollback
-                if(box64_dynarec_dump) dynarec_log(LOG_NONE, "Could not forward extend block for %d bytes %p -> %p\n", dyn->forward_to-dyn->forward, (void*)dyn->forward, (void*)dyn->forward_to);
+                if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "Could not forward extend block for %d bytes %p -> %p\n", dyn->forward_to-dyn->forward, (void*)dyn->forward, (void*)dyn->forward_to);
                 ok = 0;
                 dyn->size = dyn->forward_size;
                 ninst = dyn->forward_ninst;
@@ -262,7 +262,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
                 dyn->forward_ninst = 0;
             }
             // else just continue
-        } else if(!ok && !need_epilog && box64_dynarec_bigblock && (getProtection(addr+3)&~PROT_READ))
+        } else if(!ok && !need_epilog && BOX64ENV(dynarec_bigblock) && (getProtection(addr+3)&~PROT_READ))
             if(*(uint32_t*)addr!=0) {   // check if need to continue (but is next 4 bytes are 0, stop)
                 uintptr_t next = get_closest_next(dyn, addr);
                 if(next && (
@@ -277,9 +277,9 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
                         // and pred table is not ready yet
                         reset_n = get_first_jump(dyn, next);
                     }
-                    if(box64_dynarec_dump) dynarec_log(LOG_NONE, "Extend block %p, %s%p -> %p (ninst=%d, jump from %d)\n", dyn, dyn->insts[ninst].x64.has_callret?"(opt. call) ":"", (void*)addr, (void*)next, ninst+1, dyn->insts[ninst].x64.has_callret?ninst:reset_n);
-                } else if(next && (int)(next-addr)<box64_dynarec_forward && (getProtection(next)&PROT_READ)/*box64_dynarec_bigblock>=stopblock*/) {
-                    if(!((box64_dynarec_bigblock<stopblock) && !isJumpTableDefault64((void*)next))) {
+                    if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "Extend block %p, %s%p -> %p (ninst=%d, jump from %d)\n", dyn, dyn->insts[ninst].x64.has_callret?"(opt. call) ":"", (void*)addr, (void*)next, ninst+1, dyn->insts[ninst].x64.has_callret?ninst:reset_n);
+                } else if(next && (int)(next-addr)<BOX64ENV(dynarec_forward) && (getProtection(next)&PROT_READ)/*BOX64ENV(dynarec_bigblock)>=stopblock*/) {
+                    if(!((BOX64ENV(dynarec_bigblock)<stopblock) && !isJumpTableDefault64((void*)next))) {
                         if(dyn->forward) {
                             if(next<dyn->forward_to)
                                 dyn->forward_to = next;
@@ -327,8 +327,8 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
         ++ninst;
         #if STEP == 0
         memset(&dyn->insts[ninst], 0, sizeof(instruction_native_t));
-        if((ok>0) && (((box64_dynarec_bigblock<stopblock) && !isJumpTableDefault64((void*)addr))
-            || (addr>=box64_nodynarec_start && addr<box64_nodynarec_end)))
+        if((ok>0) && (((BOX64ENV(dynarec_bigblock)<stopblock) && !isJumpTableDefault64((void*)addr))
+            || (addr>=BOX64ENV(nodynarec_start) && addr<BOX64ENV(nodynarec_end))))
         #else
         if((ok>0) && (ninst==dyn->size))
         #endif
@@ -346,7 +346,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
             }
             #endif
             MESSAGE(LOG_DEBUG, "Stopping block %p (%d / %d)\n",(void*)init_addr, ninst, dyn->size);
-            if(!box64_dynarec_dump && addr>=box64_nodynarec_start && addr<box64_nodynarec_end)
+            if(!BOX64ENV(dynarec_dump) && addr>=BOX64ENV(nodynarec_start) && addr<BOX64ENV(nodynarec_end))
                 dynarec_log(LOG_INFO, "Stopping block in no-dynarec zone\n");
             --ninst;
             if(!dyn->insts[ninst].x64.barrier) {
diff --git a/src/dynarec/la64/dynarec_la64_00.c b/src/dynarec/la64/dynarec_la64_00.c
index a3a188a7..f9dfbc0a 100644
--- a/src/dynarec/la64/dynarec_la64_00.c
+++ b/src/dynarec/la64/dynarec_la64_00.c
@@ -1796,7 +1796,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             break;
         case 0xC2:
             INST_NAME("RETN");
-            if (box64_dynarec_safeflags) {
+            if (BOX64ENV(dynarec_safeflags)) {
                 READFLAGS(X_PEND); // lets play safe here too
             }
             fpu_purgecache(dyn, ninst, 1, x1, x2, x3); // using next, even if there no next
@@ -1807,7 +1807,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             break;
         case 0xC3:
             INST_NAME("RET");
-            if (box64_dynarec_safeflags) {
+            if (BOX64ENV(dynarec_safeflags)) {
                 READFLAGS(X_PEND); // so instead, force the deferred flags, so it's not too slow, and flags are not lost
             }
             fpu_purgecache(dyn, ninst, 1, x1, x2, x3); // using next, even if there no next
@@ -1902,7 +1902,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                 }
             } else {
                 INST_NAME("INT 3");
-                if (!box64_ignoreint3) {
+                if (!BOX64ENV(ignoreint3)) {
                     // check if TRAP signal is handled
                     TABLE64(x1, (uintptr_t)my_context);
                     MOV32w(x2, offsetof(box64context_t, signals[SIGTRAP]));
@@ -1959,7 +1959,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         BEQ_NEXT(x2, xZR);
                     }
                     SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-                    if (box64_dynarec_safeflags > 1) MAYSETFLAGS();
+                    if (BOX64ENV(dynarec_safeflags) > 1) MAYSETFLAGS();
                     emit_shl8(dyn, ninst, x1, x2, x5, x4, x6);
                     EBBACK();
                     break;
@@ -1975,7 +1975,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         BEQ_NEXT(x2, xZR);
                     }
                     SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-                    if (box64_dynarec_safeflags > 1) MAYSETFLAGS();
+                    if (BOX64ENV(dynarec_safeflags) > 1) MAYSETFLAGS();
                     emit_shr8(dyn, ninst, x1, x2, x5, x4, x6);
                     EBBACK();
                     break;
@@ -2185,7 +2185,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     MESSAGE(LOG_DUMP, "Native Call to %s (retn=%d)\n", GetNativeName(GetNativeFnc(dyn->insts[ninst].natcall - 1)), dyn->insts[ninst].retn);
                     // calling a native function
                     sse_purge07cache(dyn, ninst, x3);
-                    if ((box64_log < 2 && !cycle_log) && dyn->insts[ninst].natcall) {
+                    if ((BOX64ENV(log) < 2 && !BOX64ENV(rolling_log)) && dyn->insts[ninst].natcall) {
                         // FIXME: Add basic support for isSimpleWrapper
                         tmp = 0; // isSimpleWrapper(*(wrapper_t*)(dyn->insts[ninst].natcall + 2));
                     } else
@@ -2195,7 +2195,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     // FIXME: if (dyn->insts[ninst].natcall && isRetX87Wrapper(*(wrapper_t*)(dyn->insts[ninst].natcall + 2)))
                     //     // return value will be on the stack, so the stack depth needs to be updated
                     //     x87_purgecache(dyn, ninst, 0, x3, x1, x4);
-                    if ((box64_log < 2 && !cycle_log) && dyn->insts[ninst].natcall && tmp) {
+                    if ((BOX64ENV(log) < 2 && !BOX64ENV(rolling_log)) && dyn->insts[ninst].natcall && tmp) {
                         // GETIP(ip+3+8+8); // read the 0xCC
                         // FIXME: call_n(dyn, ninst, *(void**)(dyn->insts[ninst].natcall + 2 + 8), tmp);
                         POP1(xRIP); // pop the return address
@@ -2228,13 +2228,13 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     }
                     break;
                 default:
-                    if ((box64_dynarec_safeflags > 1) || (ninst && dyn->insts[ninst - 1].x64.set_flags)) {
+                    if ((BOX64ENV(dynarec_safeflags) > 1) || (ninst && dyn->insts[ninst - 1].x64.set_flags)) {
                         READFLAGS(X_PEND); // that's suspicious
                     } else {
                         SETFLAGS(X_ALL, SF_SET_NODF, NAT_FLAGS_NOFUSION); // Hack to set flags to "dont'care" state
                     }
                     // regular call
-                    /*if (box64_dynarec_callret && box64_dynarec_bigblock > 1) {
+                    /*if (BOX64ENV(dynarec_callret) && BOX64ENV(dynarec_bigblock) > 1) {
                         BARRIER(BARRIER_FULL);
                     } else {
                         BARRIER(BARRIER_FLOAT);
@@ -2249,7 +2249,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     }
                     fpu_purgecache(dyn, ninst, 1, x1, x3, x4);
                     PUSH1z(x2);
-                    if (box64_dynarec_callret) {
+                    if (BOX64ENV(dynarec_callret)) {
                         SET_HASCALLRET();
                         // Push actual return address
                         if (addr < (dyn->start + dyn->isize)) {
@@ -2276,7 +2276,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     else
                         j64 = addr + i32;
                     jump_to_next(dyn, j64, 0, ninst, rex.is32bits);
-                    if (box64_dynarec_callret && addr >= (dyn->start + dyn->isize)) {
+                    if (BOX64ENV(dynarec_callret) && addr >= (dyn->start + dyn->isize)) {
                         // jumps out of current dynablock...
                         MARK;
                         j64 = getJumpTableAddress64(addr);
@@ -2602,13 +2602,13 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     break;
                 case 2:
                     INST_NAME("CALL Ed");
-                    PASS2IF ((box64_dynarec_safeflags > 1) || ((ninst && dyn->insts[ninst - 1].x64.set_flags) || ((ninst > 1) && dyn->insts[ninst - 2].x64.set_flags)), 1) {
+                    PASS2IF ((BOX64ENV(dynarec_safeflags) > 1) || ((ninst && dyn->insts[ninst - 1].x64.set_flags) || ((ninst > 1) && dyn->insts[ninst - 2].x64.set_flags)), 1) {
                         READFLAGS(X_PEND); // that's suspicious
                     } else {
                         SETFLAGS(X_ALL, SF_SET_NODF, NAT_FLAGS_NOFUSION); // Hack to put flag in "don't care" state
                     }
                     GETEDz(0);
-                    if (box64_dynarec_callret && box64_dynarec_bigblock > 1) {
+                    if (BOX64ENV(dynarec_callret) && BOX64ENV(dynarec_bigblock) > 1) {
                         BARRIER(BARRIER_FULL);
                     } else {
                         BARRIER(BARRIER_FLOAT);
@@ -2616,7 +2616,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         *ok = 0;
                     }
                     GETIP_(addr);
-                    if (box64_dynarec_callret) {
+                    if (BOX64ENV(dynarec_callret)) {
                         SET_HASCALLRET();
                         // Push actual return address
                         if (addr < (dyn->start + dyn->isize)) {
@@ -2637,7 +2637,7 @@ uintptr_t dynarec64_00(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     }
                     PUSH1z(xRIP);
                     jump_to_next(dyn, 0, ed, ninst, rex.is32bits);
-                    if (box64_dynarec_callret && addr >= (dyn->start + dyn->isize)) {
+                    if (BOX64ENV(dynarec_callret) && addr >= (dyn->start + dyn->isize)) {
                         // jumps out of current dynablock...
                         MARK;
                         j64 = getJumpTableAddress64(addr);
diff --git a/src/dynarec/la64/dynarec_la64_0f.c b/src/dynarec/la64/dynarec_la64_0f.c
index 313f4f07..70b20bd7 100644
--- a/src/dynarec/la64/dynarec_la64_0f.c
+++ b/src/dynarec/la64/dynarec_la64_0f.c
@@ -592,7 +592,7 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             nextop = F8;
             GETGX(v0, 1);
             GETEX(v1, 0, 0);
-            if (!box64_dynarec_fastnan && v0 != v1) {
+            if (!BOX64ENV(dynarec_fastnan) && v0 != v1) {
                 q0 = fpu_get_scratch(dyn);
                 // always copy from v1 if any oprand is NaN
                 VFCMP_S(q0, v0, v1, cUN);
@@ -614,7 +614,7 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             nextop = F8;
             GETGX(v0, 1);
             GETEX(v1, 0, 0);
-            if (!box64_dynarec_fastnan && v0 != v1) {
+            if (!BOX64ENV(dynarec_fastnan) && v0 != v1) {
                 q0 = fpu_get_scratch(dyn);
                 // always copy from v1 if any oprand is NaN
                 VFCMP_S(q0, v0, v1, cUN);
@@ -856,7 +856,7 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         INST_NAME("LDMXCSR Md");
                         GETED(0);
                         ST_W(ed, xEmu, offsetof(x64emu_t, mxcsr));
-                        if (box64_sse_flushto0) {
+                        if (BOX64ENV(sse_flushto0)) {
                             // TODO
                         }
                         break;
@@ -901,7 +901,7 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             nextop = F8;
             GETGD;
             GETED(0);
-            if (box64_dynarec_test) {
+            if (BOX64ENV(dynarec_test)) {
                 // avoid noise during test
                 CLEAR_FLAGS(x3);
             }
diff --git a/src/dynarec/la64/dynarec_la64_66.c b/src/dynarec/la64/dynarec_la64_66.c
index 27999e66..68894bf4 100644
--- a/src/dynarec/la64/dynarec_la64_66.c
+++ b/src/dynarec/la64/dynarec_la64_66.c
@@ -795,7 +795,7 @@ uintptr_t dynarec64_66(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         BEQ_NEXT(x2, xZR);
                     }
                     SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-                    if (box64_dynarec_safeflags > 1) MAYSETFLAGS();
+                    if (BOX64ENV(dynarec_safeflags) > 1) MAYSETFLAGS();
                     GETEW(x1, 0);
                     emit_shr16(dyn, ninst, x1, x2, x5, x4, x6);
                     EWBACK;
@@ -811,7 +811,7 @@ uintptr_t dynarec64_66(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         BEQ_NEXT(x2, xZR);
                     }
                     SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-                    if (box64_dynarec_safeflags > 1)
+                    if (BOX64ENV(dynarec_safeflags) > 1)
                         MAYSETFLAGS();
                     GETEW(x1, 0);
                     emit_shl16(dyn, ninst, x1, x2, x5, x4, x6);
@@ -827,7 +827,7 @@ uintptr_t dynarec64_66(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         BEQ_NEXT(x2, xZR);
                     }
                     SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-                    if (box64_dynarec_safeflags > 1)
+                    if (BOX64ENV(dynarec_safeflags) > 1)
                         MAYSETFLAGS();
                     GETSEW(x1, 0);
                     emit_sar16(dyn, ninst, x1, x2, x5, x4, x6);
@@ -872,7 +872,7 @@ uintptr_t dynarec64_66(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     SLLI_D(x7, xRDX, 48);
                     SRLI_D(x7, x7, 32);
                     OR(x2, x2, x7);
-                    if(box64_dynarec_div0) {
+                    if(BOX64ENV(dynarec_div0)) {
                         BNE_MARK3(ed, xZR);
                         GETIP_(ip);
                         STORE_XEMU_CALL();
@@ -893,7 +893,7 @@ uintptr_t dynarec64_66(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     SETFLAGS(X_ALL, SF_SET, NAT_FLAGS_NOFUSION);
                     SET_DFNONE();
                     GETSEW(x1, 0);
-                    if (box64_dynarec_div0) {
+                    if (BOX64ENV(dynarec_div0)) {
                         BNE_MARK3(ed, xZR);
                         GETIP_(ip);
                         STORE_XEMU_CALL();
diff --git a/src/dynarec/la64/dynarec_la64_660f.c b/src/dynarec/la64/dynarec_la64_660f.c
index 5d74e154..5b6055cc 100644
--- a/src/dynarec/la64/dynarec_la64_660f.c
+++ b/src/dynarec/la64/dynarec_la64_660f.c
@@ -861,13 +861,13 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETEX(q0, 0, 0);
             GETGX(q1, 1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v0 = fpu_get_scratch(dyn);
                 v1 = fpu_get_scratch(dyn);
                 VFCMP_D(v0, q0, q1, cUN);
             }
             VFADD_D(q1, q1, q0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VFCMP_D(v1, q1, q1, cUN);
                 VANDN_V(v0, v0, v1);
                 VLDI(v1, 0b011111111000); // broadcast 0xFFFFFFFFFFFFFFF8
@@ -882,13 +882,13 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETEX(q0, 0, 0);
             GETGX(q1, 1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v0 = fpu_get_scratch(dyn);
                 v1 = fpu_get_scratch(dyn);
                 VFCMP_D(v0, q0, q1, cUN);
             }
             VFMUL_D(q1, q1, q0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VFCMP_D(v1, q1, q1, cUN);
                 VANDN_V(v0, v0, v1);
                 VLDI(v1, 0b011111111000); // broadcast 0xFFFFFFFFFFFFFFF8
@@ -903,7 +903,7 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETEX(v1, 0, 0);
             GETGX_empty(v0);
-            // TODO: !box64_dynarec_fastround
+            // TODO: !BOX64ENV(dynarec_fastround)
             q0 = fpu_get_scratch(dyn);
             VFCVT_S_D(q0, v1, v1);
             VXOR_V(v0, v0, v0);
@@ -915,12 +915,12 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEX(v1, 0, 0);
             GETGX_empty(v0);
             u8 = sse_setround(dyn, ninst, x6, x4);
-            if (v0 == v1 && !box64_dynarec_fastround) {
+            if (v0 == v1 && !BOX64ENV(dynarec_fastround)) {
                 v1 = fpu_get_scratch(dyn);
                 VOR_V(v1, v0, v0);
             }
             VFTINT_W_S(v0, v1);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 q0 = fpu_get_scratch(dyn);
                 q1 = fpu_get_scratch(dyn);
                 d1 = fpu_get_scratch(dyn);
@@ -941,13 +941,13 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETEX(q0, 0, 0);
             GETGX(q1, 1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v0 = fpu_get_scratch(dyn);
                 v1 = fpu_get_scratch(dyn);
                 VFCMP_D(v0, q0, q1, cUN);
             }
             VFSUB_D(q1, q1, q0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VFCMP_D(v1, q1, q1, cUN);
                 VANDN_V(v0, v0, v1);
                 VLDI(v1, 0b011111111000); // broadcast 0xFFFFFFFFFFFFFFF8
@@ -962,13 +962,13 @@ uintptr_t dynarec64_660F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETEX(q0, 0, 0);
             GETGX(q1, 1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v0 = fpu_get_scratch(dyn);
                 v1 = fpu_get_scratch(dyn);
                 VFCMP_D(v0, q0, q1, cUN);
             }
             VFDIV_D(q1, q1, q0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VFCMP_D(v1, q1, q1, cUN);
                 VANDN_V(v0, v0, v1);
                 VLDI(v1, 0b011111111000); // broadcast 0xFFFFFFFFFFFFFFF8
diff --git a/src/dynarec/la64/dynarec_la64_f20f.c b/src/dynarec/la64/dynarec_la64_f20f.c
index 774dcbf4..fcb32bdb 100644
--- a/src/dynarec/la64/dynarec_la64_f20f.c
+++ b/src/dynarec/la64/dynarec_la64_f20f.c
@@ -114,7 +114,7 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGD;
             GETEXSD(q0, 0, 0);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 MOVGR2FCSR(FCSR2, xZR); // reset all bits
             }
             d1 = fpu_get_scratch(dyn);
@@ -127,7 +127,7 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
                 ZEROUP(gd);
             }
             if (!rex.w) ZEROUP(gd);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 MOVFCSR2GR(x5, FCSR2); // get back FPSR to check
                 MOV32w(x3, (1 << FR_V) | (1 << FR_O));
                 AND(x5, x5, x3);
@@ -144,7 +144,7 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGD;
             GETEXSD(q0, 0, 0);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 MOVGR2FCSR(FCSR2, xZR); // reset all bits
             }
             d1 = fpu_get_scratch(dyn);
@@ -158,7 +158,7 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
                 ZEROUP(gd);
             }
             x87_restoreround(dyn, ninst, u8);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 MOVFCSR2GR(x5, FCSR2); // get back FPSR to check
                 MOV32w(x3, (1 << FR_V) | (1 << FR_O));
                 AND(x5, x5, x3);
@@ -177,7 +177,7 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             d1 = fpu_get_scratch(dyn);
             GETEXSD(d0, 0, 0);
             FSQRT_D(d1, d0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v1 = fpu_get_scratch(dyn);
                 MOVGR2FR_D(v1, xZR);
                 FCMP_D(fcc0, d0, v1, cLT);
@@ -193,7 +193,7 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEXSD(v1, 0, 0);
             d0 = fpu_get_scratch(dyn);
             FADD_D(d0, v0, v1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FCMP_D(fcc0, v0, v1, cUN);
                 BCNEZ_MARK(fcc0);
                 FCMP_D(fcc1, d0, d0, cOR);
@@ -210,7 +210,7 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEXSD(v1, 0, 0);
             d0 = fpu_get_scratch(dyn);
             FMUL_D(d0, v0, v1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FCMP_D(fcc0, v0, v1, cUN);
                 BCNEZ_MARK(fcc0);
                 FCMP_D(fcc1, d0, d0, cOR);
@@ -236,7 +236,7 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEXSD(v1, 0, 0);
             d0 = fpu_get_scratch(dyn);
             FSUB_D(d0, v0, v1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FCMP_D(fcc0, v0, v1, cUN);
                 BCNEZ_MARK(fcc0);
                 FCMP_D(fcc1, d0, d0, cOR);
@@ -266,7 +266,7 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEXSD(v1, 0, 0);
             d0 = fpu_get_scratch(dyn);
             FDIV_D(d0, v0, v1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FCMP_D(fcc0, v0, v1, cUN);
                 BCNEZ_MARK(fcc0);
                 FCMP_D(fcc1, d0, d0, cOR);
diff --git a/src/dynarec/la64/dynarec_la64_f30f.c b/src/dynarec/la64/dynarec_la64_f30f.c
index de8b847b..03f316cb 100644
--- a/src/dynarec/la64/dynarec_la64_f30f.c
+++ b/src/dynarec/la64/dynarec_la64_f30f.c
@@ -111,7 +111,7 @@ uintptr_t dynarec64_F30F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGD;
             GETEXSS(d0, 0, 0);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 MOVGR2FCSR(FCSR2, xZR); // reset all bits
             }
             d1 = fpu_get_scratch(dyn);
@@ -123,7 +123,7 @@ uintptr_t dynarec64_F30F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
                 MOVFR2GR_S(gd, d1);
                 ZEROUP(gd);
             }
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 MOVFCSR2GR(x5, FCSR2); // get back FPSR to check
                 MOV32w(x3, (1 << FR_V) | (1 << FR_O));
                 AND(x5, x5, x3);
@@ -142,7 +142,7 @@ uintptr_t dynarec64_F30F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGD;
             GETEXSS(d0, 0, 0);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 MOVGR2FCSR(FCSR2, xZR); // reset all bits
             }
             u8 = sse_setround(dyn, ninst, x5, x6);
@@ -156,7 +156,7 @@ uintptr_t dynarec64_F30F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
                 ZEROUP(gd);
             }
             x87_restoreround(dyn, ninst, u8);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 MOVFCSR2GR(x5, FCSR2); // get back FPSR to check
                 MOV32w(x3, (1 << FR_V) | (1 << FR_O));
                 AND(x5, x5, x3);
@@ -210,7 +210,7 @@ uintptr_t dynarec64_F30F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEX(v1, 0, 0);
             GETGX_empty(v0);
             VFTINTRZ_W_S(v0, v1);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 q0 = fpu_get_scratch(dyn);
                 q1 = fpu_get_scratch(dyn);
                 d1 = fpu_get_scratch(dyn);
diff --git a/src/dynarec/la64/dynarec_la64_functions.c b/src/dynarec/la64/dynarec_la64_functions.c
index 5d8b2c77..391eac80 100644
--- a/src/dynarec/la64/dynarec_la64_functions.c
+++ b/src/dynarec/la64/dynarec_la64_functions.c
@@ -332,7 +332,7 @@ static register_mapping_t register_mappings[] = {
 
 void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t rex)
 {
-    if (!box64_dynarec_dump && !box64_dynarec_gdbjit && !box64_dynarec_perf_map) return;
+    if (!BOX64ENV(dynarec_dump) && !BOX64ENV(dynarec_gdbjit) && !BOX64ENV(dynarec_perf_map)) return;
 
     static char buf[512];
     int length = sprintf(buf, "barrier=%d state=%d/%d(%d), %s=%X/%X, use=%X, need=%X/%X, fuse=%d, sm=%d(%d/%d)",
@@ -377,15 +377,15 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r
     if (dyn->insts[ninst].lsx.combined1 || dyn->insts[ninst].lsx.combined2)
         length += sprintf(buf + length, " %s:%d/%d", dyn->insts[ninst].lsx.swapped ? "SWP" : "CMB", dyn->insts[ninst].lsx.combined1, dyn->insts[ninst].lsx.combined2);
 
-    if (box64_dynarec_dump) {
+    if (BOX64ENV(dynarec_dump)) {
         printf_x64_instruction(rex.is32bits ? my_context->dec32 : my_context->dec, &dyn->insts[ninst].x64, name);
         dynarec_log(LOG_NONE, "%s%p: %d emitted opcodes, inst=%d, %s%s\n",
-            (box64_dynarec_dump > 1) ? "\e[32m" : "",
-            (void*)(dyn->native_start + dyn->insts[ninst].address), dyn->insts[ninst].size / 4, ninst, buf, (box64_dynarec_dump > 1) ? "\e[m" : "");
+            (BOX64ENV(dynarec_dump) > 1) ? "\e[32m" : "",
+            (void*)(dyn->native_start + dyn->insts[ninst].address), dyn->insts[ninst].size / 4, ninst, buf, (BOX64ENV(dynarec_dump) > 1) ? "\e[m" : "");
     }
-    if (box64_dynarec_gdbjit) {
+    if (BOX64ENV(dynarec_gdbjit)) {
         static char buf2[512];
-        if (box64_dynarec_gdbjit > 1) {
+        if (BOX64ENV(dynarec_gdbjit) > 1) {
             sprintf(buf2, "; %d: %d opcodes, %s", ninst, dyn->insts[ninst].size / 4, buf);
             dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), buf2);
         }
@@ -398,7 +398,7 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r
         }
         dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), inst_name);
     }
-    if (box64_dynarec_perf_map && box64_dynarec_perf_map_fd != -1) {
+    if (BOX64ENV(dynarec_perf_map) && BOX64ENV(dynarec_perf_map_fd) != -1) {
         writePerfMap(dyn->insts[ninst].x64.addr, dyn->native_start + dyn->insts[ninst].address, dyn->insts[ninst].size / 4, name);
     }
 }
@@ -493,7 +493,7 @@ void fpu_unwind_restore(dynarec_la64_t* dyn, int ninst, lsxcache_t* cache)
 
 void updateNativeFlags(dynarec_la64_t* dyn)
 {
-    if (!box64_dynarec_nativeflags)
+    if (!BOX64ENV(dynarec_nativeflags))
         return;
     for (int i = 1; i < dyn->size; ++i)
         if (dyn->insts[i].nat_flags_fusion) {
diff --git a/src/dynarec/la64/dynarec_la64_helper.c b/src/dynarec/la64/dynarec_la64_helper.c
index 3e622517..af3ab1ea 100644
--- a/src/dynarec/la64/dynarec_la64_helper.c
+++ b/src/dynarec/la64/dynarec_la64_helper.c
@@ -582,7 +582,7 @@ void ret_to_epilog(dynarec_la64_t* dyn, int ninst, rex_t rex)
     POP1z(xRIP);
     MVz(x1, xRIP);
     SMEND();
-    if (box64_dynarec_callret) {
+    if (BOX64ENV(dynarec_callret)) {
         // pop the actual return address from RV64 stack
         LD_D(xRA, xSP, 0);     // native addr
         LD_D(x6, xSP, 8);     // x86 addr
@@ -627,7 +627,7 @@ void retn_to_epilog(dynarec_la64_t* dyn, int ninst, rex_t rex, int n)
     }
     MVz(x1, xRIP);
     SMEND();
-    if (box64_dynarec_callret) {
+    if (BOX64ENV(dynarec_callret)) {
         // pop the actual return address from RV64 stack
         LD_D(xRA, xSP, 0);     // native addr
         LD_D(x6, xSP, 8);     // x86 addr
diff --git a/src/dynarec/la64/dynarec_la64_helper.h b/src/dynarec/la64/dynarec_la64_helper.h
index 38ae926a..a109812e 100644
--- a/src/dynarec/la64/dynarec_la64_helper.h
+++ b/src/dynarec/la64/dynarec_la64_helper.h
@@ -1180,18 +1180,18 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
     B##COND(dyn->insts[ninst].nat_flags_op1, dyn->insts[ninst].nat_flags_op2, val);
 
 #define NOTEST(s1)                                       \
-    if (box64_dynarec_test) {                            \
+    if (BOX64ENV(dynarec_test)) {                        \
         ST_W(xZR, xEmu, offsetof(x64emu_t, test.test));  \
         ST_W(xZR, xEmu, offsetof(x64emu_t, test.clean)); \
     }
 
 #define SKIPTEST(s1)                                     \
-    if (box64_dynarec_test) {                            \
+    if (BOX64ENV(dynarec_test)) {                        \
         ST_W(xZR, xEmu, offsetof(x64emu_t, test.clean)); \
     }
 
 #define GOTEST(s1, s2)                                 \
-    if (box64_dynarec_test) {                          \
+    if (BOX64ENV(dynarec_test)) {                      \
         MOV32w(s2, 1);                                 \
         ST_W(s2, xEmu, offsetof(x64emu_t, test.test)); \
     }
diff --git a/src/dynarec/la64/dynarec_la64_pass0.h b/src/dynarec/la64/dynarec_la64_pass0.h
index a35c9669..aa7ee34e 100644
--- a/src/dynarec/la64/dynarec_la64_pass0.h
+++ b/src/dynarec/la64/dynarec_la64_pass0.h
@@ -12,7 +12,7 @@
     dyn->f.pending = SF_SET
 
 #define READFLAGS_FUSION(A, s1, s2, s3, s4, s5)                                                                 \
-    if (box64_dynarec_nativeflags && ninst > 0 && !dyn->insts[ninst - 1].nat_flags_nofusion) {                  \
+    if (BOX64ENV(dynarec_nativeflags) && ninst > 0 && !dyn->insts[ninst - 1].nat_flags_nofusion) {                  \
         if ((A) == (X_ZF))                                                                                      \
             dyn->insts[ninst].nat_flags_fusion = 1;                                                             \
         else if (dyn->insts[ninst - 1].nat_flags_carry && ((A) == (X_CF) || (A) == (X_CF | X_ZF)))              \
@@ -54,7 +54,7 @@
 #define DEFAULT                                                                                                                                     \
     --dyn->size;                                                                                                                                    \
     *ok = -1;                                                                                                                                       \
-    if (box64_dynarec_log >= LOG_INFO || box64_dynarec_dump || box64_dynarec_missing==1) {                                                          \
+    if (BOX64ENV(dynarec_log) >= LOG_INFO || BOX64ENV(dynarec_dump) || BOX64ENV(dynarec_missing)==1) {                                                          \
         dynarec_log(LOG_NONE, "%p: Dynarec stopped because of %sOpcode %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", \
             (void*)ip, rex.is32bits ? "32bits " : "",                                                                                               \
             PKip(0),                                                                                                                                \
diff --git a/src/dynarec/la64/dynarec_la64_pass3.h b/src/dynarec/la64/dynarec_la64_pass3.h
index 34654f99..193f33be 100644
--- a/src/dynarec/la64/dynarec_la64_pass3.h
+++ b/src/dynarec/la64/dynarec_la64_pass3.h
@@ -5,7 +5,7 @@
     addInst(dyn->instsize, &dyn->insts_size, 0, 0);
 #define EMIT(A)                                                          \
     do {                                                                 \
-        if (box64_dynarec_dump) print_opcode(dyn, ninst, (uint32_t)(A)); \
+        if (BOX64ENV(dynarec_dump)) print_opcode(dyn, ninst, (uint32_t)(A)); \
         if ((uintptr_t)dyn->block < dyn->tablestart)                     \
             *(uint32_t*)(dyn->block) = (uint32_t)(A);                    \
         dyn->block += 4;                                                 \
@@ -14,7 +14,7 @@
     } while (0)
 
 #define MESSAGE(A, ...) \
-    if (box64_dynarec_dump) dynarec_log(LOG_NONE, __VA_ARGS__)
+    if (BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, __VA_ARGS__)
 #define NEW_INST \
     if (ninst) {  \
         addInst(dyn->instsize, &dyn->insts_size, dyn->insts[ninst - 1].x64.size, dyn->insts[ninst - 1].size / 4); \
diff --git a/src/dynarec/rv64/dynarec_rv64_00_3.c b/src/dynarec/rv64/dynarec_rv64_00_3.c
index 357eaddf..0e200145 100644
--- a/src/dynarec/rv64/dynarec_rv64_00_3.c
+++ b/src/dynarec/rv64/dynarec_rv64_00_3.c
@@ -280,7 +280,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
         case 0xC2:
             INST_NAME("RETN");
             // SETFLAGS(X_ALL, SF_SET_NODF);    // Hack, set all flags (to an unknown state...)
-            if (box64_dynarec_safeflags) {
+            if (BOX64ENV(dynarec_safeflags)) {
                 READFLAGS(X_PEND); // lets play safe here too
             }
             fpu_purgecache(dyn, ninst, 1, x1, x2, x3); // using next, even if there no next
@@ -292,7 +292,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
         case 0xC3:
             INST_NAME("RET");
             // SETFLAGS(X_ALL, SF_SET_NODF);    // Hack, set all flags (to an unknown state...)
-            if (box64_dynarec_safeflags) {
+            if (BOX64ENV(dynarec_safeflags)) {
                 READFLAGS(X_PEND); // so instead, force the deferred flags, so it's not too slow, and flags are not lost
             }
             fpu_purgecache(dyn, ninst, 1, x1, x2, x3); // using next, even if there no next
@@ -438,7 +438,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                         x87_purgecache(dyn, ninst, 0, x3, x1, x4);
                     if (tmp < 0 || (tmp & 15) > 1)
                         tmp = 0; // TODO: removed when FP is in place
-                    if ((box64_log < 2 && !cycle_log) && tmp) {
+                    if ((BOX64ENV(log) < 2 && !BOX64ENV(rolling_log)) && tmp) {
                         // GETIP(ip+3+8+8); // read the 0xCC
                         call_n(dyn, ninst, *(void**)(addr + 8), tmp);
                         addr += 8 + 8;
@@ -459,7 +459,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                 }
             } else {
                 INST_NAME("INT 3");
-                if (!box64_ignoreint3) {
+                if (!BOX64ENV(ignoreint3)) {
                     // check if TRAP signal is handled
                     TABLE64(x1, (uintptr_t)my_context);
                     MOV32w(x2, offsetof(box64context_t, signals[SIGTRAP]));
@@ -613,7 +613,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                         BEQ_NEXT(x2, xZR);
                     }
                     SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-                    if (box64_dynarec_safeflags > 1)
+                    if (BOX64ENV(dynarec_safeflags) > 1)
                         MAYSETFLAGS();
                     emit_shl8(dyn, ninst, x1, x2, x5, x4, x6);
                     EBBACK(x5, 0);
@@ -630,7 +630,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                         BEQ_NEXT(x2, xZR);
                     }
                     SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-                    if (box64_dynarec_safeflags > 1)
+                    if (BOX64ENV(dynarec_safeflags) > 1)
                         MAYSETFLAGS();
                     emit_shr8(dyn, ninst, x1, x2, x5, x4, x6);
                     EBBACK(x5, 0);
@@ -647,7 +647,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                         BEQ_NEXT(x2, xZR);
                     }
                     SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-                    if (box64_dynarec_safeflags > 1)
+                    if (BOX64ENV(dynarec_safeflags) > 1)
                         MAYSETFLAGS();
                     emit_sar8(dyn, ninst, x1, x2, x5, x4, x6);
                     EBBACK(x5, 0);
@@ -927,7 +927,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                     MESSAGE(LOG_DUMP, "Native Call to %s (retn=%d)\n", GetNativeName(GetNativeFnc(dyn->insts[ninst].natcall - 1)), dyn->insts[ninst].retn);
                     // calling a native function
                     sse_purge07cache(dyn, ninst, x3);
-                    if ((box64_log < 2 && !cycle_log) && dyn->insts[ninst].natcall) {
+                    if ((BOX64ENV(log) < 2 && !BOX64ENV(rolling_log)) && dyn->insts[ninst].natcall) {
                         // Partially support isSimpleWrapper
                         tmp = isSimpleWrapper(*(wrapper_t*)(dyn->insts[ninst].natcall + 2));
                     } else
@@ -937,7 +937,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                     if (dyn->insts[ninst].natcall && isRetX87Wrapper(*(wrapper_t*)(dyn->insts[ninst].natcall + 2)))
                         // return value will be on the stack, so the stack depth needs to be updated
                         x87_purgecache(dyn, ninst, 0, x3, x1, x4);
-                    if ((box64_log < 2 && !cycle_log) && dyn->insts[ninst].natcall && tmp) {
+                    if ((BOX64ENV(log) < 2 && !BOX64ENV(rolling_log)) && dyn->insts[ninst].natcall && tmp) {
                         // GETIP(ip+3+8+8); // read the 0xCC
                         call_n(dyn, ninst, *(void**)(dyn->insts[ninst].natcall + 2 + 8), tmp);
                         POP1(xRIP); // pop the return address
@@ -970,13 +970,13 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                     }
                     break;
                 default:
-                    if ((box64_dynarec_safeflags > 1) || (ninst && dyn->insts[ninst - 1].x64.set_flags)) {
+                    if ((BOX64ENV(dynarec_safeflags) > 1) || (ninst && dyn->insts[ninst - 1].x64.set_flags)) {
                         READFLAGS(X_PEND); // that's suspicious
                     } else {
                         SETFLAGS(X_ALL, SF_SET_NODF, NAT_FLAGS_NOFUSION); // Hack to set flags to "dont'care" state
                     }
                     // regular call
-                    /*if(box64_dynarec_callret && box64_dynarec_bigblock>1) {
+                    /*if(BOX64ENV(dynarec_callret) && BOX64ENV(dynarec_bigblock)>1) {
                         BARRIER(BARRIER_FULL);
                     } else {
                         BARRIER(BARRIER_FLOAT);
@@ -991,7 +991,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                     }
                     fpu_purgecache(dyn, ninst, 1, x1, x3, x4);
                     PUSH1z(x2);
-                    if (box64_dynarec_callret) {
+                    if (BOX64ENV(dynarec_callret)) {
                         SET_HASCALLRET();
                         // Push actual return address
                         j64 = (dyn->insts) ? (GETMARK - (dyn->native_size)) : 0;
@@ -1011,9 +1011,9 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                         j64 = addr + i32;
                     jump_to_next(dyn, j64, 0, ninst, rex.is32bits);
                     MARK;
-                    if (box64_dynarec_callret && dyn->vector_sew != VECTOR_SEWNA)
+                    if (BOX64ENV(dynarec_callret) && dyn->vector_sew != VECTOR_SEWNA)
                         vector_vsetvli(dyn, ninst, x3, dyn->vector_sew, VECTOR_LMUL1, 1);
-                    if (box64_dynarec_callret && addr >= (dyn->start + dyn->isize)) {
+                    if (BOX64ENV(dynarec_callret) && addr >= (dyn->start + dyn->isize)) {
                         // jumps out of current dynablock...
                         j64 = getJumpTableAddress64(addr);
                         TABLE64(x4, j64);
@@ -1265,7 +1265,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                             CALL(native_div0, -1, 0, 0);
                             LOAD_XEMU_CALL();
                         } else {
-                            if (box64_dynarec_div0) {
+                            if (BOX64ENV(dynarec_div0)) {
                                 BNE_MARK3(ed, xZR);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(x3);
@@ -1293,7 +1293,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                             && *(uint8_t*)(dyn->insts[ninst - 1].x64.addr) == 0x31
                             && *(uint8_t*)(dyn->insts[ninst - 1].x64.addr + 1) == 0xD2) {
                             GETED(0);
-                            if (box64_dynarec_div0) {
+                            if (BOX64ENV(dynarec_div0)) {
                                 BNE_MARK3(ed, xZR);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(x3);
@@ -1308,7 +1308,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                             MV(xRAX, x2);
                         } else {
                             GETEDH(x1, 0); // get edd changed addr, so cannot be called 2 times for same op...
-                            if (box64_dynarec_div0) {
+                            if (BOX64ENV(dynarec_div0)) {
                                 BNE_MARK3(ed, xZR);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(x3);
@@ -1335,7 +1335,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                     SET_DFNONE()
                     if (!rex.w) {
                         GETSED(0);
-                        if (box64_dynarec_div0) {
+                        if (BOX64ENV(dynarec_div0)) {
                             BNE_MARK3(ed, xZR);
                             GETIP_(ip);
                             STORE_XEMU_CALL(x3);
@@ -1358,7 +1358,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                             && *(uint8_t*)(dyn->insts[ninst - 1].x64.addr) == 0x48
                             && *(uint8_t*)(dyn->insts[ninst - 1].x64.addr + 1) == 0x99) {
                             GETED(0);
-                            if (box64_dynarec_div0) {
+                            if (BOX64ENV(dynarec_div0)) {
                                 BNE_MARK3(ed, xZR);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(x3);
@@ -1373,7 +1373,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                             MV(xRAX, x2);
                         } else {
                             GETEDH(x1, 0); // get edd changed addr, so cannot be called 2 times for same op...
-                            if (box64_dynarec_div0) {
+                            if (BOX64ENV(dynarec_div0)) {
                                 BNE_MARK3(ed, xZR);
                                 GETIP_(ip);
                                 STORE_XEMU_CALL(x3);
@@ -1466,13 +1466,13 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                     break;
                 case 2: // CALL Ed
                     INST_NAME("CALL Ed");
-                    PASS2IF ((box64_dynarec_safeflags > 1) || ((ninst && dyn->insts[ninst - 1].x64.set_flags) || ((ninst > 1) && dyn->insts[ninst - 2].x64.set_flags)), 1) {
+                    PASS2IF ((BOX64ENV(dynarec_safeflags) > 1) || ((ninst && dyn->insts[ninst - 1].x64.set_flags) || ((ninst > 1) && dyn->insts[ninst - 2].x64.set_flags)), 1) {
                         READFLAGS(X_PEND); // that's suspicious
                     } else {
                         SETFLAGS(X_ALL, SF_SET_NODF, NAT_FLAGS_NOFUSION); // Hack to put flag in "don't care" state
                     }
                     GETEDz(0);
-                    if (box64_dynarec_callret && box64_dynarec_bigblock > 1) {
+                    if (BOX64ENV(dynarec_callret) && BOX64ENV(dynarec_bigblock) > 1) {
                         BARRIER(BARRIER_FULL);
                     } else {
                         BARRIER(BARRIER_FLOAT);
@@ -1480,7 +1480,7 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                         *ok = 0;
                     }
                     GETIP_(addr);
-                    if (box64_dynarec_callret) {
+                    if (BOX64ENV(dynarec_callret)) {
                         SET_HASCALLRET();
                         j64 = (dyn->insts) ? (GETMARK - (dyn->native_size)) : 0;
                         AUIPC(x4, ((j64 + 0x800) >> 12) & 0xfffff);
@@ -1493,9 +1493,9 @@ uintptr_t dynarec64_00_3(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                     PUSH1z(xRIP);
                     jump_to_next(dyn, 0, ed, ninst, rex.is32bits);
                     MARK;
-                    if (box64_dynarec_callret && dyn->vector_sew != VECTOR_SEWNA)
+                    if (BOX64ENV(dynarec_callret) && dyn->vector_sew != VECTOR_SEWNA)
                         vector_vsetvli(dyn, ninst, x3, dyn->vector_sew, VECTOR_LMUL1, 1);
-                    if (box64_dynarec_callret && addr >= (dyn->start + dyn->isize)) {
+                    if (BOX64ENV(dynarec_callret) && addr >= (dyn->start + dyn->isize)) {
                         // jumps out of current dynablock...
                         j64 = getJumpTableAddress64(addr);
                         TABLE64(x4, j64);
diff --git a/src/dynarec/rv64/dynarec_rv64_0f.c b/src/dynarec/rv64/dynarec_rv64_0f.c
index 16b414bf..b6fc356d 100644
--- a/src/dynarec/rv64/dynarec_rv64_0f.c
+++ b/src/dynarec/rv64/dynarec_rv64_0f.c
@@ -334,12 +334,12 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             GETEX(x2, 0, 4);
             d0 = fpu_get_scratch(dyn);
             for (int i = 0; i < 2; ++i) {
-                if (!box64_dynarec_fastround) {
+                if (!BOX64ENV(dynarec_fastround)) {
                     FSFLAGSI(0); // // reset all bits
                 }
                 FLW(d0, wback, fixedaddress + i * 4);
                 FCVTWS(x1, d0, RD_RTZ);
-                if (!box64_dynarec_fastround) {
+                if (!BOX64ENV(dynarec_fastround)) {
                     FRFLAGS(x5); // get back FPSR to check the IOC bit
                     ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                     BEQ_MARKi(x5, xZR, i);
@@ -357,12 +357,12 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             d0 = fpu_get_scratch(dyn);
             u8 = sse_setround(dyn, ninst, x6, x4);
             for (int i = 0; i < 2; ++i) {
-                if (!box64_dynarec_fastround) {
+                if (!BOX64ENV(dynarec_fastround)) {
                     FSFLAGSI(0); // // reset all bits
                 }
                 FLW(d0, wback, fixedaddress + i * 4);
                 FCVTWS(x1, d0, RD_DYN);
-                if (!box64_dynarec_fastround) {
+                if (!BOX64ENV(dynarec_fastround)) {
                     FRFLAGS(x5); // get back FPSR to check the IOC bit
                     ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                     BEQ_MARKi(x5, xZR, i);
@@ -962,12 +962,12 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             // do accurate computation, because riscv doesn't have rsqrt
             MOV32w(x3, 1);
             FCVTSW(s1, x3, RD_DYN);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FCVTSW(v0, xZR, RD_DYN);
             }
             for (int i = 0; i < 4; ++i) {
                 FLW(s0, wback, fixedaddress + i * 4);
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     FLES(x3, v0, s0); // s0 >= 0.0f?
                     BNEZ(x3, 6 * 4);
                     FEQS(x3, s0, s0); // isnan(s0)?
@@ -1121,7 +1121,7 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             for (int i = 0; i < 4; ++i) {
                 FLW(s0, wback, fixedaddress + i * 4);
                 FLW(s1, gback, gdoffset + i * 4);
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     FEQS(x3, s0, s0);
                     FEQS(x4, s1, s1);
                     AND(x3, x3, x4);
@@ -1160,7 +1160,7 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             for (int i = 0; i < 4; ++i) {
                 FLW(s0, wback, fixedaddress + i * 4);
                 FLW(s1, gback, gdoffset + i * 4);
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     FEQS(x3, s0, s0);
                     FEQS(x4, s1, s1);
                     AND(x3, x3, x4);
@@ -1790,7 +1790,7 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             nextop = F8;
             INST_NAME("SHLD Ed, Gd, CL");
             SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-            if (box64_dynarec_safeflags > 1)
+            if (BOX64ENV(dynarec_safeflags) > 1)
                 MAYSETFLAGS();
             GETGD;
             GETED(0);
@@ -1852,7 +1852,7 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             nextop = F8;
             INST_NAME("SHRD Ed, Gd, CL");
             SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION);
-            if (box64_dynarec_safeflags > 1)
+            if (BOX64ENV(dynarec_safeflags) > 1)
                 MAYSETFLAGS();
             GETGD;
             GETED(0);
@@ -1903,7 +1903,7 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         INST_NAME("LDMXCSR Md");
                         GETED(0);
                         SW(ed, xEmu, offsetof(x64emu_t, mxcsr));
-                        if (box64_sse_flushto0) {
+                        if (BOX64ENV(sse_flushto0)) {
                             // TODO: applyFlushTo0 also needs to add RISC-V support.
                         }
                         break;
diff --git a/src/dynarec/rv64/dynarec_rv64_0f_vector.c b/src/dynarec/rv64/dynarec_rv64_0f_vector.c
index 7a966c0d..342ab55f 100644
--- a/src/dynarec/rv64/dynarec_rv64_0f_vector.c
+++ b/src/dynarec/rv64/dynarec_rv64_0f_vector.c
@@ -325,7 +325,7 @@ uintptr_t dynarec64_0F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip,
             VFSQRT_V(v1, v0, VECTOR_UNMASKED);
             break;
         case 0x52:
-            if (!box64_dynarec_fastround) return 0;
+            if (!BOX64ENV(dynarec_fastround)) return 0;
             INST_NAME("RSQRTPS Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW32, 1);
@@ -445,13 +445,13 @@ uintptr_t dynarec64_0F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip,
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW32, 1);
             GETGX_vector(q0, 1, VECTOR_SEW32);
             GETEX_vector(q1, 0, 0, VECTOR_SEW32);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v0 = fpu_get_scratch(dyn);
                 VMFEQ_VV(VMASK, q0, q0, VECTOR_UNMASKED);
                 VMFEQ_VV(v0, q1, q1, VECTOR_UNMASKED);
             }
             VFMIN_VV(q0, q0, q1, VECTOR_UNMASKED);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMAND_MM(VMASK, v0, VMASK);
                 VXOR_VI(VMASK, VMASK, 0x1F, VECTOR_UNMASKED);
                 VADD_VX(q0, q1, xZR, VECTOR_MASKED);
@@ -472,12 +472,12 @@ uintptr_t dynarec64_0F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip,
             GETGX_vector(q0, 1, VECTOR_SEW32);
             GETEX_vector(q1, 0, 0, VECTOR_SEW32);
             v0 = fpu_get_scratch(dyn);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMFEQ_VV(VMASK, q0, q0, VECTOR_UNMASKED);
                 VMFEQ_VV(v0, q1, q1, VECTOR_UNMASKED);
             }
             VFMAX_VV(q0, q0, q1, VECTOR_UNMASKED);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMAND_MM(VMASK, v0, VMASK);
                 VXOR_VI(VMASK, VMASK, 0x1F, VECTOR_UNMASKED);
                 VADD_VX(q0, q1, xZR, VECTOR_MASKED);
diff --git a/src/dynarec/rv64/dynarec_rv64_66.c b/src/dynarec/rv64/dynarec_rv64_66.c
index 3aac15f0..5fb476d9 100644
--- a/src/dynarec/rv64/dynarec_rv64_66.c
+++ b/src/dynarec/rv64/dynarec_rv64_66.c
@@ -1302,7 +1302,7 @@ uintptr_t dynarec64_66(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     ANDI(x2, xRCX, 0x1f);
                     BEQ_NEXT(x2, xZR);
                     SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-                    if (box64_dynarec_safeflags > 1)
+                    if (BOX64ENV(dynarec_safeflags) > 1)
                         MAYSETFLAGS();
                     GETEW(x1, 0);
                     emit_shr16(dyn, ninst, x1, x2, x5, x4, x6);
@@ -1314,7 +1314,7 @@ uintptr_t dynarec64_66(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     ANDI(x2, xRCX, 0x1f);
                     BEQ_NEXT(x2, xZR);
                     SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-                    if (box64_dynarec_safeflags > 1)
+                    if (BOX64ENV(dynarec_safeflags) > 1)
                         MAYSETFLAGS();
                     GETEW(x1, 0);
                     emit_shl16(dyn, ninst, x1, x2, x5, x4, x6);
@@ -1325,7 +1325,7 @@ uintptr_t dynarec64_66(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     ANDI(x2, xRCX, 0x1f);
                     BEQ_NEXT(x2, xZR);
                     SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION); // some flags are left undefined
-                    if (box64_dynarec_safeflags > 1)
+                    if (BOX64ENV(dynarec_safeflags) > 1)
                         MAYSETFLAGS();
                     GETSEW(x1, 0);
                     emit_sar16(dyn, ninst, x1, x2, x5, x4, x6);
@@ -1401,7 +1401,7 @@ uintptr_t dynarec64_66(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     SLLI(x7, xRDX, 48);
                     SRLI(x7, x7, 32);
                     OR(x2, x2, x7);
-                    if (box64_dynarec_div0) {
+                    if (BOX64ENV(dynarec_div0)) {
                         BNE_MARK3(ed, xZR);
                         GETIP_(ip);
                         STORE_XEMU_CALL(x6);
@@ -1422,7 +1422,7 @@ uintptr_t dynarec64_66(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     SETFLAGS(X_ALL, SF_SET, NAT_FLAGS_NOFUSION);
                     SET_DFNONE();
                     GETSEW(x1, 0);
-                    if (box64_dynarec_div0) {
+                    if (BOX64ENV(dynarec_div0)) {
                         BNE_MARK3(ed, xZR);
                         GETIP_(ip);
                         STORE_XEMU_CALL(x6);
diff --git a/src/dynarec/rv64/dynarec_rv64_660f.c b/src/dynarec/rv64/dynarec_rv64_660f.c
index ac6f5b24..62043219 100644
--- a/src/dynarec/rv64/dynarec_rv64_660f.c
+++ b/src/dynarec/rv64/dynarec_rv64_660f.c
@@ -192,12 +192,12 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEX(x2, 0, 8);
             d0 = fpu_get_scratch(dyn);
             for (int i = 0; i < 2; ++i) {
-                if (!box64_dynarec_fastround) {
+                if (!BOX64ENV(dynarec_fastround)) {
                     FSFLAGSI(0); // // reset all bits
                 }
                 FLD(d0, wback, fixedaddress + i * 8);
                 FCVTWD(x1, d0, RD_RTZ);
-                if (!box64_dynarec_fastround) {
+                if (!BOX64ENV(dynarec_fastround)) {
                     FRFLAGS(x5); // get back FPSR to check the IOC bit
                     ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                     BEQ_MARKi(x5, xZR, i);
@@ -215,12 +215,12 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             d0 = fpu_get_scratch(dyn);
             u8 = sse_setround(dyn, ninst, x4, x5);
             for (int i = 0; i < 2; ++i) {
-                if (!box64_dynarec_fastround) {
+                if (!BOX64ENV(dynarec_fastround)) {
                     FSFLAGSI(0); // // reset all bits
                 }
                 FLD(d0, wback, fixedaddress + i * 8);
                 FCVTWD(x1, d0, RD_DYN);
-                if (!box64_dynarec_fastround) {
+                if (!BOX64ENV(dynarec_fastround)) {
                     FRFLAGS(x5); // get back FPSR to check the IOC bit
                     ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                     BEQ_MARKi(x5, xZR, i);
@@ -320,17 +320,17 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETGX();
             GETEX(x2, 0, 8);
             d0 = fpu_get_scratch(dyn);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 d1 = fpu_get_scratch(dyn);
                 FMVDX(d1, xZR);
             }
             for (int i = 0; i < 2; ++i) {
                 FLD(d0, wback, fixedaddress + i * 8);
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     FLTD(x3, d0, d1);
                 }
                 FSQRTD(d0, d0);
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     BEQ(x3, xZR, 8);
                     FNEGD(d0, d0);
                 }
@@ -371,12 +371,12 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEX(x1, 0, 8);
             GETGX();
             SSE_LOOP_FQ(x3, x4, {
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     FEQD(x3, v0, v0);
                     FEQD(x4, v1, v1);
                 }
                 FADDD(v0, v0, v1);
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     AND(x3, x3, x4);
                     BEQZ(x3, 16);
                     FEQD(x3, v0, v0);
@@ -391,12 +391,12 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEX(x1, 0, 8);
             GETGX();
             SSE_LOOP_FQ(x3, x4, {
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     FEQD(x3, v0, v0);
                     FEQD(x4, v1, v1);
                 }
                 FMULD(v0, v0, v1);
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     AND(x3, x3, x4);
                     BEQZ(x3, 16);
                     FEQD(x3, v0, v0);
@@ -445,12 +445,12 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEX(x1, 0, 8);
             GETGX();
             SSE_LOOP_FQ(x3, x4, {
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     FEQD(x3, v0, v0);
                     FEQD(x4, v1, v1);
                 }
                 FSUBD(v0, v0, v1);
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     AND(x3, x3, x4);
                     BEQZ(x3, 16);
                     FEQD(x3, v0, v0);
@@ -484,12 +484,12 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEX(x1, 0, 8);
             GETGX();
             SSE_LOOP_FQ(x3, x4, {
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     FEQD(x3, v0, v0);
                     FEQD(x4, v1, v1);
                 }
                 FDIVD(v0, v0, v1);
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     AND(x3, x3, x4);
                     BEQZ(x3, 16);
                     FEQD(x3, v0, v0);
@@ -1090,13 +1090,13 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             d1 = fpu_get_scratch(dyn);
             FLD(d0, gback, gdoffset + 0);
             FLD(d1, gback, gdoffset + 8);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FEQD(x3, d0, d0);
                 FEQD(x4, d1, d1);
                 AND(x3, x3, x4);
             }
             FADDD(d0, d0, d1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FEQD(x4, d0, d0);
                 BEQZ(x3, 12);
                 BNEZ(x4, 8);
@@ -1109,13 +1109,13 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                 GETEX(x2, 0, 8);
                 FLD(d0, wback, fixedaddress + 0);
                 FLD(d1, wback, fixedaddress + 8);
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     FEQD(x3, d0, d0);
                     FEQD(x4, d1, d1);
                     AND(x3, x3, x4);
                 }
                 FADDD(d0, d0, d1);
-                if (!box64_dynarec_fastnan) {
+                if (!BOX64ENV(dynarec_fastnan)) {
                     FEQD(x4, d0, d0);
                     BEQZ(x3, 12);
                     BNEZ(x4, 8);
@@ -1921,11 +1921,11 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             v1 = fpu_get_scratch(dyn);
             FLD(v0, wback, fixedaddress + 0);
             FLD(v1, wback, fixedaddress + 8);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FSFLAGSI(0); // // reset all bits
             }
             FCVTWD(x3, v0, RD_RTZ);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FRFLAGS(x5); // get back FPSR to check the IOC bit
                 ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                 BEQ_MARK(x5, xZR);
@@ -1934,7 +1934,7 @@ uintptr_t dynarec64_660F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
                 FSFLAGSI(0); // // reset all bits
             }
             FCVTWD(x4, v1, RD_RTZ);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FRFLAGS(x5); // get back FPSR to check the IOC bit
                 ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                 BEQ_MARK2(x5, xZR);
diff --git a/src/dynarec/rv64/dynarec_rv64_660f_vector.c b/src/dynarec/rv64/dynarec_rv64_660f_vector.c
index 8eba1e38..41960c73 100644
--- a/src/dynarec/rv64/dynarec_rv64_660f_vector.c
+++ b/src/dynarec/rv64/dynarec_rv64_660f_vector.c
@@ -920,13 +920,13 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW64, 1);
             GETGX_vector(q0, 1, VECTOR_SEW64);
             GETEX_vector(q1, 0, 0, VECTOR_SEW64);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v0 = fpu_get_scratch(dyn);
                 VXOR_VV(v0, v0, v0, VECTOR_UNMASKED);
                 VMFLT_VV(VMASK, q1, v0, VECTOR_UNMASKED);
             }
             VFSQRT_V(q0, q1, VECTOR_UNMASKED);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VFSGNJN_VV(q0, q0, q0, VECTOR_MASKED);
             }
             break;
@@ -976,13 +976,13 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW64, 1);
             GETGX_vector(q0, 1, VECTOR_SEW64);
             GETEX_vector(q1, 0, 0, VECTOR_SEW64);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v0 = fpu_get_scratch(dyn);
                 VMFEQ_VV(VMASK, q0, q0, VECTOR_UNMASKED);
                 VMFEQ_VV(v0, q1, q1, VECTOR_UNMASKED);
             }
             VFADD_VV(q0, q0, q1, VECTOR_UNMASKED);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMAND_MM(VMASK, v0, VMASK);
                 VMFEQ_VV(v0, q0, q0, VECTOR_UNMASKED);
                 VXOR_VI(v0, v0, 0x1F, VECTOR_UNMASKED);
@@ -996,13 +996,13 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW64, 1);
             GETGX_vector(q0, 1, VECTOR_SEW64);
             GETEX_vector(q1, 0, 0, VECTOR_SEW64);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v0 = fpu_get_scratch(dyn);
                 VMFEQ_VV(VMASK, q0, q0, VECTOR_UNMASKED);
                 VMFEQ_VV(v0, q1, q1, VECTOR_UNMASKED);
             }
             VFMUL_VV(q0, q0, q1, VECTOR_UNMASKED);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMAND_MM(VMASK, v0, VMASK);
                 VMFEQ_VV(v0, q0, q0, VECTOR_UNMASKED);
                 VXOR_VI(v0, v0, 0x1F, VECTOR_UNMASKED);
@@ -1031,7 +1031,7 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             VMV_S_X(v0, x4);
             break;
         case 0x5B:
-            if (!box64_dynarec_fastround) return 0;
+            if (!BOX64ENV(dynarec_fastround)) return 0;
             INST_NAME("CVTPS2DQ Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW32, 1);
@@ -1047,13 +1047,13 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW64, 1);
             GETGX_vector(q0, 1, VECTOR_SEW64);
             GETEX_vector(q1, 0, 0, VECTOR_SEW64);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v0 = fpu_get_scratch(dyn);
                 VMFEQ_VV(VMASK, q0, q0, VECTOR_UNMASKED);
                 VMFEQ_VV(v0, q1, q1, VECTOR_UNMASKED);
             }
             VFSUB_VV(q0, q0, q1, VECTOR_UNMASKED);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMAND_MM(VMASK, v0, VMASK);
                 VMFEQ_VV(v0, q0, q0, VECTOR_UNMASKED);
                 VXOR_VI(v0, v0, 0x1F, VECTOR_UNMASKED);
@@ -1068,12 +1068,12 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             GETGX_vector(q0, 1, VECTOR_SEW64);
             GETEX_vector(q1, 0, 0, VECTOR_SEW64);
             v0 = fpu_get_scratch(dyn);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMFEQ_VV(VMASK, q0, q0, VECTOR_UNMASKED);
                 VMFEQ_VV(v0, q1, q1, VECTOR_UNMASKED);
             }
             VFMIN_VV(q0, q0, q1, VECTOR_UNMASKED);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMAND_MM(VMASK, v0, VMASK);
                 VXOR_VI(VMASK, VMASK, 0x1F, VECTOR_UNMASKED);
                 VADD_VX(q0, q1, xZR, VECTOR_MASKED);
@@ -1085,13 +1085,13 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW64, 1);
             GETGX_vector(q0, 1, VECTOR_SEW64);
             GETEX_vector(q1, 0, 0, VECTOR_SEW64);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v0 = fpu_get_scratch(dyn);
                 VMFEQ_VV(VMASK, q0, q0, VECTOR_UNMASKED);
                 VMFEQ_VV(v0, q1, q1, VECTOR_UNMASKED);
             }
             VFDIV_VV(q0, q0, q1, VECTOR_UNMASKED);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMAND_MM(VMASK, v0, VMASK);
                 VMFEQ_VV(v0, q0, q0, VECTOR_UNMASKED);
                 VXOR_VI(v0, v0, 0x1F, VECTOR_UNMASKED);
@@ -1106,12 +1106,12 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             GETGX_vector(q0, 1, VECTOR_SEW64);
             GETEX_vector(q1, 0, 0, VECTOR_SEW64);
             v0 = fpu_get_scratch(dyn);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMFEQ_VV(VMASK, q0, q0, VECTOR_UNMASKED);
                 VMFEQ_VV(v0, q1, q1, VECTOR_UNMASKED);
             }
             VFMAX_VV(q0, q0, q1, VECTOR_UNMASKED);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMAND_MM(VMASK, v0, VMASK);
                 VXOR_VI(VMASK, VMASK, 0x1F, VECTOR_UNMASKED);
                 VADD_VX(q0, q1, xZR, VECTOR_MASKED);
@@ -1619,13 +1619,13 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             VXOR_VI(VMASK, VMASK, 0x1F, VECTOR_UNMASKED);
             VCOMPRESS_VM(d1, v0, VMASK);
             vector_vsetvli(dyn, ninst, x1, VECTOR_SEW64, VECTOR_LMUL1, 1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMFEQ_VV(v0, d0, d0, VECTOR_UNMASKED);
                 VMFEQ_VV(v1, d1, d1, VECTOR_UNMASKED);
                 VMAND_MM(v0, v0, v1);
             }
             VFADD_VV(q0, d0, d1, VECTOR_UNMASKED);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 VMFEQ_VV(v1, q0, q0, VECTOR_UNMASKED);
                 VMANDN_MM(VMASK, v0, v1);
                 VFSGNJN_VV(q0, q0, q0, VECTOR_MASKED);
@@ -2010,7 +2010,7 @@ uintptr_t dynarec64_660F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             VMULH_VV(q0, q0, q1, VECTOR_UNMASKED);
             break;
         case 0xE6:
-            if (!box64_dynarec_fastround) return 0;
+            if (!BOX64ENV(dynarec_fastround)) return 0;
             INST_NAME("CVTTPD2DQ Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW32, 1);
diff --git a/src/dynarec/rv64/dynarec_rv64_avx.c b/src/dynarec/rv64/dynarec_rv64_avx.c
index f8b1ce89..3008fde5 100644
--- a/src/dynarec/rv64/dynarec_rv64_avx.c
+++ b/src/dynarec/rv64/dynarec_rv64_avx.c
@@ -56,7 +56,7 @@ uintptr_t dynarec64_AVX(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int n
         DEFAULT;
     }
 
-    if ((*ok == -1) && (box64_dynarec_log >= LOG_INFO || box64_dynarec_dump || box64_dynarec_missing == 1)) {
+    if ((*ok == -1) && (BOX64ENV(dynarec_log) >= LOG_INFO || BOX64ENV(dynarec_dump) || BOX64ENV(dynarec_missing) == 1)) {
         dynarec_log(LOG_NONE, "Dynarec unimplemented AVX opcode size %d prefix %s map %s opcode %02X ", 128 << vex.l, avx_prefix_string(vex.p), avx_map_string(vex.m), opcode);
     }
     return addr;
diff --git a/src/dynarec/rv64/dynarec_rv64_d9.c b/src/dynarec/rv64/dynarec_rv64_d9.c
index 4ea79815..02cf39a5 100644
--- a/src/dynarec/rv64/dynarec_rv64_d9.c
+++ b/src/dynarec/rv64/dynarec_rv64_d9.c
@@ -460,7 +460,7 @@ uintptr_t dynarec64_D9(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             switch ((nextop >> 3) & 7) {
                 case 0:
                     INST_NAME("FLD ST0, float[ED]");
-                    X87_PUSH_OR_FAIL(v1, dyn, ninst, x1, box64_dynarec_x87double ? EXT_CACHE_ST_D : EXT_CACHE_ST_F);
+                    X87_PUSH_OR_FAIL(v1, dyn, ninst, x1, BOX64ENV(dynarec_x87double) ? EXT_CACHE_ST_D : EXT_CACHE_ST_F);
                     addr = geted(dyn, addr, ninst, nextop, &ed, x2, x1, &fixedaddress, rex, NULL, 1, 0);
                     FLW(v1, ed, fixedaddress);
                     if (!ST_IS_F(0)) {
diff --git a/src/dynarec/rv64/dynarec_rv64_db.c b/src/dynarec/rv64/dynarec_rv64_db.c
index 6943eac7..9b58410d 100644
--- a/src/dynarec/rv64/dynarec_rv64_db.c
+++ b/src/dynarec/rv64/dynarec_rv64_db.c
@@ -201,11 +201,11 @@ uintptr_t dynarec64_DB(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     INST_NAME("FISTTP Ed, ST0");
                     v1 = x87_get_st(dyn, ninst, x1, x2, 0, EXT_CACHE_ST_D);
                     addr = geted(dyn, addr, ninst, nextop, &wback, x3, x4, &fixedaddress, rex, NULL, 1, 0);
-                    if (!box64_dynarec_fastround) {
+                    if (!BOX64ENV(dynarec_fastround)) {
                         FSFLAGSI(0); // reset all bits
                     }
                     FCVTWD(x4, v1, RD_RTZ);
-                    if (!box64_dynarec_fastround) {
+                    if (!BOX64ENV(dynarec_fastround)) {
                         FRFLAGS(x5); // get back FPSR to check the IOC bit
                         ANDI(x5, x5, 1 << FR_NV);
                         BEQZ_MARK(x5);
@@ -225,12 +225,12 @@ uintptr_t dynarec64_DB(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     u8 = x87_setround(dyn, ninst, x1, x2);
                     addr = geted(dyn, addr, ninst, nextop, &wback, x2, x3, &fixedaddress, rex, NULL, 1, 0);
                     v2 = fpu_get_scratch(dyn);
-                    if (!box64_dynarec_fastround) {
+                    if (!BOX64ENV(dynarec_fastround)) {
                         FSFLAGSI(0); // reset all bits
                     }
                     FCVTWD(x4, v1, RD_DYN);
                     x87_restoreround(dyn, ninst, u8);
-                    if (!box64_dynarec_fastround) {
+                    if (!BOX64ENV(dynarec_fastround)) {
                         FRFLAGS(x5); // get back FPSR to check the IOC bit
                         ANDI(x5, x5, 1 << FR_NV);
                         BEQ_MARK2(x5, xZR);
@@ -260,7 +260,7 @@ uintptr_t dynarec64_DB(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         SD(x5, ed, fixedaddress + 0);
                         SH(x6, ed, fixedaddress + 8);
                     } else {
-                        if (box64_x87_no80bits) {
+                        if (BOX64ENV(x87_no80bits)) {
                             X87_PUSH_OR_FAIL(v1, dyn, ninst, x1, EXT_CACHE_ST_D);
                             FLD(v1, ed, fixedaddress);
                         } else {
@@ -274,7 +274,7 @@ uintptr_t dynarec64_DB(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     break;
                 case 7:
                     INST_NAME("FSTP tbyte");
-                    if (box64_x87_no80bits) {
+                    if (BOX64ENV(x87_no80bits)) {
                         v1 = x87_get_st(dyn, ninst, x1, x2, 0, EXT_CACHE_ST_D);
                         addr = geted(dyn, addr, ninst, nextop, &wback, x2, x1, &fixedaddress, rex, NULL, 1, 0);
                         FSD(v1, wback, fixedaddress);
diff --git a/src/dynarec/rv64/dynarec_rv64_dd.c b/src/dynarec/rv64/dynarec_rv64_dd.c
index 2d2c22d4..06e2ea98 100644
--- a/src/dynarec/rv64/dynarec_rv64_dd.c
+++ b/src/dynarec/rv64/dynarec_rv64_dd.c
@@ -169,11 +169,11 @@ uintptr_t dynarec64_DD(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     if (ST_IS_I64(0)) {
                         FSD(v1, wback, fixedaddress);
                     } else {
-                        if (!box64_dynarec_fastround) {
+                        if (!BOX64ENV(dynarec_fastround)) {
                             FSFLAGSI(0); // reset all bits
                         }
                         FCVTLD(x4, v1, RD_RTZ);
-                        if (!box64_dynarec_fastround) {
+                        if (!BOX64ENV(dynarec_fastround)) {
                             FRFLAGS(x5); // get back FPSR to check the IOC bit
                             ANDI(x5, x5, 1 << FR_NV);
                             BEQZ_MARK(x5);
diff --git a/src/dynarec/rv64/dynarec_rv64_df.c b/src/dynarec/rv64/dynarec_rv64_df.c
index 119a2910..9d277713 100644
--- a/src/dynarec/rv64/dynarec_rv64_df.c
+++ b/src/dynarec/rv64/dynarec_rv64_df.c
@@ -135,7 +135,7 @@ uintptr_t dynarec64_DF(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     INST_NAME("FISTTP Ew, ST0");
                     v1 = x87_get_st(dyn, ninst, x1, x2, 0, EXT_CACHE_ST_F);
                     addr = geted(dyn, addr, ninst, nextop, &wback, x3, x4, &fixedaddress, rex, NULL, 1, 0);
-                    if (!box64_dynarec_fastround) {
+                    if (!BOX64ENV(dynarec_fastround)) {
                         FSFLAGSI(0); // reset all bits
                     }
                     if (ST_IS_F(0)) {
@@ -143,7 +143,7 @@ uintptr_t dynarec64_DF(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     } else {
                         FCVTWD(x4, v1, RD_RTZ);
                     }
-                    if (!box64_dynarec_fastround) {
+                    if (!BOX64ENV(dynarec_fastround)) {
                         FRFLAGS(x5); // get back FPSR to check the IOC bit
                         ANDI(x5, x5, 1 << FR_NV);
                         BNEZ_MARK(x5);
@@ -162,7 +162,7 @@ uintptr_t dynarec64_DF(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     v1 = x87_get_st(dyn, ninst, x1, x2, 0, EXT_CACHE_ST_F);
                     u8 = x87_setround(dyn, ninst, x1, x2);
                     addr = geted(dyn, addr, ninst, nextop, &wback, x2, x3, &fixedaddress, rex, NULL, 1, 0);
-                    if (!box64_dynarec_fastround) {
+                    if (!BOX64ENV(dynarec_fastround)) {
                         FSFLAGSI(0); // reset all bits
                     }
                     if (ST_IS_F(0)) {
@@ -171,7 +171,7 @@ uintptr_t dynarec64_DF(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         FCVTWD(x4, v1, RD_DYN);
                     }
                     x87_restoreround(dyn, ninst, u8);
-                    if (!box64_dynarec_fastround) {
+                    if (!BOX64ENV(dynarec_fastround)) {
                         FRFLAGS(x5); // get back FPSR to check the IOC bit
                         ANDI(x5, x5, 1 << FR_NV);
                         BNEZ_MARK(x5);
@@ -189,7 +189,7 @@ uintptr_t dynarec64_DF(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     v1 = x87_get_st(dyn, ninst, x1, x2, 0, EXT_CACHE_ST_F);
                     u8 = x87_setround(dyn, ninst, x1, x2);
                     addr = geted(dyn, addr, ninst, nextop, &wback, x2, x3, &fixedaddress, rex, NULL, 1, 0);
-                    if (!box64_dynarec_fastround) {
+                    if (!BOX64ENV(dynarec_fastround)) {
                         FSFLAGSI(0); // reset all bits
                     }
                     if (ST_IS_F(0)) {
@@ -198,7 +198,7 @@ uintptr_t dynarec64_DF(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                         FCVTWD(x4, v1, RD_DYN);
                     }
                     x87_restoreround(dyn, ninst, u8);
-                    if (!box64_dynarec_fastround) {
+                    if (!BOX64ENV(dynarec_fastround)) {
                         FRFLAGS(x5); // get back FPSR to check the IOC bit
                         ANDI(x5, x5, 1 << FR_NV);
                         BNEZ_MARK(x5);
@@ -288,11 +288,11 @@ uintptr_t dynarec64_DF(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                             MARK;
                         }
 
-                        if (!box64_dynarec_fastround) {
+                        if (!BOX64ENV(dynarec_fastround)) {
                             FSFLAGSI(0); // reset all bits
                         }
                         FCVTLD(x4, v1, RD_DYN);
-                        if (!box64_dynarec_fastround) {
+                        if (!BOX64ENV(dynarec_fastround)) {
                             FRFLAGS(x5); // get back FPSR to check the IOC bit
                             ANDI(x5, x5, 1 << FR_NV);
                             BEQ_MARK2(x5, xZR);
diff --git a/src/dynarec/rv64/dynarec_rv64_f20f.c b/src/dynarec/rv64/dynarec_rv64_f20f.c
index 3fbac305..6692e3ce 100644
--- a/src/dynarec/rv64/dynarec_rv64_f20f.c
+++ b/src/dynarec/rv64/dynarec_rv64_f20f.c
@@ -105,12 +105,12 @@ uintptr_t dynarec64_F20F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGD;
             GETEXSD(v0, 0);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FSFLAGSI(0); // reset all bits
             }
             FCVTLDxw(gd, v0, RD_RTZ);
             if (!rex.w) ZEROUP(gd);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FRFLAGS(x5); // get back FPSR to check the IOC bit
                 ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                 CBZ_NEXT(x5);
@@ -126,14 +126,14 @@ uintptr_t dynarec64_F20F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGD;
             GETEXSD(v0, 0);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FSFLAGSI(0); // // reset all bits
             }
             u8 = sse_setround(dyn, ninst, x2, x3);
             FCVTLDxw(gd, v0, RD_DYN);
             if (!rex.w) ZEROUP(gd);
             x87_restoreround(dyn, ninst, u8);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FRFLAGS(x5); // get back FPSR to check the IOC bit
                 ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                 CBZ_NEXT(x5);
@@ -189,13 +189,13 @@ uintptr_t dynarec64_F20F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETEXSD(d0, 0);
             GETGXSD_empty(d1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 v0 = fpu_get_scratch(dyn); // need a scratch in case d0 == d1
                 FMVDX(v0, xZR);
                 FLTD(x3, d0, v0);
             }
             FSQRTD(d1, d0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 BEQ(x3, xZR, 8);
                 FNEGD(d1, d1);
             }
@@ -205,12 +205,12 @@ uintptr_t dynarec64_F20F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGXSD(v0);
             GETEXSD(v1, 0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FEQD(x3, v0, v0);
                 FEQD(x4, v1, v1);
             }
             FADDD(v0, v0, v1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 AND(x3, x3, x4);
                 BNEZ_MARK(x3);
                 CBNZ_NEXT(x4);
@@ -227,12 +227,12 @@ uintptr_t dynarec64_F20F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGXSD(v0);
             GETEXSD(v1, 0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FEQD(x3, v0, v0);
                 FEQD(x4, v1, v1);
             }
             FMULD(v0, v0, v1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 AND(x3, x3, x4);
                 BNEZ_MARK(x3);
                 CBNZ_NEXT(x4);
@@ -262,12 +262,12 @@ uintptr_t dynarec64_F20F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGXSD(v0);
             GETEXSD(v1, 0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FEQD(x3, v0, v0);
                 FEQD(x4, v1, v1);
             }
             FSUBD(v0, v0, v1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 AND(x3, x3, x4);
                 BNEZ_MARK(x3);
                 CBNZ_NEXT(x4);
@@ -299,12 +299,12 @@ uintptr_t dynarec64_F20F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGXSD(v0);
             GETEXSD(v1, 0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FEQD(x3, v0, v0);
                 FEQD(x4, v1, v1);
             }
             FDIVD(v0, v0, v1);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 AND(x3, x3, x4);
                 BNEZ_MARK(x3);
                 CBNZ_NEXT(x4);
diff --git a/src/dynarec/rv64/dynarec_rv64_f20f_vector.c b/src/dynarec/rv64/dynarec_rv64_f20f_vector.c
index 34646907..b49cf50a 100644
--- a/src/dynarec/rv64/dynarec_rv64_f20f_vector.c
+++ b/src/dynarec/rv64/dynarec_rv64_f20f_vector.c
@@ -150,7 +150,7 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
                 LD(x4, ed, fixedaddress);
                 VMV_S_X(v0, x4);
             }
-            if (box64_dynarec_fastround) {
+            if (BOX64ENV(dynarec_fastround)) {
                 VFMV_F_S(v0, v0);
                 FCVTLDxw(gd, v0, RD_RTZ);
                 if (!rex.w) ZEROUP(gd);
@@ -183,7 +183,7 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
                 LD(x4, ed, fixedaddress);
                 VMV_S_X(v0, x4);
             }
-            if (box64_dynarec_fastround) {
+            if (BOX64ENV(dynarec_fastround)) {
                 VFMV_F_S(v0, v0);
                 u8 = sse_setround(dyn, ninst, x2, x3);
                 FCVTLDxw(gd, v0, RD_DYN);
@@ -223,7 +223,7 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
                 LD(x4, ed, fixedaddress);
                 VMV_S_X(v1, x4);
             }
-            if (box64_dynarec_fastnan) {
+            if (BOX64ENV(dynarec_fastnan)) {
                 VECTOR_LOAD_VMASK(0b01, x4, 1);
                 VFSQRT_V(v0, v1, VECTOR_MASKED);
             } else {
@@ -243,7 +243,7 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             }
             break;
         case 0x58:
-            if (!box64_dynarec_fastnan) return 0;
+            if (!BOX64ENV(dynarec_fastnan)) return 0;
             INST_NAME("ADDSD Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW64, 1);
@@ -262,7 +262,7 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             VFADD_VV(v0, v0, v1, VECTOR_MASKED);
             break;
         case 0x59:
-            if (!box64_dynarec_fastnan) return 0;
+            if (!BOX64ENV(dynarec_fastnan)) return 0;
             INST_NAME("MULSD Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW64, 1);
@@ -322,7 +322,7 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             }
             break;
         case 0x5C:
-            if (!box64_dynarec_fastnan) return 0;
+            if (!BOX64ENV(dynarec_fastnan)) return 0;
             INST_NAME("SUBSD Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW64, 1);
@@ -355,7 +355,7 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
                 VMV_S_X(v1, x4);
                 GETGX_vector(v0, 1, VECTOR_SEW64);
             }
-            if (box64_dynarec_fastnan) {
+            if (BOX64ENV(dynarec_fastnan)) {
                 VECTOR_LOAD_VMASK(0b01, x4, 1);
                 VFMIN_VV(v0, v0, v1, VECTOR_MASKED);
             } else {
@@ -382,7 +382,7 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             }
             break;
         case 0x5E:
-            if (!box64_dynarec_fastnan) return 0;
+            if (!BOX64ENV(dynarec_fastnan)) return 0;
             INST_NAME("DIVSD Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW64, 1);
@@ -415,7 +415,7 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
                 VMV_S_X(v1, x4);
                 GETGX_vector(v0, 1, VECTOR_SEW64);
             }
-            if (box64_dynarec_fastnan) {
+            if (BOX64ENV(dynarec_fastnan)) {
                 VECTOR_LOAD_VMASK(0b01, x4, 1);
                 VFMAX_VV(v0, v0, v1, VECTOR_MASKED);
             } else {
@@ -553,7 +553,7 @@ uintptr_t dynarec64_F20F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             }
             break;
         case 0xE6:
-            if (!box64_dynarec_fastround) return 0;
+            if (!BOX64ENV(dynarec_fastround)) return 0;
             INST_NAME("CVTPD2DQ Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW64, 1);
diff --git a/src/dynarec/rv64/dynarec_rv64_f30f.c b/src/dynarec/rv64/dynarec_rv64_f30f.c
index 58daf454..b4645b41 100644
--- a/src/dynarec/rv64/dynarec_rv64_f30f.c
+++ b/src/dynarec/rv64/dynarec_rv64_f30f.c
@@ -134,13 +134,13 @@ uintptr_t dynarec64_F30F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGD;
             GETEXSS(d0, 0);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FSFLAGSI(0); // // reset all bits
             }
             FCVTSxw(gd, d0, RD_RTZ);
             if (!rex.w)
                 ZEROUP(gd);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FRFLAGS(x5); // get back FPSR to check the IOC bit
                 ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                 CBZ_NEXT(x5);
@@ -156,7 +156,7 @@ uintptr_t dynarec64_F30F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGD;
             GETEXSS(d0, 0);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FSFLAGSI(0); // // reset all bits
             }
             u8 = sse_setround(dyn, ninst, x5, x6);
@@ -164,7 +164,7 @@ uintptr_t dynarec64_F30F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             x87_restoreround(dyn, ninst, u8);
             if (!rex.w)
                 ZEROUP(gd);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FRFLAGS(x5); // get back FPSR to check the IOC bit
                 ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                 CBZ_NEXT(x5);
@@ -209,12 +209,12 @@ uintptr_t dynarec64_F30F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGXSS(v0);
             GETEXSS(d0, 0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FEQS(x3, v0, v0);
                 FEQS(x4, d0, d0);
             }
             FADDS(v0, v0, d0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 AND(x3, x3, x4);
                 BNEZ_MARK(x3);
                 CBNZ_NEXT(x4);
@@ -227,12 +227,12 @@ uintptr_t dynarec64_F30F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGXSS(v0);
             GETEXSS(d0, 0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FEQS(x3, v0, v0);
                 FEQS(x4, d0, d0);
             }
             FMULS(v0, v0, d0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 AND(x3, x3, x4);
                 BNEZ_MARK(x3);
                 CBNZ_NEXT(x4);
@@ -264,12 +264,12 @@ uintptr_t dynarec64_F30F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             GETEX(x2, 0, 12);
             v0 = fpu_get_scratch(dyn);
             for (int i = 0; i < 4; ++i) {
-                if (!box64_dynarec_fastround) {
+                if (!BOX64ENV(dynarec_fastround)) {
                     FSFLAGSI(0); // reset all bits
                 }
                 FLW(v0, wback, fixedaddress + i * 4);
                 FCVTWS(x3, v0, RD_RTZ);
-                if (!box64_dynarec_fastround) {
+                if (!BOX64ENV(dynarec_fastround)) {
                     FRFLAGS(x5); // get back FPSR to check the IOC bit
                     ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                     BEQZ(x5, 8);
@@ -283,12 +283,12 @@ uintptr_t dynarec64_F30F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGXSS(v0);
             GETEXSS(d0, 0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FEQS(x3, v0, v0);
                 FEQS(x4, d0, d0);
             }
             FSUBS(v0, v0, d0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 AND(x3, x3, x4);
                 BNEZ_MARK(x3);
                 CBNZ_NEXT(x4);
@@ -316,12 +316,12 @@ uintptr_t dynarec64_F30F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int
             nextop = F8;
             GETGXSS(v0);
             GETEXSS(d0, 0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 FEQS(x3, v0, v0);
                 FEQS(x4, d0, d0);
             }
             FDIVS(v0, v0, d0);
-            if (!box64_dynarec_fastnan) {
+            if (!BOX64ENV(dynarec_fastnan)) {
                 AND(x3, x3, x4);
                 BNEZ_MARK(x3);
                 CBNZ_NEXT(x4);
diff --git a/src/dynarec/rv64/dynarec_rv64_f30f_vector.c b/src/dynarec/rv64/dynarec_rv64_f30f_vector.c
index 7cd82dfa..a167c16e 100644
--- a/src/dynarec/rv64/dynarec_rv64_f30f_vector.c
+++ b/src/dynarec/rv64/dynarec_rv64_f30f_vector.c
@@ -173,10 +173,10 @@ uintptr_t dynarec64_F30F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             } else {
                 GETEXSS(d0, 0);
             }
-            if (!box64_dynarec_fastround) FSFLAGSI(0);
+            if (!BOX64ENV(dynarec_fastround)) FSFLAGSI(0);
             FCVTSxw(gd, d0, RD_RTZ);
             if (!rex.w) ZEROUP(gd);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FRFLAGS(x5);
                 ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                 CBZ_NEXT(x5);
@@ -199,12 +199,12 @@ uintptr_t dynarec64_F30F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             } else {
                 GETEXSS(d0, 0);
             }
-            if (!box64_dynarec_fastround) FSFLAGSI(0);
+            if (!BOX64ENV(dynarec_fastround)) FSFLAGSI(0);
             u8 = sse_setround(dyn, ninst, x5, x6);
             FCVTSxw(gd, d0, RD_DYN);
             x87_restoreround(dyn, ninst, u8);
             if (!rex.w) ZEROUP(gd);
-            if (!box64_dynarec_fastround) {
+            if (!BOX64ENV(dynarec_fastround)) {
                 FRFLAGS(x5);
                 ANDI(x5, x5, (1 << FR_NV) | (1 << FR_OF));
                 CBZ_NEXT(x5);
@@ -277,7 +277,7 @@ uintptr_t dynarec64_F30F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             VFRDIV_VF(v0, v1, v1, VECTOR_MASKED);
             break;
         case 0x58:
-            if (!box64_dynarec_fastnan) return 0;
+            if (!BOX64ENV(dynarec_fastnan)) return 0;
             INST_NAME("ADDSS Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW32, 1);
@@ -296,7 +296,7 @@ uintptr_t dynarec64_F30F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             VFADD_VV(v0, v0, v1, VECTOR_MASKED);
             break;
         case 0x59:
-            if (!box64_dynarec_fastnan) return 0;
+            if (!BOX64ENV(dynarec_fastnan)) return 0;
             INST_NAME("MULSS Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW32, 1);
@@ -341,7 +341,7 @@ uintptr_t dynarec64_F30F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             }
             break;
         case 0x5B:
-            if (!box64_dynarec_fastround) return 0;
+            if (!BOX64ENV(dynarec_fastround)) return 0;
             INST_NAME("CVTTPS2DQ Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW32, 1);
@@ -357,7 +357,7 @@ uintptr_t dynarec64_F30F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             }
             break;
         case 0x5C:
-            if (!box64_dynarec_fastnan) return 0;
+            if (!BOX64ENV(dynarec_fastnan)) return 0;
             INST_NAME("SUBSS Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW32, 1);
@@ -390,7 +390,7 @@ uintptr_t dynarec64_F30F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
                 VMV_S_X(v1, x4);
                 GETGX_vector(v0, 1, VECTOR_SEW32);
             }
-            if (box64_dynarec_fastnan) {
+            if (BOX64ENV(dynarec_fastnan)) {
                 VECTOR_LOAD_VMASK(0b0001, x4, 1);
                 VFMIN_VV(v0, v0, v1, VECTOR_MASKED);
             } else {
@@ -417,7 +417,7 @@ uintptr_t dynarec64_F30F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
             }
             break;
         case 0x5E:
-            if (!box64_dynarec_fastnan) return 0;
+            if (!BOX64ENV(dynarec_fastnan)) return 0;
             INST_NAME("DIVSS Gx, Ex");
             nextop = F8;
             SET_ELEMENT_WIDTH(x1, VECTOR_SEW32, 1);
@@ -450,7 +450,7 @@ uintptr_t dynarec64_F30F_vector(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t i
                 VMV_S_X(v1, x4);
                 GETGX_vector(v0, 1, VECTOR_SEW32);
             }
-            if (box64_dynarec_fastnan) {
+            if (BOX64ENV(dynarec_fastnan)) {
                 VECTOR_LOAD_VMASK(0b0001, x4, 1);
                 VFMAX_VV(v0, v0, v1, VECTOR_MASKED);
             } else {
diff --git a/src/dynarec/rv64/dynarec_rv64_functions.c b/src/dynarec/rv64/dynarec_rv64_functions.c
index 34dbeb47..0b1943d6 100644
--- a/src/dynarec/rv64/dynarec_rv64_functions.c
+++ b/src/dynarec/rv64/dynarec_rv64_functions.c
@@ -217,7 +217,7 @@ static void extcache_promote_double_combined(dynarec_rv64_t* dyn, int ninst, int
         } else
             a = dyn->insts[ninst].e.combined1;
         int i = extcache_get_st_f_i64_noback(dyn, ninst, a);
-        // if(box64_dynarec_dump) dynarec_log(LOG_NONE, "extcache_promote_double_combined, ninst=%d combined%c %d i=%d (stack:%d/%d)\n", ninst, (a == dyn->insts[ninst].e.combined2)?'2':'1', a ,i, dyn->insts[ninst].e.stack_push, -dyn->insts[ninst].e.stack_pop);
+        // if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "extcache_promote_double_combined, ninst=%d combined%c %d i=%d (stack:%d/%d)\n", ninst, (a == dyn->insts[ninst].e.combined2)?'2':'1', a ,i, dyn->insts[ninst].e.stack_push, -dyn->insts[ninst].e.stack_pop);
         if (i >= 0) {
             dyn->insts[ninst].e.extcache[i].t = EXT_CACHE_ST_D;
             if (!dyn->insts[ninst].e.barrier)
@@ -236,19 +236,19 @@ static void extcache_promote_double_internal(dynarec_rv64_t* dyn, int ninst, int
     while (ninst >= 0) {
         a += dyn->insts[ninst].e.stack_pop; // adjust Stack depth: add pop'd ST (going backward)
         int i = extcache_get_st_f_i64(dyn, ninst, a);
-        // if(box64_dynarec_dump) dynarec_log(LOG_NONE, "extcache_promote_double_internal, ninst=%d, a=%d st=%d:%d, i=%d\n", ninst, a, dyn->insts[ninst].e.stack, dyn->insts[ninst].e.stack_next, i);
+        // if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "extcache_promote_double_internal, ninst=%d, a=%d st=%d:%d, i=%d\n", ninst, a, dyn->insts[ninst].e.stack, dyn->insts[ninst].e.stack_next, i);
         if (i < 0) return;
         dyn->insts[ninst].e.extcache[i].t = EXT_CACHE_ST_D;
         // check combined propagation too
         if (dyn->insts[ninst].e.combined1 || dyn->insts[ninst].e.combined2) {
             if (dyn->insts[ninst].e.swapped) {
-                // if(box64_dynarec_dump) dynarec_log(LOG_NONE, "extcache_promote_double_internal, ninst=%d swapped %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].e.combined1 ,dyn->insts[ninst].e.combined2, a, dyn->insts[ninst].e.stack);
+                // if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "extcache_promote_double_internal, ninst=%d swapped %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].e.combined1 ,dyn->insts[ninst].e.combined2, a, dyn->insts[ninst].e.stack);
                 if (a == dyn->insts[ninst].e.combined1)
                     a = dyn->insts[ninst].e.combined2;
                 else if (a == dyn->insts[ninst].e.combined2)
                     a = dyn->insts[ninst].e.combined1;
             } else {
-                // if(box64_dynarec_dump) dynarec_log(LOG_NONE, "extcache_promote_double_internal, ninst=%d combined %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].e.combined1 ,dyn->insts[ninst].e.combined2, a, dyn->insts[ninst].e.stack);
+                // if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "extcache_promote_double_internal, ninst=%d combined %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].e.combined1 ,dyn->insts[ninst].e.combined2, a, dyn->insts[ninst].e.stack);
                 extcache_promote_double_combined(dyn, ninst, maxinst, a);
             }
         }
@@ -264,19 +264,19 @@ static void extcache_promote_double_forward(dynarec_rv64_t* dyn, int ninst, int
     while ((ninst != -1) && (ninst < maxinst) && (a >= 0)) {
         a += dyn->insts[ninst].e.stack_push; // // adjust Stack depth: add push'd ST (going forward)
         if ((dyn->insts[ninst].e.combined1 || dyn->insts[ninst].e.combined2) && dyn->insts[ninst].e.swapped) {
-            // if(box64_dynarec_dump) dynarec_log(LOG_NONE, "extcache_promote_double_forward, ninst=%d swapped %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].e.combined1 ,dyn->insts[ninst].e.combined2, a, dyn->insts[ninst].e.stack);
+            // if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "extcache_promote_double_forward, ninst=%d swapped %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].e.combined1 ,dyn->insts[ninst].e.combined2, a, dyn->insts[ninst].e.stack);
             if (a == dyn->insts[ninst].e.combined1)
                 a = dyn->insts[ninst].e.combined2;
             else if (a == dyn->insts[ninst].e.combined2)
                 a = dyn->insts[ninst].e.combined1;
         }
         int i = extcache_get_st_f_i64_noback(dyn, ninst, a);
-        // if(box64_dynarec_dump) dynarec_log(LOG_NONE, "extcache_promote_double_forward, ninst=%d, a=%d st=%d:%d(%d/%d), i=%d\n", ninst, a, dyn->insts[ninst].e.stack, dyn->insts[ninst].e.stack_next, dyn->insts[ninst].e.stack_push, -dyn->insts[ninst].e.stack_pop, i);
+        // if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "extcache_promote_double_forward, ninst=%d, a=%d st=%d:%d(%d/%d), i=%d\n", ninst, a, dyn->insts[ninst].e.stack, dyn->insts[ninst].e.stack_next, dyn->insts[ninst].e.stack_push, -dyn->insts[ninst].e.stack_pop, i);
         if (i < 0) return;
         dyn->insts[ninst].e.extcache[i].t = EXT_CACHE_ST_D;
         // check combined propagation too
         if ((dyn->insts[ninst].e.combined1 || dyn->insts[ninst].e.combined2) && !dyn->insts[ninst].e.swapped) {
-            // if(box64_dynarec_dump) dynarec_log(LOG_NONE, "extcache_promote_double_forward, ninst=%d combined %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].e.combined1 ,dyn->insts[ninst].e.combined2, a, dyn->insts[ninst].e.stack);
+            // if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "extcache_promote_double_forward, ninst=%d combined %d/%d vs %d with st %d\n", ninst, dyn->insts[ninst].e.combined1 ,dyn->insts[ninst].e.combined2, a, dyn->insts[ninst].e.stack);
             extcache_promote_double_combined(dyn, ninst, maxinst, a);
         }
         a -= dyn->insts[ninst].e.stack_pop; // adjust Stack depth: remove pop'd ST (going forward)
@@ -292,20 +292,20 @@ static void extcache_promote_double_forward(dynarec_rv64_t* dyn, int ninst, int
 void extcache_promote_double(dynarec_rv64_t* dyn, int ninst, int a)
 {
     int i = extcache_get_current_st_f_i64(dyn, a);
-    // if(box64_dynarec_dump) dynarec_log(LOG_NONE, "extcache_promote_double, ninst=%d a=%d st=%d i=%d\n", ninst, a, dyn->e.stack, i);
+    // if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "extcache_promote_double, ninst=%d a=%d st=%d i=%d\n", ninst, a, dyn->e.stack, i);
     if (i < 0) return;
     dyn->e.extcache[i].t = EXT_CACHE_ST_D;
     dyn->insts[ninst].e.extcache[i].t = EXT_CACHE_ST_D;
     // check combined propagation too
     if (dyn->e.combined1 || dyn->e.combined2) {
         if (dyn->e.swapped) {
-            // if(box64_dynarec_dump) dynarec_log(LOG_NONE, "extcache_promote_double, ninst=%d swapped! %d/%d vs %d\n", ninst, dyn->e.combined1 ,dyn->e.combined2, a);
+            // if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "extcache_promote_double, ninst=%d swapped! %d/%d vs %d\n", ninst, dyn->e.combined1 ,dyn->e.combined2, a);
             if (dyn->e.combined1 == a)
                 a = dyn->e.combined2;
             else if (dyn->e.combined2 == a)
                 a = dyn->e.combined1;
         } else {
-            // if(box64_dynarec_dump) dynarec_log(LOG_NONE, "extcache_promote_double, ninst=%d combined! %d/%d vs %d\n", ninst, dyn->e.combined1 ,dyn->e.combined2, a);
+            // if(BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "extcache_promote_double, ninst=%d combined! %d/%d vs %d\n", ninst, dyn->e.combined1 ,dyn->e.combined2, a);
             if (dyn->e.combined1 == a)
                 extcache_promote_double(dyn, ninst, dyn->e.combined2);
             else if (dyn->e.combined2 == a)
@@ -698,7 +698,7 @@ static register_mapping_t register_mappings[] = {
 
 void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t rex)
 {
-    if (!box64_dynarec_dump && !box64_dynarec_gdbjit && !box64_dynarec_perf_map) return;
+    if (!BOX64ENV(dynarec_dump) && !BOX64ENV(dynarec_gdbjit) && !BOX64ENV(dynarec_perf_map)) return;
 
     static char buf[512];
     int length = sprintf(buf, "barrier=%d state=%d/%d(%d), %s=%X/%X, use=%X, need=%X/%X, fuse=%d, sm=%d(%d/%d), sew@entry=%d, sew@exit=%d",
@@ -751,15 +751,15 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r
     if (dyn->insts[ninst].e.combined1 || dyn->insts[ninst].e.combined2)
         length += sprintf(buf + length, " %s:%d/%d", dyn->insts[ninst].e.swapped ? "SWP" : "CMB", dyn->insts[ninst].e.combined1, dyn->insts[ninst].e.combined2);
 
-    if (box64_dynarec_dump) {
+    if (BOX64ENV(dynarec_dump)) {
         printf_x64_instruction(rex.is32bits ? my_context->dec32 : my_context->dec, &dyn->insts[ninst].x64, name);
         dynarec_log(LOG_NONE, "%s%p: %d emitted opcodes, inst=%d, %s%s\n",
-            (box64_dynarec_dump > 1) ? "\e[32m" : "",
-            (void*)(dyn->native_start + dyn->insts[ninst].address), dyn->insts[ninst].size / 4, ninst, buf, (box64_dynarec_dump > 1) ? "\e[m" : "");
+            (BOX64ENV(dynarec_dump) > 1) ? "\e[32m" : "",
+            (void*)(dyn->native_start + dyn->insts[ninst].address), dyn->insts[ninst].size / 4, ninst, buf, (BOX64ENV(dynarec_dump) > 1) ? "\e[m" : "");
     }
-    if (box64_dynarec_gdbjit) {
+    if (BOX64ENV(dynarec_gdbjit)) {
         static char buf2[512];
-        if (box64_dynarec_gdbjit > 1) {
+        if (BOX64ENV(dynarec_gdbjit) > 1) {
             sprintf(buf2, "; %d: %d opcodes, %s", ninst, dyn->insts[ninst].size / 4, buf);
             dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), buf2);
         }
@@ -772,7 +772,7 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r
         }
         dyn->gdbjit_block = GdbJITBlockAddLine(dyn->gdbjit_block, (dyn->native_start + dyn->insts[ninst].address), inst_name);
     }
-    if (box64_dynarec_perf_map && box64_dynarec_perf_map_fd != -1) {
+    if (BOX64ENV(dynarec_perf_map) && BOX64ENV(dynarec_perf_map_fd) != -1) {
         writePerfMap(dyn->insts[ninst].x64.addr, dyn->native_start + dyn->insts[ninst].address, dyn->insts[ninst].size / 4, name);
     }
 }
@@ -785,9 +785,9 @@ void print_opcode(dynarec_native_t* dyn, int ninst, uint32_t opcode)
 void print_newinst(dynarec_native_t* dyn, int ninst)
 {
     dynarec_log(LOG_NONE, "%sNew instruction %d, native=%p (0x%x)%s\n",
-        (box64_dynarec_dump > 1) ? "\e[4;32m" : "",
+        (BOX64ENV(dynarec_dump) > 1) ? "\e[4;32m" : "",
         ninst, dyn->block, dyn->native_size,
-        (box64_dynarec_dump > 1) ? "\e[m" : "");
+        (BOX64ENV(dynarec_dump) > 1) ? "\e[m" : "");
 }
 
 // x87 stuffs
@@ -850,7 +850,7 @@ int fpu_is_st_freed(dynarec_rv64_t* dyn, int ninst, int st)
 
 void updateNativeFlags(dynarec_rv64_t* dyn)
 {
-    if (!box64_dynarec_nativeflags)
+    if (!BOX64ENV(dynarec_nativeflags))
         return;
     for (int i = 1; i < dyn->size; ++i)
         if (dyn->insts[i].nat_flags_fusion) {
diff --git a/src/dynarec/rv64/dynarec_rv64_helper.c b/src/dynarec/rv64/dynarec_rv64_helper.c
index af44f12b..fd88271f 100644
--- a/src/dynarec/rv64/dynarec_rv64_helper.c
+++ b/src/dynarec/rv64/dynarec_rv64_helper.c
@@ -611,7 +611,7 @@ void ret_to_epilog(dynarec_rv64_t* dyn, int ninst, rex_t rex)
     POP1z(xRIP);
     MVz(x1, xRIP);
     SMEND();
-    if (box64_dynarec_callret) {
+    if (BOX64ENV(dynarec_callret)) {
         // pop the actual return address from RV64 stack
         LD(xRA, xSP, 0);      // native addr
         LD(x6, xSP, 8);       // x86 addr
@@ -680,7 +680,7 @@ void retn_to_epilog(dynarec_rv64_t* dyn, int ninst, rex_t rex, int n)
     }
     MVz(x1, xRIP);
     SMEND();
-    if (box64_dynarec_callret) {
+    if (BOX64ENV(dynarec_callret)) {
         // pop the actual return address from RV64 stack
         LD(xRA, xSP, 0);      // native addr
         LD(x6, xSP, 8);       // x86 addr
@@ -2891,10 +2891,10 @@ void fpu_reset_cache(dynarec_rv64_t* dyn, int ninst, int reset_n)
 #endif
     extcacheUnwind(&dyn->e);
 #if STEP == 0
-    if (box64_dynarec_dump) dynarec_log(LOG_NONE, "New x87stack=%d\n", dyn->e.x87stack);
+    if (BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, "New x87stack=%d\n", dyn->e.x87stack);
 #endif
 #if defined(HAVE_TRACE) && (STEP > 2)
-    if (box64_dynarec_dump)
+    if (BOX64ENV(dynarec_dump))
         if (memcmp(&dyn->e, &dyn->insts[reset_n].e, sizeof(ext_cache_t))) {
             MESSAGE(LOG_DEBUG, "Warning, difference in extcache: reset=");
             for (int i = 0; i < 24; ++i)
diff --git a/src/dynarec/rv64/dynarec_rv64_helper.h b/src/dynarec/rv64/dynarec_rv64_helper.h
index 40ef0717..332009d0 100644
--- a/src/dynarec/rv64/dynarec_rv64_helper.h
+++ b/src/dynarec/rv64/dynarec_rv64_helper.h
@@ -963,7 +963,7 @@
 #else
 #define X87_PUSH_OR_FAIL(var, dyn, ninst, scratch, t)                                                                                                    \
     if ((dyn->e.x87stack == 8) || (dyn->e.pushed == 8)) {                                                                                                \
-        if (box64_dynarec_dump) dynarec_log(LOG_NONE, " Warning, suspicious x87 Push, stack=%d/%d on inst %d\n", dyn->e.x87stack, dyn->e.pushed, ninst); \
+        if (BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, " Warning, suspicious x87 Push, stack=%d/%d on inst %d\n", dyn->e.x87stack, dyn->e.pushed, ninst); \
         dyn->abort = 1;                                                                                                                                  \
         return addr;                                                                                                                                     \
     }                                                                                                                                                    \
@@ -971,7 +971,7 @@
 
 #define X87_PUSH_EMPTY_OR_FAIL(dyn, ninst, scratch)                                                                                                      \
     if ((dyn->e.x87stack == 8) || (dyn->e.pushed == 8)) {                                                                                                \
-        if (box64_dynarec_dump) dynarec_log(LOG_NONE, " Warning, suspicious x87 Push, stack=%d/%d on inst %d\n", dyn->e.x87stack, dyn->e.pushed, ninst); \
+        if (BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, " Warning, suspicious x87 Push, stack=%d/%d on inst %d\n", dyn->e.x87stack, dyn->e.pushed, ninst); \
         dyn->abort = 1;                                                                                                                                  \
         return addr;                                                                                                                                     \
     }                                                                                                                                                    \
@@ -979,7 +979,7 @@
 
 #define X87_POP_OR_FAIL(dyn, ninst, scratch)                                                                                                           \
     if ((dyn->e.x87stack == -8) || (dyn->e.poped == 8)) {                                                                                              \
-        if (box64_dynarec_dump) dynarec_log(LOG_NONE, " Warning, suspicious x87 Pop, stack=%d/%d on inst %d\n", dyn->e.x87stack, dyn->e.poped, ninst); \
+        if (BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, " Warning, suspicious x87 Pop, stack=%d/%d on inst %d\n", dyn->e.x87stack, dyn->e.poped, ninst); \
         dyn->abort = 1;                                                                                                                                \
         return addr;                                                                                                                                   \
     }                                                                                                                                                  \
@@ -1773,16 +1773,16 @@ uintptr_t dynarec64_AVX_F3_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip,
     B##COND(dyn->insts[ninst].nat_flags_op1, dyn->insts[ninst].nat_flags_op2, val);
 
 #define NOTEST(s1)                                     \
-    if (box64_dynarec_test) {                          \
+    if (BOX64ENV(dynarec_test)) {                      \
         SW(xZR, xEmu, offsetof(x64emu_t, test.test));  \
         SW(xZR, xEmu, offsetof(x64emu_t, test.clean)); \
     }
 #define SKIPTEST(s1)                                   \
-    if (box64_dynarec_test) {                          \
+    if (BOX64ENV(dynarec_test)) {                      \
         SW(xZR, xEmu, offsetof(x64emu_t, test.clean)); \
     }
 #define GOTEST(s1, s2)                               \
-    if (box64_dynarec_test) {                        \
+    if (BOX64ENV(dynarec_test)) {                    \
         MOV32w(s2, 1);                               \
         SW(s2, xEmu, offsetof(x64emu_t, test.test)); \
     }
diff --git a/src/dynarec/rv64/dynarec_rv64_pass0.h b/src/dynarec/rv64/dynarec_rv64_pass0.h
index 10dfeb0e..53630a89 100644
--- a/src/dynarec/rv64/dynarec_rv64_pass0.h
+++ b/src/dynarec/rv64/dynarec_rv64_pass0.h
@@ -15,7 +15,7 @@
     dyn->f.pending = SF_SET
 
 #define READFLAGS_FUSION(A, s1, s2, s3, s4, s5)                                                                 \
-    if (box64_dynarec_nativeflags && ninst > 0 && !dyn->insts[ninst - 1].nat_flags_nofusion) {                  \
+    if (BOX64ENV(dynarec_nativeflags) && ninst > 0 && !dyn->insts[ninst - 1].nat_flags_nofusion) {                  \
         if ((A) == (X_ZF))                                                                                      \
             dyn->insts[ninst].nat_flags_fusion = 1;                                                             \
         else if (dyn->insts[ninst - 1].nat_flags_carry && ((A) == (X_CF) || (A) == (X_CF | X_ZF)))              \
@@ -73,7 +73,7 @@
 #define DEFAULT                                                                                                                                     \
     --dyn->size;                                                                                                                                    \
     *ok = -1;                                                                                                                                       \
-    if (box64_dynarec_log >= LOG_INFO || box64_dynarec_dump || box64_dynarec_missing == 1) {                                                        \
+    if (BOX64ENV(dynarec_log) >= LOG_INFO || BOX64ENV(dynarec_dump) || BOX64ENV(dynarec_missing) == 1) {                                                        \
         dynarec_log(LOG_NONE, "%p: Dynarec stopped because of %sOpcode %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", \
             (void*)ip, rex.is32bits ? "32bits " : "",                                                                                               \
             PKip(0),                                                                                                                                \
diff --git a/src/dynarec/rv64/dynarec_rv64_pass3.h b/src/dynarec/rv64/dynarec_rv64_pass3.h
index d8a270f6..781c69e9 100644
--- a/src/dynarec/rv64/dynarec_rv64_pass3.h
+++ b/src/dynarec/rv64/dynarec_rv64_pass3.h
@@ -5,7 +5,7 @@
     addInst(dyn->instsize, &dyn->insts_size, 0, 0);
 #define EMIT(A)                                                        \
     do {                                                               \
-        if (box64_dynarec_dump) print_opcode(dyn, ninst, (uint32_t)A); \
+        if (BOX64ENV(dynarec_dump)) print_opcode(dyn, ninst, (uint32_t)A); \
         *(uint32_t*)(dyn->block) = (uint32_t)(A);                      \
         dyn->block += 4;                                               \
         dyn->native_size += 4;                                         \
@@ -13,13 +13,13 @@
     } while (0)
 
 #define MESSAGE(A, ...) \
-    if (box64_dynarec_dump) dynarec_log(LOG_NONE, __VA_ARGS__)
+    if (BOX64ENV(dynarec_dump)) dynarec_log(LOG_NONE, __VA_ARGS__)
 #define NEW_INST                                                                                                  \
     dyn->vector_sew = dyn->insts[ninst].vector_sew_entry;                                                         \
     dyn->inst_sew = dyn->vector_sew;                                                                              \
     dyn->inst_vlmul = VECTOR_LMUL1;                                                                               \
     dyn->inst_vl = 0;                                                                                             \
-    if (box64_dynarec_dump) print_newinst(dyn, ninst);                                                            \
+    if (BOX64ENV(dynarec_dump)) print_newinst(dyn, ninst);                                                            \
     if (ninst) {                                                                                                  \
         addInst(dyn->instsize, &dyn->insts_size, dyn->insts[ninst - 1].x64.size, dyn->insts[ninst - 1].size / 4); \
         dyn->insts[ninst].ymm0_pass3 = dyn->ymm_zero;                                                             \
@@ -44,7 +44,7 @@
     }
 
 #define DEFAULT_VECTOR                                                                                       \
-    if (box64_dynarec_log >= LOG_INFO || box64_dynarec_dump || box64_dynarec_missing == 2) {                 \
+    if (BOX64ENV(dynarec_log) >= LOG_INFO || BOX64ENV(dynarec_dump) || BOX64ENV(dynarec_missing) == 2) {                 \
         dynarec_log(LOG_NONE, "%p: Dynarec fallback to scalar version because of %sOpcode"                   \
                               " %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", \
             (void*)ip, rex.is32bits ? "x86 " : "x64 ",                                                       \