Nro2Nsp Switch

From GameBrew
Nro2Nsp
Nro2nspnx.png
General
AuthorRoot-MtX
TypeEmulation and Forwarders
Version3.3.6-beta4
LicenseMixed
Last Updated2020/02/21
Links
Download
Website
Source

An easy to use NSP builder for Redirection or internally built NSPs using NROs and now Retroarch Rom forwarders.

User guide

See Usage and Credit.

Requirements - PC

Switch Keys File:

A key file (keys.dat, prod.keys, keys.txt) is required to build the nsp. This file is to added to either:

  • ./Nro2Nsp/Resoures/ folder, or to
  • "DriveLetter":/Users/"username"/AppData/Roaming/Nro2Nsp/", or
  • defined in the Custom Key Path within the settings menu.

The order of priority for loading keys file is: 1.Resources folder 2. Declared Custom Key path from settings 3. Appdata folder.

The required keys are:

  • master_key_0X - X is dependent on what Key Generation is set in Settings Menu (see key generation chart below)
  • header_key
  • key_area_key_application_source
  • aes_kek_generation_source
  • aes_key_generation_source
Key Generation List:
* Keygen 1 (1.0.0 - 2.3.0) - master_key_00
* Keygen 2 (3.0.0)         - master_key_01
* Keygen 3 (3.0.1 - 3.0.2) - master_key_02
* Keygen 4 (4.0.0 - 4.1.0) - master_key_03
* Keygen 5 (5.0.0 - 5.1.0) - master_key_04
* Keygen 6 (6.0.0 - 6.1.0) - master_key_05
* Keygen 7 (6.2.0)         - master_key_06
* Keygen 8 (7.0.0 - 8.0.0) - master_key_07

Windows Users:

Mac/Linux Users:

Requirements - Switch

Custom Firmware:

You'll will need to be running a cfw in order to install these nsps, there is currently 3 cfw to choose from:

  • Atmosphere - Requires es and fs patches (can be found here).
  • ReiNX - Does not currently support 7.x.x and newer.
  • Sxos - Requires paid license and does not currently support 7.x.x and newer.

Title Installers:

You will need a title installer to install the Nsp, there is a couple of different options to choose from and results may differ between users:

  • Original Tinfoil - Fast and easy to use, no longer being developed and does not work on 7.x.x or higher
  • Dz/Tinfoil - More advanced title installer, requires you to use the install unsigned code option and input the Konami code.
  • Goldleaf - Multitool installer, current releases do not support 7.x.x or newer but nightlies will work.
  • Lithium - Simpler and faster version of Dz/Tinfoil, easier for the end user. Requires you to use the insall unsigned code option and input the Konami code.
  • SxInstaller - Sxos cfw verison of the installer, will require sxos cfw to use.

How to use

Windows:

  • Double click the Nro2Nsp.exe executable.

Mac/Linux:

  • Open terminal.
  • cd to folder location (e.g. cd Desktop/Nro2Nsp)
  • Then type sudo mono --arch=32 ./Nro2Nsp.exe
  • Linux users report that --arch=32 is not supported and not needed.
  • Mono will take some time to build the first time, just be patient.

You should now have the app launched and should be greeted with a window that looks like the screenshot above. Check out the settings button on the lower right to configure the settings to your needs. See Settings for a breakdown on the available options.

Main App Window

Field/Option Purpose
App Name The Name that youd like displayed for the app.
Title Id This is the application id and needs to be different per each application with the format of 05XXXXXXXXXX0000
Author Fill this in with the name of the author
Version Fill this with what you want the version to show
Icon Box This will be what you see on the switch, see below for format options

ex:

    AppName:  TestApp
    Title Id: 05000F2300000000    
    Made by:  MtX         	
    Version:  1.0.0

Icons

  • Above the icon you will see "Icon Database" this will link you to a github folder of icons from the community.
  • To import your own click the icon box and select the icon.
    • Supports 256x256 .jpg.
    • Other popular formats and resolutions will be converted automatically, but can cause image degradation.
    • You can even load an existing .nro to to use that apps icon.

Forwarding Section

There are 2 different types of forwarders:

  • Standard Nro Forwarder - for use with homebrew applications.
  • Title Id - for use with retroarch game roms for using through the retroarch emulator core.

Standard Nro Forwarder:

  • There are two different options here that require typing out the full path to the /nro file location on the SD card. For example: /switch/my_homebrew.nro
  • Note: Paths must be exact (case sensitive) and will throw a system error if theres no mathing .nro/rom.

sdmc - For loading an nro from an sd path, Nsp does not contain the nro, it only points to it. ex:

sdmc: /switch/tinfoil/tinfoil.nro    

romfs - For building nro internally of thr nsp, pick your nro and it should do the rest. This option does not need tinfoil on the sd card but this option has limited compatibility at this time. ex:

romfs: /tinfoil.nro 

Retroarch Rom Forwarder:

  • For this you'll need to fill out both boxes, Core Path and Rom Path.
  • There is a predefined list for retroarch cores and rom paths. You can edit these to add cores or change your rom paths, see XML Editing.

Set core path - Path to the core to load for the rom, ex:

sdmc:  /retroarch/cores/snes9x_libretro_libnx.nro

Rom Path - Path to the Rom to load, ex:

sdmc:  /roms/Snes/Super Mario World.smc

Final step

  • Click the compile Button.
  • Wait for compiling to finish.

If successful then the NSP should be built in the ./Nro2Nsp folder as Appname_[TitleId].nsp, if the build failed please see Troubleshooting for help.

Settings

Preset Author - If this is in enabled the program will automatically populate the Author Textbox when the application is launched, this is useful if the same Author will used for multiple builds

Rolling Title Id - If this is in enabled you'll need to first set the base title id you'd like the use. (ex: 05021F10000000). After each successful build the application will automatically increase the title id by one for you next build (ex: 05021F10010000).

Preserve Data - If this is in enabled then the Nca, Exefs, Romfs, and control data will be saved after building. This data will be saved to the Nro2Nsp Folder.

Set Key Generation - This allows you to change the key generation used to build the nsp, this will also dictate which master keys are required in you keys file. Lower key generations will work on higher firmwares but higher key generations will not work on lower firmwares

  • Keygen 1 (1.0.0 - 2.3.0) - Masterkey 0
  • Keygen 2 (3.0.0) - Masterkey 1
  • Keygen 3 (3.0.1 - 3.0.2) - Masterkey 2
  • Keygen 4 (4.0.0 - 4.1.0) - Masterkey 3
  • Keygen 5 (5.0.0 - 5.1.0) - Masterkey 4
  • Keygen 6 (6.0.0 - 6.1.0) - Masterkey 5
  • Keygen 7 (6.2.0) - Masterkey 6
  • Keygen 8 (7.0.0 - 7.0.1) - Masterkey 7

Enable Beta Build - If this is in enabled then the program will check for new version of the application on startup and include beta builds, these contain the newest features but may contain some minor bugs. This is enabled by default.

Skip Current Update - This gets enabled if you click "Skip this update" on an update notification. You'll no longer be notified of this update version.

Custom Keys Path - Use this option to load your keys file from the location you define.

Export Settings File - Clicking this will save all your defined settings to a Settings.xml, this can be loaded by placing it in the ./Resources/ folder and will overwrite other settings.

Theme Menu - This is just a basic theming tool for the app to change as you'd like. Use the reset all button to revert to default.

Logo Menu - This menu lets you change the startup animation logo and gif on the switch when the application is launched. Check out the "logo" folder in the "resources" folder for some amazing community logos. There's a couple of basic options in here:

  • No logo - Just shows a black screen with no startup animations
  • Set as default - If not checked the logos will only be used for this application cycle, if true these will be saved for all builds
  • Reset all - This just reverts everything back to the deaults

The recommended sizes for these icons are:

  • Logo - 160x40 PNG
  • Animation - 256x80 PNG

XML Editing

Cores.xml - Preset core list for retorarch with paths

  • layout ex:
<details>
 <core>
  <name>Nintendo - Quicknes</name> 
   <path>/retroarch/cores/quicknes_libretro_libnx.nro</path>
   <show>true</show>
 </core>
<core> 
  <name>Super Nintendo - Snex9x</name> 
  <path>/retroarch/cores/snes9x_libretro_libnx.nro</path> 
  <show>true</show>
 </core>
</details>
  • name: Name of core
  • path: Path to the core
  • show: If set to anything but true it will be hidden

paths.xml - Preset rom path for where system roms are located

  • layout ex:
<details>
 <system>
  <name>Super Nintendo</name> 
  <path>/roms/Snes/</path>
  <show>true</show>
 </system>
 <system>
   <name>Nintendo 64</name> 
   <path>/roms/N64/</path>
   <show>true</show>
 </system>
</details>
  • name: Name of the System
  • path: Path to the rom directory per system
  • show: If set to anything but true it will be hidden

Troubleshooting

For some reason things go side ways take a look through here for common errors! The most useful tool here is the "log.txt" i the "Resources" folder.

  • If you're getting an error "234C02" when installing, then your cfw patches are wrong/missing.
  • If Dz/Tinfoil says its installing but nothing happens then update Dz/tinfoil as there was a fix for this.
  • If Building fails then its usually due to a keys file error, verify keys and check the log
  • If using romfs and you get a system crash when launching then try the sdmc option, some nros arent compatible with romfs at this time
  • If you get a popup saying either nro missing from path, rom missing from path, or core missing from path, then your item cannot be found at your defined path. Double check your paths.

Special notes

  • If you're getting an error "234C02" when installing, then your cfw patches are wrong/missing.
  • To load Meta information from .nro automatically, load the .nro by clicking "romfs" and choose yes. This will automatically load all the information from the .nro. If you want to use sdmc then select "sdmc" after and use as normal.
  • You can load meta information by loading an .nro from the icon box.
  • Some nros are not working with romfs (old tinfoil, dOPUS) use sdmc for those for now.
  • Title ids now follow (05xxxxxxxxxx0000) format.
  • Mac and linux may experiance bugs or weird issues due to mono.
  • First launch may take a while to load if using mono, be paitent / ui looks less pleasing as well.

Screenshots

nro2nspnx3.png
nro2nspnx2.png

Changelog

v3.3.6 Beta 4

  • Fixed error with keys with lowercase letters being flagged as invalid.
  • Fixed unrelated error message being displayed in some cases.
  • Fixed App crashing if no key files are found.
  • Add new information to logs to help debug issues.

v3.3.6 Beta 3

  • Added "logo" and "animation" paths to core.xml for use to automatically set logs per core platform.
  • (Feature Request) Added Auto set logos in logo menu -- see above.
  • (Feature Request) If "Preset Author" is set to "core" in the settings menu then author box will be set to selected retroarch core platform.
  • These are experimental, please report any bugs and any updates to cores.xml needed.

v3.3.6 Beta 2

  • Fixed Rolling TitleId error.
  • Improved Failed build error message.
  • Fixed extra files being saved to pc.
  • Added Keyfile checks with Value Compare (experimental).
  • Updated Key Generation Revisions.

v3.3.6 Beta 1

  • Added export forwarders as "Nros" (Note you'll need to use Title Override for titles that require more ram).
  • Added Setting to allow official TitleId range, Use with caution to avoid conflicting ids (Allows Hid-mitm).

v3.3.5

Things added since Beta:

  • Recompiled for 9.0.0 (note nros forwarded to must be recompiled for 9.0.0 as well).

Things added in Betas:

  • Special thanks to Liam and LeMageFro for testing and vast knowleadge.
  • Added warning about romfs compatibility.
  • Fixed "Keyfile" missing error.
  • Fixed Nro data import repeating error messages.
  • Updated hacpackbrew.
  • Updated Nstool (requires visual studio C++ 2015).
  • Appears to have fixed could not start software error.
  • Removed savedata allocation.
  • Added gif size warning message if greater than 60kb.
  • Added UnquailifiedApproval flag in ndpm (Thanks Liam).
  • Fixed KernalPermisson.
  • Fixed rror due to file permissions.
  • Adjusted npdm to prevent save data allocation.
  • Started custom npdm/nacp creation framework (to be completed).
  • Refractoring.

v3.3.4

  • Changed icon conversion again with option to disable conversion, should fix ? icons.
  • Changed working directory/folder permissions.
  • Added Message for settings import is using for the first time.
  • Revamped dialog boxes.
  • Added psp core and rom paths.
  • Improved logger for troubleshooting.
  • Fixed error with spacing in paths.

v3.3.3

  • Fixed "no logo" enable checkbox stuck enabled.
  • Removed settings locations and replaced with export/import settings.
  • Fixed crash when using application defaults.
  • Changed image conversion to prevent quality loss on non jpeg images and non 256x256 images.
  • Added image color checks to prevent "?" icon.
  • Added Custom Message Box with theme support.
  • Updated icon database.

v3.3.2 Stable

  • Added "Custom Keys Path" to load keys from your own path.
  • Fixed keys file missing error from Resources folder.
  • (Keys.dat, Keys.txt, and prod.keys) now all supported.
  • Added Help icons on main page and settings page for help with use/settings.
  • Added "Key Generation" setting in Settings menu.
  • Added LinkLabel theming.
  • Fixed "Settings.xml" loading error.
  • Added "Icon Database" LinkLabel to community collection link.
  • Removed "Old Style Title Id" From setings.
  • Updated Keys Template file.
  • Added delcared path checking on the app side.
  • Plus the addtion of the following beta features.

v3.3.2 Beta 4

  • Added basic theming.
  • Added settings.xml that will export saved settings so saved values will not need to be changed each update.
  • Settings will be saved to /user/appdata/roaming/Nro2Nsp/settings.xml if it fails to write there then.
  • it will be saved at ./Resources/setting.xml.
  • Settings will load from /user/appdata/roaming/Nro2Nsp/settings.xml or ./Resources/setting.xml.
  • (./Resources/ takes priority).
  • Added export settings link in settings menu.
  • Fixed default rom paths.xml to follow Retroarch Ultimate Pack (Credits: jnackmclain).
  • Even more Logos (Credits: JAS, jnackmclain, Jafece).
  • Added [] around title id for use with nut gui.
  • keys.dat can be loaded from ./Resources/ folder or Drive:/Users/user/AppData/Roaming/Nro2Nsp/.
  • (./Resources/ takes priority).

v3.3.2 Beta 3

  • Fixed Hbmenu Forwarder would crash when exiting a loaded nro.
  • Fixed Logs deleting/missing build information.
  • Added more logos in logo folder (Credits: JAS, jnackmclain, Jafece).
  • Fixed Logo error when build failed and another build was attempted.
  • Minor stabilty tweaks.

v3.3.2 Beta 2

  • Changed "set logos as default" to a check box instead of a diaglog box.
  • "No logo" option now sets icons to black in logo menu.
  • Code clean up.
  • Small changes to update notifications.

v3.3.2 Beta 1

  • Added application update notifcations with downloading (beta/stable setting - beta is enabled by default).
  • Fixed Icon loss of quality even if conversion isnt required.
  • Can import .nro data from Icon box now (either icon only or icon and all meta).
  • Added changelog option with update notification.
  • Added Logo Menu in settings.
  • Added version checks.
  • Various loggger additions.
  • Added Logos to Logo folder (Credits: JAS, jnackmclain, Jafece).

v3.3.1

  • Removed Popup for Select User Account.
  • Stability Improvements.

v3.3.0

  • Fixed lockup when selecting (+) on forwarder nro when loaded in the background.
  • Devkitpro no longer needed (Thanks Natinusala).
  • Retroarch rom forwarders now supported (Thanks Natinusala).
  • Tweaks to NACP and NPDM building.
  • Added core database (./Resources/cores.xml).
  • Added rom path database (./Resources/pahts.xml).
  • Fixed directory cleaning.
  • Fixed special characters displaying as (?) -- Limtied to Switchs Character Library.
  • Fixed crash if icon was set and then an icon was loaded from a .nro.
  • Will only clear the icon if build is successful.
  • Fixed rolling id would count when build failed.
  • Custom error handling, no more crashes for incorrect paths (Nothing fancy but you shouldnt normally see this).

v3.2.2

  • Added: Title Ids changed to 05xxxxxxxxxx0000 format.
  • Fixed: Rolling Id adjusted to new id format.
  • Added: Randomize Title id button added.
  • Added: Auto import .nro icon, app name, author, and version.
  • Fixed: .netframework error certain people were experiancing.
  • Fixed: some settings being set by default.
  • Fixed: Removed (MtX) tag from author.

Credits

Thanks And Credits to these fine folks:

  • "Natinusala" for differnt approach of hbl to work with Retroarch/forwarders.
  • "Switchbrew" for the hblauncher source.
  • "The-4n" for Hacbrewpack, and the Atmosphere patches listed here.
  • "alexzzz9" for the hblauncher source and providing useful help.
  • "jakcron" for Nstool for extracting nro info.
  • The OG WarezNx Discord crew R.I.P.
  • JAS, jnackmclain, Jafece for being logo masters and providing logos to use.
  • "chronoss", "kevinbrew", "jnackmclain", "Jafece", and "Broduskii" for the icons in order to make an icon database.

External links

Advertising: