NTRLDR 3DS

From GameBrew
Revision as of 06:00, 1 February 2022 by HydeWing (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
NTRLDR
Ntrldr2.png
General
Authordr1ft/UTP, compiled by zacchi4k
TypeOther Apps
Version2019
LicenseMixed
Last Updated2019/01/17
Links
Download
Website
Source

NTRLDR is a homebrew that sets up NVRAM and chainloads firmware.nds on the 3DS.

It patches the NVRAM to make it be seen as valid by NDS firmware and bootstraps firmware.nds from the root of the filesystem. If it detects that the system is running in TWL mode, it will (try) to switch into NTR mode before loading. This is more of a novelty and it cannot boot NDS cartriges (you can read some of the technial details below).

Note: Do not use it on iQue NDS. Also not recommended to use it on NDS and DSi system, as it directly writes to flash/NVRAM which can brick your console.

Installation

Note: You will need to obtain your own firmware.nds in order to run this application.

Put ntrldr.nds to the nds folder of your SD card.

Place firmware.nds to /_nds/ntrldr/ and run it via TWiLight Menu++.

User guide

NVRAM patching

The reason that firmware.nds traditionally fails on the 3DS is because for some reason NVRAM reports one of the bits in the flag bytes of user settings as a 1, when the DS firmware expects that bit to be a 0.

We can write to NVRAM, but every time NTR mode is restarted this bit becomes a 1 again. As such, all we need to do to allow firmware.nds to boot is to flip that bit and correct the checksums in the user settings just prior to chainloading firmware.nds.

TWL to NTR mode switching

The NDS firmware does not know how to deal with the extra features provided by TWL mode (obviously).

The DMA register REG_SCFG_ROM is set to 0x703 to keep the firmware from crashing (this seems to cause the system to disable several TWL features) and writes are made to the TSC to switch it into NDS compatibility mode (see here) so that the firmware can understand the touch screen.

The TSC values is found by going through this code and trying different combinations of values until finding the correct ones.

Compatibility

Tested by the author under an NTR-mode flashcart (CycloDS iEvolution) and under TWL-mode nds-hb-menu (3DS SD). Also tested on N3DS.

It is warned not to use it on iQue NDS, iQue ones have a differently sized NVRAM so writing to the same offsets will write in the middle of a bunch of code and destroy the firmware.

Credits

Thanks to:

  • devkitPro Team (toolchain, libraries, .nds loader code).
  • Martin Korth (GBATEK).
  • Loopy/olimar (created firmware.nds).
  • Everyone in the NDS and 3DS scenes.

External links

Advertising: