Skip to content

Instantly share code, notes, and snippets.

@MiyacoGBF
Last active May 1, 2024 17:57
Show Gist options
  • Star 53 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save MiyacoGBF/6fd49ae4a73a9a7f4d13c488bff2da77 to your computer and use it in GitHub Desktop.
Save MiyacoGBF/6fd49ae4a73a9a7f4d13c488bff2da77 to your computer and use it in GitHub Desktop.
How to Install FAR, HD Texture Pack, and ReShade (GShade) for NieR:Automata on Linux

How to Install FAR, HD Texture Pack, and ReShade (GShade) for NieR:Automata on Linux

About

Links

Disclaimer

I have not tested stabilities of them yet. If you want to try things written below, do it at YOUR OWN RISK.

Motivations (why I want to use FAR on Linux)

  • I'm using a 144Hz monitor, so I want to unlock FPS by FAR.
  • I want to use HD Texture Pack for better graphics, which requires FAR.

System

  • OS: Arch Linux
  • Kernel: Linux 5.5.2-11-tkg-pds (fsync enabled)
  • CPU: Intel Core i7-8700
  • RAM: 16GB
  • GPU: NVIDIA GeForce GTX 1060 6GB
  • Driver: NVIDIA 440.59

Prerequisites

  1. Install protontricks to system wide (use later).

    • For Arch Linux, it can install from AUR.
  2. Install tkg-version of proton into Steam. I used Pronton-tkg 5.1.r9.gc26be86c. See Tk-Glitch's PKGBUILD repo for details. proton-tkg.cfg are attached on this gist.

  3. Set NieR:Automata to use proton-tkg on Stream client.

  4. Launch NieR:Automata.

    • If this is the first time to run NieR:Automata, Steam will automatically run Windows DirectX setup and install it to the default prefix of this game.

    • Otherwise, Steam will update the default prefix of this game for your proton-tkg.

  5. Check NieR:Automata runs correctly.

Game directory for NieR:Automata is ~/.local/share/Steam/steamapps/common/NieRAutomata/ by default.

Run protontricks -s NieR and check that NieR:Automata's steam app ID is 524220.

FAR - Fix (NieR) Automata Resolution

Install

I tried latest version of FAR (0.7.0.23), but it was not stable and had a performance issue. Here, I use version 0.7.0.14, which is better in performance, though have a problem on GUI menu (might have a workaround).

  1. Configure NieR:Automata as windowed mode, 1600x900 resolution, and VSYNC to OFF, then close the game. I'm not sure, but these setting was worked ok anyway. Disabling VSYNC is mandatory to uncap FPS.

  2. Download FAR 0.7.0.14 (FAR_0_7_0_14.7z) from https://github.com/Kaldaien/FAR/releases and extract it.

  3. Copy all extracted files/folders into the game directory (~/.local/share/Steam/steamapps/common/NieRAutomata/).

  4. Install vcrun2015 and dinput8 by protontricks.

    1. Run protontricks 524220 vcrun2015 dinput8 and install vcrun2015 and dinput8.

    2. Run protontricks 524220 winecfg and open winecfg.

      1. Check windows version is set to Windows 10.

      2. Go to Library tab, then set dinput8 to Native then Builtin.

  5. Run NieR:Automata. You will see FAR's OSD (if not seen, press Ctrl + Shift + O), but probably fail to open GUI menu (press Ctrl + Shift + Backspace, then game crashes).

  6. Close the game. You'll see FAR.ini and dinput8.ini are generated in the game directory.

  7. Edit FAR.ini and dinput8.ini. These settings uncap FPS limit in game and fix GUI menu crash (maybe).

    1. Open FAR.ini by your favorite text editor, and edit UncapFPS=false to UncapFPS=true.

    2. Open dinput8.ini and edit as below:

      1. LogLevel in SpecialK.System section to 2 to see logs on OSD.

      2. TargetFPS in Render.FrameRate section to larger value than 60. Or set to 0 to disable FPS limitter.

      3. Silent in Steam.Log section to true. (workaround for fixing GUI crash, maybe)

  8. Run game again. Then in the SquareEnix logo scene you'll see FPS on OSD is higher than 60. And logs on top of the OSD will say uncapped. If you missed to see it in the logo scene (it's quite short), continue and load the save data. In the game (not menu), you'll also see uncapped FPS. If log is not shown on the OSD, disable and enable OSD again by pressing Ctrl + Shift + O twice.

  9. Maybe you can now open GUI menu by pressing Ctrl + Shift + Backspace without game crashing. Tweak FAR as you like there. Do not forget to turn off debug logging (in compatibility/debug section, set log level to 0), which has performance cost.

Issues

  • When moving mouse, the game stutters a bit.

Uninstall

Rename or remove dinput8.dll in the game directory.

HD Texture Pack

Same as Windows, no linux specific.

Install

FAR is required to use this pack. If you still not installed FAR, install it first.

  1. Download HD Texture Pack from (NexusMods)[https://www.nexusmods.com/nierautomata/mods/5]. You need to create account and sign-in to this site.

  2. Extract the downloaded file and move FAR_Res folder to the NieR:Automata game directory (~/.local/share/Steam/steamapps/common/NieRAutomata/).

  3. Run game. You will see improved graphics.

Uninstall HD Texture Pack

Rename or remove FAR_Res folder in the game directory.

ReShade (or GShade, which is a fork of ReShade) (Optional)

Install

I used GShade, so in this section I write mainly about GShade, but the procedure will be almost same for ReShade. For ReShade on Linux, this guild would be helpful but little a bit different from my case.

  1. Close NieR:Automata if it's running.

  2. Download and extract GShade/ReShade.

    • For GShade, go to https://gposers.com/gshade/ and click ZIP FILE button. Then simply extract the downloaded file.

    • For ReShade, go to https://reshade.me/ and click Download ReShade *.*.* button.

      • This link will downlaod .exe version, but you can simply unzip it by unzip command.
  3. Manually install GShade/ReShade to NieR:Automata game directory.

    • For GSahde, copy all files/folders other than d3d9.dll into the game directory.

    • For ReShade, copy ReShade64.json and ReShade64.dll to the game directory, then rename ReShade64.dll to d3d11.dll.

  4. Install d3dcompiler_47 by protontricks.

    1. Run protontricks 524220 d3dcompiler_47. This command installs d3dcompiler_47.dll for the wine prefix.

    2. Run protontricks 524220 winecfg.

      1. Set Windows version to Windows 10.

      2. Go to Library tab, then set d3dcompiler_47 to Native, press OK.

  5. Run NieR:Automata and press Shift + F2 (or Home key for ReShade). If successfully installed, GShade or ReShade menu will be shown on the game. Tweak it as you like.

Issues of Gshade/ReShade

  • I tested GShade 2.1.0 (including ReShade 4.5.3 updates) and ReShade 4.5.3, both had an issue on moving mouse. When mouse cursor is moved, the game is stuck for a couple of seconds. This issue is also shown in FFXIV (stand alone version) on my environment.

Uninstall GShade/ReShade

Rename or remove d3d11.dll file in the game directory.

[Compatibility.General]
IgnoreRaptr=true
DisableRaptr=false
DisableBloatWare_NVIDIA=false
RehookLoadLibrary=false
[SpecialK.System]
InitDelay=250
Silent=false
LogLevel=0
IgnoreRTSSHookDelay=true
;UseCrashHandler=true plays MGS alert sound on crashes and outputs crash info to logs/crash/<timestamp>/*.log
UseCrashHandler=true
GameOutput=true
EnableCEGUI=true
SafeInitCEGUI=true
TraceLoadLibrary=true
StrictCompliant=false
ShowEULA=false
Version=0.8.47.4
[Manage.Memory]
;ReservePercent=Percentage of memory game is allowed to use before texture cache begins pruning itself--set higher for better performance
ReservePercent=80.0
[API.Hook]
LastKnown=64
d3d9=false
d3d9ex=false
d3d11=true
d3d12=false
OpenGL=false
Vulkan=false
[NVIDIA.API]
Disable=false
[Display.Output]
ForceFullscreen=false
ForceWindowed=false
[Render.FrameRate]
TargetFPS=144.0
LimiterTolerance=0.3
SleeplessRenderThread=true
SleeplessWindowThread=true
RefreshRate=-1
WaitForVBLANK=false
BackBufferCount=-1
PreRenderLimit=-1
PresentationInterval=-1
[Input.Cursor]
Manage=false
KeyboardActivates=false
Timeout=1.5
ForceCaptureInUI=false
UseHardwareCursor=true
BlockInvisibleCursorInput=false
NoWarpUI=true
NoWarpVisibleGameCursor=true
FixSynapticTouchpadScroll=false
AntiwarpDeadzonePercent=2.5
UseRelativeInput=false
[Input.Gamepad]
DisablePS4HID=false
AllowHapticUI=true
[Input.XInput]
Rehook=false
UISlot=0
PlaceholderMask=0
DisableRumble=false
SlotReassignment=0,1,2,3
[Window.System]
Borderless=false
Center=false
RenderInBackground=false
MuteInBackground=false
XOffset=0.0%
YOffset=0.0%
ConfineCursor=false
UnconfineCursor=false
PersistentDragPos=false
Fullscreen=false
FixMouseCoords=false
OverrideRes=0x0
[Steam.Achievements]
SoundFile=
[Steam.Log]
Silent=true
[Steam.System]
AppID=524220
AutoInitDelay=0
AutoPumpCallbacks=false
BlockUserStatsCallback=false
FilterExternalDataFromCallbacks=false
PreLoadSteamClient=false
PreLoadSteamOverlay=false
ForceLoadSteamAPI=false
[Render.D3D9]
ForceD3D9Ex=false
HookType=0
EnableTextureMods=true
[Render.DXGI]
MaxDeltaTime=0
UseFlipDiscard=false
;AllowTearingInDWM=DO NOT TURN THIS ON - It is not compatible with this game
AllowTearingInDWM=false
MaxRes=0x0
MinRes=0x0
Scaling=Unspecified
ScanlineOrder=DontCare
ExceptionMode=DontCare
EnableDebugLayer=false
SafeFullscreenMode=false
Use64BitDepthStencil=false
SwapChainWait=0
[Textures.D3D11]
Cache=true
PreciseHash=false
Dump=false
Inject=true
ResourceRoot=FAR_Res
InjectionKeepsFormat=false
[Textures.Cache]
MaxEntries=16384
MinEntries=512
MaxEvict=1024
MinEvict=64
MaxSizeInMiB=3072
MinSizeInMiB=768
IgnoreNonMipmapped=false
AllowStaging=false
[Textures.General]
ResourceRoot=FAR_Res
DumpOnFirstLoad=false
[Steam.DRMWorks]
SpoofBLoggedOn=false
[FAR.Lighting]
GlobalIlluminationWorkgroups=16
MinLightVolumeExtent=1.0
BloomWidth=1600
DisableBloom=false
DisableAO=false
AOWidth=1600
AOHeight=900
[FAR.FrameRate]
UseBusyWait=true
UncapFPS=true
[FAR.Compatibility]
WarnedAboutRTSS=false
[FAR.OSD]
ShowDisclaimer=false
[FAR.System]
AcceptedLicense=true
[FAR.Temporary]
BloomSkipLevels=0
FixMotionBlur=true
[FAR.Keybinds]
HUDFreeScreenshot=Num -
ToggleCameraCenterLock=Num /
ToggleCameraFocusLock=Ctrl+Shift+F11
ToggleCameraFreelook=Num 5
# 'Wine-to-rule-them-all' - Proton-TkG config file
# This is a simplified config file with minimal comments. See ../wine-tkg-git/customization.cfg for more details.
# Some options will be missing from this config file compared to wine-tkg-git as they are enforced.
#### NON-MAKEPKG OPTIONS (Won't affect makepkg builds) ####
# Set to true to get a prompt after the 64-bit part is built, enabling package switching before building the 32-bit side.
# This is a workaround for distros shipping broken devel packages that can't coexist as multilib
_nomakepkg_midbuild_prompt="false"
####
# Set to true if you want to skip the uninstaller at the end of proton-tkg building
_skip_uninstaller="false"
# PROTON-TKG OPTIONS
# Proton branch to target for lsteamclient libs and steam helper on 4.x+ - When using a Wine 3.x base, "proton_3.16" branch will be enforced
_proton_branch="proton_5.0"
# Proton SDL Joystick support, xinput hacks and other gamepad additions. _gamepad_additions depends on _sdl_joy_support.
_sdl_joy_support="true"
_gamepad_additions="false"
# Proton non-vr-related wined3d additions - Disabled on staging independently of this setting
_wined3d_additions="true"
# Proton wined3d-interop and friends for SteamVR support
_steamvr_support="false"
# Disable nvapi and nvapi64 - Common fix for various games
_proton_nvapi_disable="true"
# Disable winedbg - Known fix for GTA V online crashing
_proton_winedbg_disable="true"
# Enforce IMAGE_FILE_LARGE_ADDRESS_AWARE - Fixes 32-bit games hitting address space limitations.
# *Some* games might not like that (only known case so far is System Shock 2).
_proton_force_LAA="true"
# Set Pulseaudio latency to 60ms - Can help with sound crackling issues on some configs
_proton_pulse_lowlat="false"
# Enable the use of winelib steam.exe to launch games that checks if Steam is running such as Assetto Corsa - Only works with a Wine 4.0+ base
# Will disable "server-Desktop_Refcount" and "ws2_32-TransmitFile" patchsets on staging past 4e7071e4 (4.7+)
_proton_use_steamhelper="true"
# Set to true to disable proton's steamclient lib substitution. Allows running windows steam client in proton (only affects 4.19+)
# ! This will prevent most Steam games to run directly from proton - You only want to use this as a secondary build for non-steam games or running windows steam/games from windows steam !
_steamclient_noswap="false"
# Enable Winetricks prompt on game launch - Will use your system winetricks, so you need it installed
_proton_winetricks="false"
# Enable DXVK's async pipecompiler on a compatible DXVK build. Also known as the "poe hack", that option *could* be unsafe regarding anticheats, so beware !
_proton_dxvk_async="false"
# DXVK options
# hud : https://github.com/doitsujin/dxvk#hud
# configfile : https://github.com/doitsujin/dxvk/wiki/Configuration#configuration-file
_proton_dxvk_hud=""
_proton_dxvk_configfile=""
# COMPILER/BUILD OPTIONS
_EXT_CONFIG_PATH=~/.config/frogminer/proton-tkg.cfg
_LOCAL_OPTIMIZED="true"
_GCC_FLAGS="-pipe -O2 -ftree-vectorize"
_LD_FLAGS="-pipe -O2 -ftree-vectorize"
_CROSS_FLAGS="-pipe -O2 -ftree-vectorize"
_CROSS_LD_FLAGS="-pipe -O2 -ftree-vectorize"
_NUKR="true"
_NOCOMPILE="false"
_NOINITIALPROMPT="false"
# Set to a desired additional tag to differentiate builds
_PROTON_NAME_ADDON=""
# WINE FLAVOUR SETTINGS
# Set to the path of a custom wine source repo if desired (i.e. https://github.com/ValveSoftware/wine). Leave empty to use official wine source.
# Use the _plain_version option to target a specific commit for this source
# ! Make sure to disable staging if your source isn't compatible with it or it will fail to apply !
_custom_wine_source=""
_use_esync="true"
_use_fsync="true"
# Add a configurable spin count to fsync - might help performance but can introduce stability issues/hanging. Try setting WINEFSYNC_SPINCOUNT=100 envvar
_fsync_spincounts="false"
_plain_version=""
_plain_mirrorsrc="true"
# Sets custom configure-args for 64-bit, separated by a space (example: "--without-mingw --with-vkd3d")
_configure_userargs64="--with-x --with-gstreamer --with-xattr"
# Sets custom configure-args for 32-bit, separated by a space (example: "--without-mingw --with-vkd3d")
_configure_userargs32="--with-x --with-gstreamer --with-xattr"
_use_staging="true"
_staging_version=""
# You can set _use_dxvk to either "prebuilt" (for builds made with dxvk-tools for example), "release" (using github's latest) or "false" (disabled)
# Setting it to "true" will default to "release"
_use_dxvk="release"
_dxvk_dxgi="true"
_dxvk_version=""
_dxvk_async="false"
# You can set _use_d9vk to either "prebuilt" (for builds made with dxvk-tools for example), "release" (using github's latest) or "false" (disabled)
# Setting it to "true" will default to "release"
_use_d9vk="release"
_d9vk_version=""
_use_vkd3d="false"
# pba - Enable with PBA_ENABLE=1 envvar, force-disabled on 3.19 & higher due to known broken state
_use_pba="true"
# legacy gallium nine - This is only available for 4.1-devel (prior to e24b162) and older wine versions - Use nine standalone instead for newer wine
_use_legacy_gallium_nine="false"
# GAME-SPECIFIC PATCHES
_warframelauncher_fix="true"
_ffxivlauncher_fix="false"
_f4skyrimse_fix="false"
_fortnite_fix="false"
_sims3_fix="false"
_mtga_fix="false"
_mwo_fix="false"
_childwindow_fix="true"
_lol920_fix="false"
_OW_fix="true"
_assettocorsa_hudperf_fix="false"
_staging_pulse_disable="false"
_server_send_hwmsg_disable="true"
_318python_fix="true"
# Fix for Mortal Kombat 11 - Requires staging, native mfplat (win7) and a different GPU driver than RADV - Enable with the WINE_LOW_USER_SPACE_LIMIT=1 envvar
_mk11_fix="true"
# ! _re4_fix="true" requires _wined3d_additions="false" or it will get ignored !
_re4_fix="false"
# OTHER PATCHES
_CSMT_toggle="true"
_GLSL_toggle="false"
_MIME_NOPE="true"
_steam_fix="true"
_lowlatency_audio="false"
_launch_with_dedicated_gpu="false"
_clock_monotonic="true"
_FS_bypass_compositor="true"
_proton_fs_hack="true"
_plasma_systray_fix="false"
_large_address_aware="true"
_stg_shared_mem_default="false"
_proton_mf_hacks="true"
_proton_rawinput="true"
# Sets the value of an additional fake refresh rate in virtual desktop mode. Leave empty to keep default.
_fake_refresh_rate=""
# Enforce mscvrt Dlls to native then builtin - from Proton - Can be detrimental on 4.3+
_msvcrt_nativebuiltin="true"
# USER PATCHES
# community patches - add patches (separated by a space) of your choice by name from the community-patches dir - proton-tkg uses wine-tkg-git patches dir
# example: _community_patches="amdags.mypatch GNUTLShack.mypatch"
_community_patches=""
_user_patches="true"
_user_patches_no_confirm="false"
@Zerodya
Copy link

Zerodya commented Mar 14, 2024

SpecialK works for me, with FPS uncapped, but with a few issues. What I did:

  • protontricks 524220 vcrun2015
  1. Download SpecialK archive stable, and extract it
  2. Move SpecialK64.dll from the archive to the game root directory, and rename it to dinput8.dll
  3. Download dinput8.ini and FAR.ini from this gist, and move them to the game root directory
  4. Start Nier with the following launch command: WINEDLLOVERRIDES="dinput8.dll=n,b" %command%
  5. To make uncapped FPS work, I think I also had to:
    5a. In game settings, go to Screen and set Screen Mode to Fullscreen
    5b. In SpecialK settings (Ctrl+Shift+Back), go to Display, enable Fullscreen Mode and tick Force Override

Now for the issues, game starts with fps uncapped then just drops to 0fps after the first boot screen. Switching to a different workspace and then back to the game workspace makes the game work with uncapped fps again ...until the next loading screen.

Basically every time there is a loading screen in the game, I need to switch workspace back and forth to continue playing. Not sure if this is related to my compositor or not, I use Hyprland wm.

@alexou2
Copy link

alexou2 commented May 1, 2024

I can only launch the game on the first try after applying the far mod. when I try to launch the game a second time, steam will tell me that the game is running and when i try to stop the game via steam, it will just say "stopping" until i kill the game manually. The forst time I launch the game after applying the mod, every thing works great and the menu doesn't crash when using ctrl+shift+backspace. I run kubuntu 23.10(its been causing problems with other things) and i use protontricks from apt. How do i fix this?
Edit: the game will launch if i rename dinput8.dll

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment