Nintendo 3DS "benutzerdefinierte Firmware"
LUMA3DS -Patches und -Rimplements Wichtige Teile der Systemsoftware, die auf allen Modellen der Nintendo 3DS -Konsolenfamilie ausgeführt wird. Ziel ist es, die Benutzererfahrung erheblich zu verbessern und das 3DS weit über das Lebensende hinaus zu unterstützen. Zu den Funktionen gehören:
LUMA3DS erfordert den Ausführen von Boot9Strap.
Sobald Boot9Strap installiert wurde, laden Sie einfach das neueste Release -Archiv herunter und extrahieren Sie das Archiv auf das Root Ihrer SD -Karte, um neben dem Homebrew -Menü und dem mit ihm versendeten Bündel von LUMA3DS zu "installieren". Ersetzen Sie vorhandene Dateien und fusionieren Sie bei Bedarf vorhandene Ordner.
Das Hauptmenü LUMA3DS -Konfiguration kann durch Drücken des SELECT SELECT AT SOT -BOOT zugegriffen werden. Die Konfigurationsdatei wird in /luma/config.ini
auf der SD -Karte gespeichert (oder /rw/luma/config.ini
auf der ctrnand -Partition, wenn luma3ds von der ctrnand -Partition gestartet wurde, die passiert, wenn SD -Karte fehlt).
Auf das Chainloader -Menü wird durch Drücken von Start beim Boot oder im Konfigurationsmenü zugegriffen. Die Nutzlasten werden voraussichtlich in /luma/payloads
mit der .firm
-Erweiterung angezeigt. Wenn es nur eine solche Nutzlast gibt, wird das oben genannte Auswahlmenü übersprungen. Hotkeys können der Nutzlast zugewiesen werden, z. B. x_test.firm
wird kettenlokiert, wenn X am Start gedrückt wird.
Das Overlay -Menü, Rosalina , verfügt über eine Standard -Taste -Kombination: L+Down+Select . Für größere Flexibilität werden die meisten Menüeinstellungen von Rosalina nicht automatisch gespeichert, daher die Option "Einstellungen speichern".
GDB-Anschlüsse sind bei aktivierter Weise 4000-4002
für die normalen Ports. Die Verwendung von attach
im Modus "Extended-Remote" wird neben info os processes
unterstützt und gefördert (zum Umkehrmotoring, auch monitor getmemregions
). Der Port für die Funktion "Break-on-Start" ist 4003
ohne "erweiterte Remote". Sowohl DevKitarm-Patched GDB als auch IDA Pro (ohne "aktiviert" aktiviert) werden aktiv unterstützt.
Wir haben ein Wiki, es ist jedoch derzeit sehr veraltet.
LUMA3DS besteht aus mehreren Komponenten. Während der Codestil in jeder Komponente größtenteils konsistent ist, wurden diese Komponenten über viele Jahre geschrieben und können möglicherweise nicht widerspiegeln, wie Wartenden neue Code in neuen Komponenten/Projekten schreiben würden:
Process9
-Code zu ändern und alle anderen benutzerdefinierten Komponenten zu injizieren. Dies war die erste Komponente, die jemals für dieses Projekt im Jahr 2015 geschrieben wurdeNATIVE_FIRM
Kernel ( Kernel11
) erweitert. Es wird durch den oben genannten Baremetalloader in den Kernel injiziert, indem es seinen Startcode anschließt und sich dann in den Rest des Kernels anschließt. Zu den Funktionen gehören Hooking System Calls (SVCs), die Einführung neuer SVCs und das Einbinden in Interprozesskommunikation, um die Einschränkungen des Systemdesigns von Nintendo zu umgehen. Dies ist die Komponente, mit der Rosalina beispielsweise andere Prozesse im Menüeintrag über Overlay innehalten kann. Dies wurde zu einer Zeit geschrieben, als wir den Kernel nicht vollständig umgekehrt und ursprünglich 2017 neben Rosalina veröffentlicht wurden. Weitere Haken für die Unterstützung "Game Plugin" wurden im Jahr 2023 zusammengeführterr:f
(Fatal Fehlerscreen) Neuauflagen und vieles mehr. Eingeführt Mitte 2017 und hat seitdem ständig Änderungen erhalten und viele externe Beiträge erhaltenloader
. Die Reimplemention ermöglicht eine Break-on-Start-GDB-Funktion in Rosalina sowie die richtige Art und Weise, wie FS Access Control-Beschränkungen auf die richtige Art und Weise angehoben werden. Eingeführt im Jahr 2019 Für Luma3ds sind noch viel mehr Funktionen und Konsolidierung geplant! Hier finden Sie eine Liste der derzeit im Geschäft:
TwlBg
und AgbBg
. Dies ermöglicht eine viel bessere und konfigurierbare Hochschaltung für den oberen Bildschirm in DS- und GBA -Spielen (außer bei Old 2Ds). Dies wird derzeit privat in C ++ 23 (keine ETA) entwickelt. Dies ist zwar ein schwieriges Unterfangen, da dies erfordert, dass der gesamte Treiberstapel in halbgebrauchter Metal (Limited Kernel ohne IPC) umgeschrieben wird. Dies ist das kritischste Merkmal für LUMA3Ds, um die Treibersysmodul-Wiederaufschlagung zu trivial zu machen und zu machen und die Fahrer-Sysmodule trivial zu machen, und die Treibersysmodule trivial macht und wird zu triviellProcess9
für TWL_FIRM
und AGB_FIRM
um mehr Funktionen im DS- und GBA -Kompatibilitätsmodus zu ermöglichen (für die Dateizugriff erforderlich)Kernel11
Kernel11
gibt es eine Rennbedingung, die ein neues KDebugThread
an einem KThread
-Erstellen von Threads und einem weiteren Thread-Null-Dreeferencing thread->debugThread
betrifft. Dies führt dazu, dass die Cheat -Engine Spiele stellt, die ständig viele Fäden erzeugen und zerstören (wie Pokémon).Kernel11
neu implementiert ist.Um Luma3ds zu bauen, ist Folgendes erforderlich:
$PATH
dkp-pacman
3ds-dev
Metapackage: sudo dkp-pacman -S 3ds-dev --needed
Während Luma3ds-Veröffentlichungen mit 3ds-hbmenu
gebündelt sind, kompiliert Luma3ds tatsächlich in eine einzige Datei: boot.firm
. Kopieren Sie es einfach auf die Wurzel Ihrer SD -Karte (FTPD ist der einfachste Weg, dies zu tun), und Sie sind fertig.
Diese Software ist unter den Bedingungen des GPLV3 lizenziert. Sie finden eine Kopie der Lizenz in der lizenz.txtdatei.
Dateien im GDB-Stub werden stattdessen als MIT oder "GPLV2 oder einer späteren Version" dreifach lizenziert. In diesem Fall ist es im Dateikopf angegeben. PM-, SM-, PXI -Reimplementationen sind ebenfalls unter MIT lizenziert.
Luma3ds wäre nicht das, was es ist, ohne die Beiträge und das konstruktive Feedback vieler. Wir möchten uns besonders bedanken: