Skip to content
NxNative

Settings

Every app nxnative packs opens on a settings screen before the game starts; a Mac app shows the same settings in a window. Each game offers only the settings it supports. Pick what you want and tap Play: the app remembers your choices for next time. This page explains each setting, based on nxnative's settings documentation.

Your own keys and games only. These settings apply to apps you packed yourself from games you own.

Tested defaults

Each game comes with the settings nxnative tested it with, and those are what the screen shows the first time. They are a good place to start. A setting you change is kept, even when a later build of the app ships different defaults. A setting you leave alone follows the defaults of whichever build you have. Reset to tested defaults, at the bottom of the screen, sets everything back.

Game

Frame rate

Games whose speed the app controls, such as Breath of the Wild and Tears of the Kingdom, offer 30 fps or 60 fps. 60 is smoother. 30 is what the Switch ran, and it uses less power, so the device stays cooler and the battery lasts longer. The game runs at its real speed either way.

Render scale

The size of the 3D picture, from 50 to 100 %. Lower is lighter on the GPU but blurrier; text and the HUD stay sharp. At 100 % the game keeps its own dynamic resolution. Only games the app can scale offer it.

Console mode

Docked renders at the Switch's TV resolution. Handheld renders at its lower handheld resolution, which is lighter on the device and can give a higher frame rate.

Upscaling

When the game renders below the screen's resolution, the picture is scaled up. Standard, the default, scales smoothly. MetalFX uses Apple's MetalFX upscaler, which sharpens edges and text but costs GPU time and can make an iPhone warmer. nxnative suggests it on a Mac, or on an iPhone in handheld mode at 30 fps, and Standard for long 60 fps sessions on an iPhone.

Game language

Any language the game has. You can switch here without packing the game again.

Frame-rate counter

Shows frames per second at the top left. iPhone and iPad only.

Controls

  • Touch feedback: a light tap from the device when you press an on-screen button. iPhone and iPad only.
  • Game rumble: the game's vibration, on the device or a connected controller.
  • Rumble strength: from 0 to 300 %.
  • Rumble cutoff: a controller's vibration weaker than this stays off. It is off by default. Useful for controllers that rumble constantly: nxnative says Mario Kart 8 Deluxe needs about 45 % to rumble only on crashes and drifts.

More on controls: Controllers.

Performance

Change these when a game stutters, runs hot, or feels laggy. Otherwise the tested defaults are best.

  • Frame buffering: lets the game start its next frame while the screen still shows the last one. It keeps the GPU busy, which stops iOS from lowering its clock: without it, Breath of the Wild fell to 30 fps on an iPhone 17 Pro Max. The cost is up to one frame of extra input latency. Turn it off if controls feel late and the game holds its frame rate anyway.
  • Metal 4 pipelines: keeps the graphics pipelines the app builds in an archive on the device, so most later ones build almost instantly and scenes stutter less. Turn it off only if a game crashes or runs out of memory with it.
  • Pipeline prebuild: prepares a stand-in for every shader pair before the game's first frame, behind a "Preparing pipelines" screen. The first start waits a few minutes for it, once, and again after a game or app update brings new shaders. Turn it off to skip the wait, at the cost of brief stalls when something is drawn for the first time. Needs Metal 4 pipelines.
  • Encode thread: prepares the GPU's work on a separate thread so the game's own thread can move on sooner. On by default on the iPhone. On the Mac it is off unless the game's profile turns it on. Leave it as it is unless a game misbehaves.
  • Hold frames when late: for games whose frame rate the app controls. On (the default for most games), the app drops to an even 30 fps for a while when frames come late. Off, it keeps aiming at 60 and shows late frames as they arrive: less even, but closer to 60 on average.
  • Performance HUD: Apple's overlay with frame rate, frame and GPU times and memory. Useful to see what a setting changes; leave it off for play.

On the Mac

A Mac app shows the same settings in a window, with the most used ones first: frame rate, render scale, console mode, game language, display mode and game rumble. The rest are under Advanced settings. Click Play or press Return to start.

  • Display mode: Window or Fullscreen. ⌃⌘F or the green window button switches while you play.
  • Cloud saves folder: Choose a folder… picks the iCloud Drive folder the game's save is synced through (see Cloud saves); Turn off stops it. It is off by default. If the game log says this app may not open iCloud Drive, allow it in System Settings › Privacy & Security › Files and Folders.
  • To skip the window, turn off Show this window at launch. Hold Option while the app opens to see it again.

Cloud saves

A game's Mac app and iPhone app can share one save through iCloud Drive. Choose the same iCloud Drive folder on both: Cloud saves › Choose a folder… in the Mac settings window, and Cloud saves in the iPhone app's settings screen. Each game keeps one file there, <title ID>/save.dmsync, holding its whole save.

  • When the game starts, it brings in the save from iCloud Drive if that one is the one to keep. A few seconds after the game saves, it sends its own. The iPhone app also sends when it goes to the background, and the Mac app once the game has quit.
  • If you played on both devices without the save getting across in between, the newer save wins.
  • A replaced save is kept first, in a save-backups folder beside the save (on the iPhone in the Files app under the app's name, on the Mac in ~/Library/Application Support/nxnative/<title ID>/save-backups). The newest 10 from each side are kept.
  • iCloud Drive takes a moment to carry the file across: quit the game on one device and give it a few seconds before you start it on the other. Without a connection the game plays on with the save it has and sends it later.

Settings in a file

You can also fix a setting with a line like DM_OPMODE=0 in a file named env.txt. A setting from the file wins over the screen, which then shows it greyed out. Fully close and reopen the app after editing the file.

  • iPhone and iPad: Documents/env.txt, found in the Files app under the app's name.
  • Mac: ~/Library/Application Support/nxnative/<title ID>/env.txt.
Setting Variable Values
Frame rate DM_FPS_TARGET 30, 60
Render scale DM_RENDER_SCALE 0.5 to 1.0
Console mode DM_OPMODE 1 docked, 0 handheld
Game language DM_LANG a language code, such as ja
Display mode (Mac) DM_FULLSCREEN 1 fullscreen, 0 window
Cloud saves folder (Mac) DM_SAVE_SYNC a folder; icloud for iCloud Drive › nxnative Saves; 0 off
Frame-rate counter DM_SHOW_FPS 1, 0
Touch feedback DM_TOUCH_HAPTICS 1, 0
Game rumble DM_RUMBLE 1, 0
Rumble strength DM_RUMBLE_GAIN 0 to 3
Rumble cutoff DM_RUMBLE_MIN 0 to 0.9
Upscaling DM_PRESENT_UPSCALE off, metalfx
Frame buffering DM_PRESENT_SNAP 1, 0
Metal 4 pipelines DM_PSO_MTL4 1, 0
Pipeline prebuild DM_PSO_PREBUILD 1, 0
Encode thread DM_NVN_ENC_THREAD 1, 0
Hold frames when late DM_FPS_HOLD on, off
Performance HUD DM_METAL_HUD 1, 0

Two more lines change the settings screen itself: DM_LAUNCHER=0 skips it (your saved choices still apply), and DM_SAVED_CHOICES=0 starts with the tested defaults while keeping your saved choices for later.

Some tips from nxnative: DM_FPS_TARGET=30 keeps Breath of the Wild, Tears of the Kingdom, Octopath Traveler 0 and Octopath Traveler II at their original 30 fps to save battery, and DM_PRESENT_INTERVAL=game does the same for Monster Train 2.

The Env config generator writes the file for you.