Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

SaltyNX Switch: Difference between revisions

From GameBrew
No edit summary
Line 36: Line 36:
* Put this file either to <code>SaltySD/patches</code> to make it work for every game, or to <code>SaltySD/patches/*titleid*</code> to make it work for specific game.
* Put this file either to <code>SaltySD/patches</code> to make it work for every game, or to <code>SaltySD/patches/*titleid*</code> to make it work for specific game.


For additional functions you need [https://github.com/masagrator/SaltyNX-Tool SaltyNX-Tool].
For additional functions you need [[SaltyNX-Tool Switch|SaltyNX-Tool]].


===Plugin examples===
===Plugin examples===

Revision as of 01:01, 2 May 2023

SaltyNX
Saltynxswitch.png
General
Authormasagrator
TypePlugins
Version0.5.2
LicenseMixed
Last Updated2023/04/02
Links
Download
Website
Source
Support Author

SaltyNX is a process running in the background that allows for code injection and modification. It is utilized by various tools such as ReverseNX-Tool, ReverseNX-RT, and Status Monitor in conjunction with NX-FPS, UnityGraphics, and several Smash mods.

This is a based on shinyquagsire23's SaltyNX with includes many QoL improvements and beside plugins support also supports patches.

Installation

How to install:

  • Atmosphere >=0.10.1 - Put folders from archive to root of your sdcard.
  • Atmosphere <=0.9.4 and any other CFW - Rename contents folder to titles.
  • SX OS - Remember to rename atmosphere folder to sxos.
  • Remember to restart Switch.

No technical support for:

  • Atmosphere forks.
  • SX OS.
  • Kosmos.
  • ReinX.

User guide

Patches pattern

  • Filename is symbol of function with filetype .asm64.
  • Inside file write with hex editor instructions that you want to overwrite for this function.
  • Put this file either to SaltySD/patches to make it work for every game, or to SaltySD/patches/*titleid* to make it work for specific game.

For additional functions you need SaltyNX-Tool.

Plugin examples

Plugin source code examples:

List of titles not compatible with plugins/patches

Title plugins/all Why?
Alien: Isolation plugins Heap related
Azure Striker Gunvolt: Striker Pack all 32-bit game, not supported
Baldur's Gate and Baldur's Gate II: Enhanced Editions all 32-bit game, not supported
DEADLY PREMONITION Origins all 32-bit game, not supported
Dies irae Amantes amentes For Nintendo Switch all 32-bit game, not supported
Goat Simulator all 32-bit game, not supported
Grandia Collection all Only launcher is 64-bit, games are 32-bit
Grid: Autosport plugins Heap related
Immortals Fenyx Rising plugins Heap related
LIMBO all 32-bit game, not supported
Luigi's Mansion 3 plugins Heap related
Mario Kart 8 all 32-bit game, not supported
Mario Strikers: Battle League plugins Heap related
Megadimension Neptunia VII all 32-bit game, not supported
Moero Chronicle Hyper all 32-bit game, not supported
Moero Crystal H all 32-bit game, not supported
Monster Hunter Generations Ultimate all 32-bit game, not supported
New Super Mario Bros. U Deluxe all 32-bit game, not supported
Ni no Kuni: Wrath of the White Witch all 32-bit game, not supported
Olympic Games Tokyo 2020 – The Official Video Game™ plugins Heap related
Pikmin 3 Deluxe all 32-bit game, not supported
Planescape: Torment and Icewind Dale all 32-bit game, not supported
Stubbs the Zombie in Rebel Without a Pulse all heap related
Sherlock Holmes and The Hound of The Baskervilles all 32-bit game, not supported
Tokyo Mirage Session #FE Encore all 32-bit game, not supported
Valkyria Chronicles all 32-bit game, not supported
Witcher 3 GOTY (version 3.2) all heap related
World of Goo all 32-bit game, not supported
YouTube plugins Unknown

Titles other than 32-bit are added to exceptions.txt which is treated as Black list, you can find it in root of repo. SaltyNX reads it from SaltySD folder. X at the beginning of titleid means that this game will not load any patches and plugins.

32-bit games are ignored by default for patches and plugins.

Compatibility

Tests were done on FW 7.0.1-16.0.0 with Atmosphere up to 1.5.0.

Known issues

  • Instability with some homebrews and sysmodules (like emuiibo),
  • You need to have at least Hekate 5.0.2 if you don't want issues related to Hekate,
  • 32 bit games are unsupported,
  • Cheats using directly heap addresses may not work properly while using plugins,

Changelog

0.5.2

  • Fix RTLD detection for getBID() in older games like LA Noire.

0.5.1

  • Add function SaltySD_GetBID() to use with plugins to retrieve buildID of running game.
  • Fix bug that was causing SharedMemory to not clean up upon detection of game that is 32-bit or in exceptions.txt (fixes bug in homebrew reading SharedMemory, f.e. Status Monitor Overlay, FPSLocker and ReverseNX-RT). Thanks to ~cucholix for finding this bug and testing fix.

0.5.0

  • Add SharedMemory 4096B block to use with plugins.
  • SaltyNX is reserving 4096 byte block to use with any app. Default purpose is to allow exchanging data in real time between homebrew and plugins without using dmnt:cht/svcDebug

0.4.0a-hotfix

  • Fixed sm compability issues with Atmosphere 0.19.0+.
  • Thanks to SciresM for providing this fix - 2e0bd1d!

0.4.0a

  • Resolves issue with nonconsistent heap reserving.
  • FIFA 18-21 and Darksiders 2 are now working properly.
  • EDIT: It doesn't work correctly with M.16.2 (0.16.2 EXPERIMENTAL). Works on standard 0.16.2.

0.3.2a

  • Fix loading plugins from titleid folders ef8ff67.
    • It should now fix bug introduced from 0.3.0a with crashing plugins in Smash Bros and other games while using title specific plugins.
  • Include another exception - abort loading plugins if: titleid & 0x1F00 != 0

0.3.1a

  • Fixed rare case of crashing game when trying to load hbloader in title replacement mode by disabling bootstrap in this case.
  • 2MB fix reverted, as this was crashing Zelda BoTW.

0.3.0a

  • Add support for patches (more in readme).
    • Thanks to this it's possible to omit crashes with code injection if it doesn't need heap to work.

0.2.1a

  • Reduced RAM usage by 320kB.

0.2a

  • Ditched Spawner.
  • Rewrited Proc to be independent and now it's booted directly from CFW as sysmodule.
    • Thanks to this I could lower memory usage by 60 kB.
  • Added option to disable log writing (writing is enabled by default).
  • Added toolbox.json to bring correct support for sysmodules managers.
  • Because of ditching Spawner, KIP is not possible to use anymore. That's why we have now only one package using exefs.
  • saltysd_proc.elf from SaltySD folder is not used anymore, you can delete it.

0.2

  • Update solving compability issues with FW 10.0.0 for people using NSP.zip.
  • Issue is not existing for KIP, so you don't need to update anything if you are using it (appstore is using NSP.zip).
  • Delete folder 0100000000534C56 from contents/titles before updating.

0.1a 0.1.2a

  • Implement hack to resolve issues with cheats in Atmosphere.

0.1.1a

  • Now aborting bootstrapping if titleid is higher than 0x01FFFFFFFFFFE000.

0.1a

  • First Release.

External links

Advertising: