Skip to content

Adds new FEXCore presets#492

Merged
utkarshdalal merged 2 commits intoutkarshdalal:masterfrom
joshuatam:add-fexcore-presets
Feb 5, 2026
Merged

Adds new FEXCore presets#492
utkarshdalal merged 2 commits intoutkarshdalal:masterfrom
joshuatam:add-fexcore-presets

Conversation

@joshuatam
Copy link
Contributor

@joshuatam joshuatam commented Feb 5, 2026

Adds "Extreme" and "Denuvo" FEXCore presets with tailored environment variable configurations.

These presets offer users more granular control over FEXCore's behavior, potentially enhancing performance or compatibility for specific applications.

The "Extreme" preset focuses on aggressive performance optimizations.

The "Denuvo" preset includes additional settings to improve compatibility with games using the Denuvo DRM.


Summary by cubic

Adds two new FEXCore presets, “Extreme” and “Denuvo,” to give users finer control over performance and game compatibility, especially for titles using Denuvo DRM.

  • New Features
    • Extreme: aggressive performance tuning (TSO variants disabled, reduced x87 precision, multiblock, small TSC scale, volatile metadata).
    • Denuvo: builds on Extreme with stricter SMC checks and hiding the hypervisor bit for better DRM compatibility.
    • Added localized strings for these presets across supported languages.

Written for commit 395bab3. Summary will update on new commits.

Summary by CodeRabbit

  • New Features

    • Added "Extreme" and "Denuvo" performance presets available for selection.
  • Localization

    • Added translations for the new "Extreme" preset in Danish, German, French, Italian, Portuguese (Brazil), Romanian, Ukrainian, Simplified Chinese and Traditional Chinese.

Adds "Extreme" and "Denuvo" FEXCore presets with tailored environment variable configurations.

These presets offer users more granular control over FEXCore's behavior, potentially enhancing performance or compatibility for specific applications.

The "Extreme" preset focuses on aggressive performance optimizations.

The "Denuvo" preset includes additional settings to improve compatibility with games using the Denuvo DRM.
@coderabbitai
Copy link

coderabbitai bot commented Feb 5, 2026

📝 Walkthrough

Walkthrough

Adds two new FEXCore presets, EXTREME and DENUVO, to the preset enum/manager and registers them; inserts corresponding localized string key extreme across multiple locale resource files. No other behavioral changes.

Changes

Cohort / File(s) Summary
Preset definitions
app/src/main/java/com/winlator/fexcore/FEXCorePreset.java, app/src/main/java/com/winlator/fexcore/FEXCorePresetManager.java
Added public constants EXTREME and DENUVO; defined and registered EXTREME (based on PERFORMANCE with specific flags) and DENUVO (based on EXTREME with additional flags).
Localized string resources
app/src/main/res/values/strings.xml, app/src/main/res/values-da/strings.xml, app/src/main/res/values-de/strings.xml, app/src/main/res/values-fr/strings.xml, app/src/main/res/values-it/strings.xml, app/src/main/res/values-pt-rBR/strings.xml, app/src/main/res/values-ro/strings.xml, app/src/main/res/values-uk/strings.xml, app/src/main/res/values-zh-rCN/strings.xml, app/src/main/res/values-zh-rTW/strings.xml
Added new string resource extreme (localized values such as "Extreme", "极致", "極致") in each listed locale file; some files contain duplicated insertions noted in the diff.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • Apply best configs #323 — Consumes/depends on FEXCorePresetManager.getPresets and will be affected by the new EXTREME/DENUVO presets.

Poem

🐰

I hopped through code with ears held high,
Two new names stitched into the sky,
EXTREME and DENUVO, crisp and bright,
Now sung in many tongues tonight,
A tiny thump — the presets take flight.

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Adds new FEXCore presets' directly and clearly summarizes the main change—introducing two new presets (Extreme and Denuvo) to FEXCorePreset and FEXCorePresetManager, with supporting localization additions.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 12 files

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@app/src/main/java/com/winlator/fexcore/FEXCorePreset.java`:
- Around line 10-11: The public constant DEVUVO in FEXCorePreset is a typo; add
a new correctly spelled public constant DENUVO (e.g., public static final String
DENUVO = "DENUVO"), annotate or comment the existing DEVUVO as `@Deprecated` with
a note to use DENUVO, and update all usages to reference FEXCorePreset.DENUVO
while leaving DEVUVO as a deprecated alias for backward compatibility; ensure
both constants are in the FEXCorePreset class alongside EXTREME and run a
project-wide find/replace of DEVUVO usages to the new DENUVO where safe.
🧹 Nitpick comments (1)
app/src/main/java/com/winlator/fexcore/FEXCorePresetManager.java (1)

54-79: Reduce duplication between PERFORMANCE/EXTREME/DEVUVO env var setup.
The EXTREME/DEVUVO blocks repeat the PERFORMANCE defaults, which risks drift if those defaults change. A small helper keeps them in sync.

♻️ Suggested refactor
-        else if (id.equals(FEXCorePreset.EXTREME)) {
-            envVars.put("FEX_TSOENABLED", "0");
-            envVars.put("FEX_VECTORTSOENABLED", "0");
-            envVars.put("FEX_MEMCPYSETTSOENABLED", "0");
-            envVars.put("FEX_HALFBARRIERTSOENABLED", "0");
-            envVars.put("FEX_X87REDUCEDPRECISION", "1");
-            envVars.put("FEX_MULTIBLOCK", "1");
-
-            // Based from PERFORMANCE
-            envVars.put("FEX_SMALLTSCSCALE", "1");
-            envVars.put("FEX_VOLATILEMETADATA", "1");
-        }
-        else if (id.equals(FEXCorePreset.DEVUVO)) {
-            envVars.put("FEX_TSOENABLED", "0");
-            envVars.put("FEX_VECTORTSOENABLED", "0");
-            envVars.put("FEX_MEMCPYSETTSOENABLED", "0");
-            envVars.put("FEX_HALFBARRIERTSOENABLED", "0");
-            envVars.put("FEX_X87REDUCEDPRECISION", "1");
-            envVars.put("FEX_MULTIBLOCK", "1");
-
-            // Based from EXTREME
-            envVars.put("FEX_SMALLTSCSCALE", "1");
-            envVars.put("FEX_VOLATILEMETADATA", "1");
-            envVars.put("FEX_SMCCHECKS", "full");
-            envVars.put("FEX_HIDEHYPERVISORBIT", "1");
-        }
+        else if (id.equals(FEXCorePreset.EXTREME)) {
+            applyPerformanceEnvVars(envVars);
+            envVars.put("FEX_SMALLTSCSCALE", "1");
+            envVars.put("FEX_VOLATILEMETADATA", "1");
+        }
+        else if (id.equals(FEXCorePreset.DEVUVO)) {
+            applyPerformanceEnvVars(envVars);
+            envVars.put("FEX_SMALLTSCSCALE", "1");
+            envVars.put("FEX_VOLATILEMETADATA", "1");
+            envVars.put("FEX_SMCCHECKS", "full");
+            envVars.put("FEX_HIDEHYPERVISORBIT", "1");
+        }
// Add near getEnvVars (helper method)
private static void applyPerformanceEnvVars(EnvVars envVars) {
    envVars.put("FEX_TSOENABLED", "0");
    envVars.put("FEX_VECTORTSOENABLED", "0");
    envVars.put("FEX_MEMCPYSETTSOENABLED", "0");
    envVars.put("FEX_HALFBARRIERTSOENABLED", "0");
    envVars.put("FEX_X87REDUCEDPRECISION", "1");
    envVars.put("FEX_MULTIBLOCK", "1");
}

Comment on lines 10 to 11
public static final String EXTREME = "EXTREME";
public static final String DEVUVO = "DENUVO";
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix the preset constant name typo before it becomes public API.
DEVUVO looks like a misspelling of “DENUVO”; since this is public, callers may copy the typo. Consider adding a correctly spelled constant (and deprecating the misspelled one) and updating usages.

💡 Suggested fix
-    public static final String EXTREME = "EXTREME";
-    public static final String DEVUVO = "DENUVO";
+    public static final String EXTREME = "EXTREME";
+    public static final String DENUVO = "DENUVO";
+    `@Deprecated`
+    public static final String DEVUVO = DENUVO;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
public static final String EXTREME = "EXTREME";
public static final String DEVUVO = "DENUVO";
public static final String EXTREME = "EXTREME";
public static final String DENUVO = "DENUVO";
`@Deprecated`
public static final String DEVUVO = DENUVO;
🤖 Prompt for AI Agents
In `@app/src/main/java/com/winlator/fexcore/FEXCorePreset.java` around lines 10 -
11, The public constant DEVUVO in FEXCorePreset is a typo; add a new correctly
spelled public constant DENUVO (e.g., public static final String DENUVO =
"DENUVO"), annotate or comment the existing DEVUVO as `@Deprecated` with a note to
use DENUVO, and update all usages to reference FEXCorePreset.DENUVO while
leaving DEVUVO as a deprecated alias for backward compatibility; ensure both
constants are in the FEXCorePreset class alongside EXTREME and run a
project-wide find/replace of DEVUVO usages to the new DENUVO where safe.

@utkarshdalal utkarshdalal merged commit 6cb0240 into utkarshdalal:master Feb 5, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants