Luma3ds
Nintendo 3DS "Firmware personnalisé" Luma3DS patchs et réimplémente des parties importantes du logiciel système fonctionnant sur tous les modèles de la famille...
Choisir une liste...
Luma3DS
Nintendo 3DS "Firmware personnalisé"

Désignation des marchandises
Luma3DSpatchs et réimplémente des parties importantes du logiciel système fonctionnant sur tous les modèles de la famille de consoles Nintendo 3DS. Il vise à améliorer considérablement l'expérience utilisateur et à soutenir la 3DS bien au-delà de sa fin de vie. Les caractéristiques comprennent:
- Soutien de première classe pour les applications de bras de bois
- Rosaline, un menu de recouvrement (démarré par L+Down+ Sélectionnez par défaut), en permettant des choses comme :
- Prise de captures d'écran pendant le jeu
- Filtres à lumière bleue et autres filtres d'écran
- Redirection d'entrée pour jouer avec des périphériques externes, tels que les contrôleurs
- Utilisation de codes de triche
- Réglage précis de l'heure et de la date à partir du réseau (NTP)
- ... et bien plus encore !
- De nombreuses fonctionnalités de jeu de motding, comme, mais non limité à:
- Greffons de jeu (au format 3GX)
- Le langage par jeu remplace ("émulation locale")
- Redirection du chemin de contenu des actifs ("LayeredFS")
- Prise en charge des correctifs fournis par l'utilisateur et/ou remplacements complets de "modules système", une caractéristique essentielle pour les remplacements du réseau Nintendo (entre autres projets)
- Astub GDB à part entière, permettant aux développeurs de homebrew et aux moteurs inverses de travailler beaucoup plus efficacement
- Capacité de charger en chaîne d'autres fichiers firmware, y compris d'autres versions de lui-même
- ... et bien plus encore !
Installation et mise à niveau
Luma3DS nécessiteboot9strappour courir.
Une fois que boot9strap a été installé, il suffit de télécharger lelatest release archiveet extraire l'archive sur la racine de votre carte SD pour "installer" ou pour mettre à niveau Luma3DS à côté dehomebrew menu and certs bundleexpédié avec. Remplacer les fichiers existants et fusionner les dossiers existants si nécessaire.
Utilisation de base
Le menu principal de configuration de Luma3DSpeut être consulté en appuyant sur Sélectionner au démarrage. Le fichier de configuration est stocké dans/luma/config.inisur la carte SD (ou/rw/luma/config.inisur la partition CTRNAND si Luma3DS a été lancé depuis la partition CTRNAND, ce qui se produit lorsque la carte SD est manquante).
Le menu du chargeur chaîneest accessible en appuyant sur Démarrer au démarrage, ou à partir du menu de configuration. Les charges utiles devraient être situées dans/luma/payloadsavec.firmextension; s'il n'y a qu'une seule charge utile, le menu de sélection aforementé sera ignoré. Hotkeys peut être affecté à charge utile, par exemplex_test.firmsera chargé en chaîne lorsque X est pressé au démarrage.
Le menu superposition, Rosalina, a une combinaison de boutons par défaut: L+Down+ Sélectionner. Pour une plus grande flexibilité, la plupart des paramètres du menu Rosalina ne sont pas enregistrés automatiquement, d'où l'option "Save settings".
Ports GDB, lorsque activé, sont4000-4002pour les ports normaux. Utilisationattachen mode "à distance"info os processesest soutenu et encouragé (pour l'inversion de l'ingénieriemonitor getmemregions). Le port pour la fonction de démarrage est4003sans "extended-remote". GDB et IDA Pro (sans "support de pas" activé) sont soutenus activement.
Nous avons un wiki, mais il est actuellement très dépassé.
Composantes
Luma3DS se compose de plusieurs composants. Bien que le style de code de chaque composante soit pour la plupart cohérent, ces composantes ont été écrites depuis de nombreuses années et ne reflètent peut-être pas la façon dont les responsables écrivent un nouveau code dans de nouveaux composants/projets :
- bras9,bras11: menu de réglages principaux numétal, chargeur chaîne et chargeur firmware. En plus d'afficher les paramètres et le chargement en chaîne vers d'autres fichiers firmware homebrew sur demande, il est responsable de patcher le firmware officiel pour modifier
Process9coder et injecter tous les autres composants personnalisés. C'était la première composante jamais écrite pour ce projet, en 2015 - k11 extension: code allongeant le bras11
NATIVE_FIRMamande (Kernel11). Elle est injectée par le chargeur nu métal mentionné ci-dessus dans le noyau en accrochant son code de démarrage, puis s'accroche dans le reste du noyau. Ses caractéristiques incluent les appels de système d'accroche (SVC), l'introduction de nouveaux SVC et l'accroche dans les communications interprocessus, pour contourner les limitations dans la conception du système de Nintendo. C'est le composant qui permet à Rosalina de mettre en pause d'autres processus sur l'entrée du menu de superposition, par exemple. Cela a été écrit à un moment où nous n'avons pas complètement inversé le moteur du noyau, et initialement publié en 2017 aux côtés de Rosalina. D'autres hameçons pour le support du plugin "game" ont été fusionnés en 2023 - sysmodules: réimplémentation de "modules système" (processus) du système d'exploitation du 3DS (sauf pour Rosalina étant personnalisé), actuellement seuls les processus initiaux chargés directement en mémoire par le noyau ("processus initial du noyau", ou KIP en bref)
- chargeur: processus qui charge les processus non KIP du stockage. Parce que c'est l'endroit idéal pour patcher/remplacer le code exécutable, c'est là que tous les correctifs de processus sont effectués, permettant en particulier les fonctionnalités de "game modding". C'est aussi le sysmodule de manutention 3DSX homebrew chargement. Présenté en 2016
- rosalina: le composant le plus important de Luma3DS et KIP personnalisé : menu superposition, serveur GDB,
err:f(écran d'erreur fatale) réimplémentation, et beaucoup plus. Introduit à la mi-2017, et a constamment subi des changements et a reçu de nombreuses contributions externes depuis - pxi: Arm11<>Arm9 communication KIP, réappliqué juste pour le bien de lui. Présenté fin 2017
- sm: gestionnaire de services KIP, réappliqué pour supprimer les restrictions de contrôle d'accès au service. Présenté fin 2017
- pm: gestionnaire de processus KIP reponsible des processus de démarrage/de retrait et d'instruction
loaderpour les charger. La remise en œuvre permet de briser la fonction GDB à Rosalina, ainsi que de lever les restrictions d'accès FS à la bonne manière. Présenté en 2019
Mainteneurs
- @TuxSH: lead developer, créé et maintient la plupart des fonctionnalités du projet. Membre depuis 2016
- @AuroraWright: auteur du projet, a mis en œuvre les caractéristiques de base (la plupart du menu de réglages de démarrage numétal et le code de chargement du firmware) avec des décisions de conception réussies qui ont rendu le projet populaire. Créé le projet en 2015, actuellement inactif
- @PabloMK7: mainteneur de la fonction de chargeur de plugin fusionné pour la version v13.0. Inscrit en 2023
Feuille de route
Il y a encore beaucoup plus de fonctionnalités et de consolidation prévues pour Luma3DS ! Voici une liste de ce qui est actuellement en magasin:
- Mise en œuvre intégrale
TwlBgetAgbBg. Cela permettra beaucoup mieux, et plus configurable, d'augmenter l'échelle pour l'écran supérieur dans les jeux DS et GBA (sauf sur Old 2DS). Ce système est actuellement développé en privé en C++23 (pas d'ETA). Bien qu'il s'agisse d'une tâche assez difficile, car cela nécessite de réécrire l'ensemble de la pile du pilote en semi-bare-métal (cerneau limité sans IPC), il s'agit de la caractéristique la plus critique pour Luma3DS d'avoir et rendra le pilote re-impelementation trivial - Remise en œuvre
Process9pourTWL_FIRMetAGB_FIRMpour permettre d'autres fonctionnalités en mode compatibilité DS et GBA (qui nécessitent un accès au fichier) - Enfin, une
Kernel11mise en œuvre
Problèmes connus
- Le moteur Cheat s'écrase avec certaines applications, en particulier les jeux Pokémon: il y a une condition de course dans Nintendo
Kernel11relative à la fixation d'un nouveauKDebugThreadà uneKThreadsur la création de fil, et un autre fil null-deréférencethread->debugThread. Cela provoque le moteur de triche pour planter des jeux qui créent et détruisent de nombreux fils tout le temps (comme Pokémon). .- Pour ces jeux, avoir un"greffon de jeu dédié"est la seule alternative jusqu'à
Kernel11est réappliquée.
- Pour ces jeux, avoir un"greffon de jeu dédié"est la seule alternative jusqu'à
- Applications réagissant à Rosalina menu bouton combo: Rosalina se contente d'entrer le bouton de sondage à un intervalle pour savoir quand afficher le menu. Cela signifie que le combo du menu Rosalina peut parfois être traité par le jeu/processus qui va être interrompu.
.
- Vous pouvezchanger le combo du menudans le sous-menu "Divers options" (enregistrez-le alors avec "Save settings" dans le menu principal) pour le contourner.
Bâtiment à partir de la source
Pour construire Luma3DS, il faut :
- git
- makeromdans
$PATH - firmtoolinstallé
- mise à jour devkitARM et libctru:
- installer
dkp-pacman(ou, pour les distributions qui fournissent déjà pacman, ajouter des dépôts): https://devkitpro.org/wiki/devkitPro pacman - installer des paquets depuis
3ds-devmétapackage:sudo dkp-pacman -S 3ds-dev --needed - alors que les versions libctru et Luma3DS sont synchronisées, vous devrez peut-être construire libctru à partir de la source pour les commits Luma3DS non libérés
- installer
Alors que les rejets de Luma3DS sont groupés avec3ds-hbmenu, Luma3DS compile en fait en un seul fichier:boot.firm. Il suffit de le copier vers la racine de votre carte SD (ftpdc'est la façon la plus simple de le faire), et c'est fini.
Délivrance de licences
Ce logiciel est sous licence aux termes de la GPLv3. Vous pouvez trouver une copie de la licence dans le fichier LICENSE.txt.
Les fichiers du stub GDB sont au lieu de triple-licence comme MIT ou "GPLv2 ou toute version ultérieure", auquel cas il est spécifié dans l'en-tête de fichier. PM, SM, PXI sont également autorisés en vertu du MIT.
Crédits
Luma3DS ne serait pas ce qu'il est sans les contributions et la rétroaction constructive de beaucoup. Nous tenons à remercier en particulier :
- @devkitPro(en particulier@fincs,@WinterMuteet@mtheall) pour fournir des chaînes d'outils de qualité et faciles à utiliser avec du GCC saignant, et pour leurs conseils techniques continus
- @Nanquitaspour la version initiale du code de chargeur de plugin de jeu ainsi que des contributions très utiles au stub GDB
- @piepie62pour la mise en œuvre actuelle du moteur de triche Rosalina,Bec de canardpour sa mise en œuvre initiale
- @panicbitpour l'implémentation originale de filtres d'écran en Rosalina
- @jasondellalucepour les systèmes de retenue à la masse
- @LiquidFenrirpour le visionneur de mémoire dans la "Liste des procédés" de Rosalina
- ChaNpourFatFs
- Tous ceux qui ont contribué au dépôt Luma3DS
- Tous ceux qui ont aidé à dépanner les utilisateurs finaux
- Tous ceux qui ont fourni une rétroaction constructive à Luma3DS