ReverseNX - Flag your console as handheld or docked

ReverseNX_logo_transparent_v4.png

ReverseNX

Combination of SaltyNX patches that force games to think that you are using docked or handheld mode.

You can use it to change graphics settings and unlock some options that are available only in docked/handheld mode. For now in experimental phase, because SaltyNX has many bugs that need to be patched.

To download latest SaltyNX, check links at the end of post.

_____________

To use ReverseNX, you need to use ReverseNX-Tool which can be downloaded at the end of this post. Check readme in repo to learn how to use it.


When forcing docked mode, it is recommended to use OC settings exactly as used in docked mode:
Code:
handheld_charging_gpu=768
handheld_charging_mem=1600

______________

Known issues:
  • SaltyNX is still under development, so it may cause issues on it's own. More in SaltyNX repo.
______________

Thanks to @Kirby567fan and @crow132 for testing.
To @RattletraPM for logo.
To @SunTheCourier for sys-clk Editor on which I have based ReverseNX-Tool >=2.0.0
To Borealis contributors for Borealis which I'm using from 3.0.0
______________

ReverseNX-Tool

github repo: https://github.com/masagrator/ReverseNX-Tool
Releases: https://github.com/masagrator/ReverseNX-Tool/releases

____________

SaltyNX
github repo: https://github.com/masagrator/SaltyNX
Releases: https://github.com/masagrator/SaltyNX/releases

 
Last edited by masagrator,

tariqeren

Member
Newcomer
Joined
Feb 28, 2020
Messages
9
Trophies
0
Age
34
XP
50
Country
Austria
I can't boot any games after updating the last version and injecting SaltyNX. How can I change everything back? I want to delete it.
 

blawar

Developer
Developer
Joined
Nov 21, 2016
Messages
1,708
Trophies
1
Age
40
XP
4,311
Country
United States
It injects itself to every currently working app which titleid is higher than 010000000000FFFF. So if you are using nsp forwarder for tinfoil, then yes - tinfoil may crash because of that. And I'm not willing to help in that matter.

Your application has a bug, you should only be injecting into the valid title range 010000000000FFFF through 01FFFFFFFFFFFFFF
 

blawar

Developer
Developer
Joined
Nov 21, 2016
Messages
1,708
Trophies
1
Age
40
XP
4,311
Country
United States
More like 0100000000010000 - 01FFFFFFFFFFE000.
Well, this is not hard to change.

I mean if we’re trying to be extremely specific, it would likely be 01FFFFFFFFFFEFFF as multi content title ids can increment higher than 000. They usually go up by 1: 000, 001, 002, etc :)
 

Grant717

New Member
Newbie
Joined
Mar 2, 2020
Messages
1
Trophies
0
Age
46
XP
33
Country
Australia
Hi.
It is really awesome tool for low quality handheld games.
Thank you for release this program
@masagrator you are my hero!!
Anyway, I have some problem.
When I play some games (naruto ninja storm 2, civilization) with dock flag, It continuously pop-up joycon connection screen as joycon attached console.
How can I avoid this situation?
 
Last edited by Grant717,

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,257
Trophies
3
XP
12,006
Country
Poland
Hi.
It is really awesome tool for low quality handheld games.
Thank you for release this program
@masagrator you are my hero!!
Anyway, I have some problem.
When I play some games (naruto ninja storm 2, civilization) with dock flag, It continuously pop-up joycon connection screen as joycon attached console.
How can I avoid this situation?
This is how game was designed to work in dock. Only solution would be to find a function in main and rewrite code to ignore it. But I don't know which SDK function is responsible for it.
 

nobuslayer88

Member
Newcomer
Joined
Jan 25, 2020
Messages
6
Trophies
0
Age
34
XP
46
Country
United States
No matter what I do, I can't get it to work anymore. Yes I've read the readme. I've gotten this to work before. I just tried for like 5 hours, thinking I made some mistake. I've researched and read every page of this forum. Originally I was on Atmosphere 0.10.2 and used Hekate 5.1.1 along with ReverseNX-Tool 1.3. I believe and ReverseNX 0.33. I updated to the latest ReverseNX and Salty SD along with trying older versions, updated Atmosphere to 0.10.3 and tried both Hekate 5.1.1 and 5.1.2, but it just doesn't work. Originally, the nsp method did not work at all. So I used kip method and edited the hekate config file. Now nothing works, kip or nsp. I tried all the corresponding releases of Reverse NX and Nx-Tool. Is this error on my end or did something break with Atmosphere update? I can't even get a log to appear when using kip method and once again, nsp method always crashes any game saying the software must be closed. I plan on making a nand backup and restoring to an earlier version in order to use an earlier version of Atmosphere to test it out. In the meantime, help would be appreciated.


EDIT: Fixed! Small mistakes. I don't exactly know which extra file was the problem, but it was a file within SaltySD that caused it to crash. I deleted ReverseNX.elf and docked.flag in the root of the plugins folder.
 
Last edited by nobuslayer88,

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,257
Trophies
3
XP
12,006
Country
Poland
EDIT: Fixed! Small mistakes. I don't exactly know which extra file was the problem, but it was a file within SaltySD that caused it to crash. I deleted ReverseNX.elf and docked.flag in the root of the plugins folder.

Sooo... You have deleted ReverseNX to make ReverseNX work... That seems legit.
 

KyleXY27

Active Member
Newcomer
Joined
Oct 14, 2019
Messages
39
Trophies
0
Age
34
XP
140
Country
Philippines
Somehow.. after updating to fw 9.2 and atmosphere 0.10.3.. ReverseNX doesn't seem to be working. I'm playing Valkyria Chronicles and it says it was injected properly. Selected dock global flag but after booting the game I don't see any differences with handheld mode.
 

1basti1

Well-Known Member
Member
Joined
Jun 30, 2019
Messages
215
Trophies
0
Age
33
XP
953
Country
Germany
Hi, I tried it several times to get it to work... Im on 9.1.0 and latest atmosphere.

I have the reversenx tool nro and have the latest reversenx.elf in saltysd plugins folder (+reversenx folder with docked.flag)
I keep getting "SaltyNX is not injected"

I also use your FPS counter, it works fine. (its also using saltynx :( )


Edit: FPS Counter doesnt work now with all these reversenx files.

I didnt deleted the log, so there is probably some infos you dont need, but oh well.
I deleted ReverseNX completly before extracting this log.
SaltySD: cmd 1 handler, proc handle 158006, heap 44f7e77000, path NX-FPS.elf
SaltySD: loading sdmc:/SaltySD/plugins/NX-FPS.elf, size 0x13f80
SaltySD: Search for size d000
SaltySD: Found free address space at 18bea0000, size d000
SaltySD: cmd 1 handler, proc handle 190005, heap 44f7e84000, path ReverseNX.elf
SaltySD: loading sdmc:/SaltySD/plugins/ReverseNX.elf, size 0x209d0
SaltySD: Search for size 19000
SaltySD: Found free address space at c47d5e000, size 19000
SaltySD Core: Searching plugin dir `010075000c608000/'...
SaltySD Core: 3 0->f7869a5e0 SaltySDCore_fopen
SaltySD Core: 4 0->0 __libnx_exception_handler
SaltySD Core: 5 0->f7869a670 SaltySDCore_fwrite
SaltySD Core: 6 0->f7869ac90 SaltySD_printf
SaltySD Core: 7 0->f7869c0b0 SaltySDCore_ReplaceImport
SaltySD Core: 8 0->28f5e849b0 _ZN2nn2os13GetSystemTickEv
SaltySD Core: 9 0->0 __deregister_frame_info
SaltySD Core: a 0->0 _ITM_registerTMCloneTable
SaltySD Core: b 0->f7869a600 SaltySDCore_fclose
SaltySD Core: c 0->0 _ITM_deregisterTMCloneTable
SaltySD Core: d 0->28f61c8500 nvnBootstrapLoader
SaltySD Core: e 0->0 __register_frame_info
SaltySD Core: f 0->0 eglSwapBuffers
SaltySD Core: 4 0->0 __libnx_exception_handler
SaltySD Core: 9 0->0 __deregister_frame_info
SaltySD Core: e 0->0 __register_frame_info
NX-FPS: alive
SaltySD Core: 491dd nvnBootstrapLoader to 0x18bea06a0, 2172978 0x28f3176978
SaltySD: cmd 3 handler, memcpy(28f24f8d08, 7203d25bf8, 18)
NX-FPS: injection finished
SaltySD Plugin: jumping to 0xf7869c3ac
SaltySD Core: 3 0->f7869a690 SaltySDCore_mkdir
SaltySD Core: 4 0->f7869a5e0 SaltySDCore_fopen
SaltySD Core: 5 0->0 __libnx_exception_handler
SaltySD Core: 6 0->f7869ac90 SaltySD_printf
SaltySD Core: 7 0->f7869a660 SaltySDCore_remove
SaltySD Core: 8 0->f7869c0b0 SaltySDCore_ReplaceImport
SaltySD Core: 9 0->0 __deregister_frame_info
SaltySD Core: a 0->0 _ITM_registerTMCloneTable
SaltySD Core: b 0->f7869a600 SaltySDCore_fclose
SaltySD Core: c 0->0 _ITM_deregisterTMCloneTable
SaltySD Core: d 0->f7869a440 SaltySDCore_getCodeStart
SaltySD Core: e 0->0 __register_frame_info
SaltySD Core: 5 0->0 __libnx_exception_handler
SaltySD Core: 9 0->0 __deregister_frame_info
SaltySD Core: e 0->0 __register_frame_info
SaltySD ReverseNX: alive
Docked global flag detected. Applying docked graphics settings.
SaltySD Core: 4921b _ZN2nn2oe18GetPerformanceModeEv to 0xc47d5e920, 2172b68 0x28f3176b68
SaltySD: cmd 3 handler, memcpy(28f24f92d8, 7203d259f8, 18)
SaltySD Core: 49239 _ZN2nn2oe16GetOperationModeEv to 0xc47d5e930, 2172c58 0x28f3176c58
SaltySD: cmd 3 handler, memcpy(28f24f95a8, 7203d259f8, 18)
Setting GetOperationMode: 1
Setting GetPerformanceMode: 1
SaltySD Spawner: got SD card
SaltySD Spawner Start
SaltySD Spawner: got handle 20003 for process
Spawner: SaltySD (pid 86) asked for handle sdcard
SaltySD: new max 86, c7880 0000001800213d90
SaltySD: svcGetDebugEventInfo returned e401, breaking
Spawner: Goodbye.
SaltySD: new max 87, 0 0000001800213d90
SaltySD: found AttachProcess event:
tid 0104444444441001 pid 0000000000000087
name hbmenu
isA64 1 addrSpace 1 enableDebug 1
enableAslr 1 useSysMemBlocks 1 poolPartition 0
exception 0000000000000000
SaltySD: debug event 4, passing...
SaltySD: svcGetDebugEventInfo returned 8c01, breaking
.text to 1f600000, .data to 1f611000
SaltySD: cmd 1 handler, proc handle b0005, heap c92000000, path saltysd_core.elf
SaltySD: loading sdmc:/SaltySD/saltysd_core.elf, size 0x599a0
SaltySD: Search for size 77000
SaltySD: Found free address space at 576626000, size 77000
SaltySD Core: restoring code...
SaltySD: cmd 2 handler
SaltySD: cmd 4 handler
SaltySD Core: got SD card handle 20002
SaltySD: cmd 3 handler, memcpy(1f6073fc, 5a142ba8, 4)
SaltySD: cmd 3 handler, memcpy(1f607400, 5a142bc0, 10)
SaltySD: cmd 3 handler, memcpy(1f6074d4, 5a142ba8, 4)
SaltySD: cmd 3 handler, memcpy(1f6074d8, 5a142bc0, 10)
SaltySD Core: Searching plugin dir `'...
SaltySD: cmd 1 handler, proc handle 160006, heap c92077000, path NX-FPS.elf
SaltySD: loading sdmc:/SaltySD/plugins/NX-FPS.elf, size 0x13f80
SaltySD: Search for size d000
SaltySD: Found free address space at 4d7089000, size d000
SaltySD Core: Searching plugin dir `0104444444441001/'...
SaltySD Core: 3 0->5766265e0 SaltySDCore_fopen
SaltySD Core: 4 0->0 __libnx_exception_handler
SaltySD Core: 5 0->576626670 SaltySDCore_fwrite
SaltySD Core: 6 0->576626c90 SaltySD_printf
SaltySD Core: 7 0->5766280b0 SaltySDCore_ReplaceImport
SaltySD Core: 8 0->0 _ZN2nn2os13GetSystemTickEv
SaltySD Core: 9 0->0 __deregister_frame_info
SaltySD Core: a 0->0 _ITM_registerTMCloneTable
SaltySD Core: b 0->576626600 SaltySDCore_fclose
SaltySD Core: c 0->0 _ITM_deregisterTMCloneTable
SaltySD Core: d 0->0 nvnBootstrapLoader
SaltySD Core: e 0->0 __register_frame_info
SaltySD Core: f 0->0 eglSwapBuffers
SaltySD Core: 4 0->0 __libnx_exception_handler
SaltySD Core: 9 0->0 __deregister_frame_info
SaltySD Core: e 0->0 __register_frame_info
NX-FPS: alive
NX-FPS: injection finished
SaltySD Plugin: jumping to 0x5766283ac
 
Last edited by 1basti1,

masagrator

The patches guy
OP
Developer
Joined
Oct 14, 2018
Messages
6,257
Trophies
3
XP
12,006
Country
Poland
Because recently I found that one guy was doing stupid mistake, I will ask this:
You are using ReverseNX-Tool in applet mode or in title replacement mode (full RAM access)?
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    AncientBoi @ AncientBoi: :rofl2: +1