Nintendo 3DS "Firmware personnalisé"
LUMA3DS Patche et réimplique 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 fonctionnalités incluent:
LUMA3DS nécessite Boot9Strap pour s'exécuter.
Une fois que Boot9strap a été installé, téléchargez simplement les dernières archives de version et extraire l'archive sur la racine de votre carte SD pour "installer" ou pour mettre à niveau LUMA3DS à côté du menu Homebrew et du bundle de certificats expédiés. Remplacez les fichiers existants et fusionnez les dossiers existants si nécessaire.
Le menu de configuration LUMA3DS principal est accessible en appuyant sur Sélectionner au démarrage. Le fichier de configuration est stocké dans /luma/config.ini
sur la carte SD (ou /rw/luma/config.ini
sur la partition Ctrnand si Luma3ds a été lancé à partir de la partition Ctrnand, qui se produit lorsqu'il est manquant).
Le menu Chainloader est accessible en appuyant sur Démarrer au démarrage ou dans le menu de configuration. Les charges utiles devraient être situées dans /luma/payloads
avec l'extension .firm
; S'il n'y a qu'une seule charge utile, le menu de sélection susmentionné sera ignoré. Les raccourcis clavier peuvent être attribués à la charge utile, par exemple x_test.firm
sera chargé de chaîne lorsque x est enfoncé au démarrage.
Le menu de superposition, Rosalina , a une combinaison de bouton par défaut: l + down + select . Pour une plus grande flexible, la plupart des paramètres de menu Rosalina ne sont pas enregistrés automatiquement, d'où l'option "Enregistrer les paramètres".
Les ports GDB , lorsqu'ils sont activés, sont 4000-4002
pour les ports normaux. L'utilisation de attach
dans le mode "Extended-Remote", aux côtés info os processes
est prise en charge et encouragée (pour l'ingénierie inverse, consultez également monitor getmemregions
). Le port de la fonction de démarrage de rupture est 4003
sans "Remote étendu". GDB et IDA Pro par Devkitarm par Devkitarm (sans "support de pas" activés) sont activement pris en charge.
Nous avons un wiki, mais il est actuellement très dépassé.
LUMA3DS se compose de plusieurs composants. Bien que le style de code de chaque composant soit principalement cohérent, ces composants ont été écrits sur de nombreuses années et peuvent ne pas refléter comment les mainteneurs écriraient un nouveau code dans de nouveaux composants / projets:
Process9
et pour injecter tous les autres composants personnalisés. C'était le premier composant jamais écrit pour ce projet, en 2015NATIVE_FIRM
d'ARM11 ( Kernel11
). Il est injecté par le chargeur de barmetal mentionné ci-dessus dans le noyau en accrochant son code de démarrage, puis s'accroche au reste du noyau. Ses fonctionnalités incluent les appels du système d'accrochage (SVC), l'introduction de nouveaux SVC et le raccordement aux communications d'interprocess, pour contourner les limitations de la conception du système de Nintendo. Il s'agit du composant qui permet à Rosalina de suspendre d'autres processus sur l'entrée du menu de superposition, par exemple. Cela a été écrit à une époque où nous n'avons pas complètement inversé les ingénieurs inversés, et nous sommes à l'origine sortis en 2017 aux côtés de Rosalina. D'autres crochets pour le support "Game Plugin" ont été fusionnés en 2023err:f
(écran d'erreur fatal) réimplémentation, et bien plus encore. Introduit à la mi-2017, et a continué à subir des changements et a reçu de nombreuses contributions externes depuisloader
de les charger. La réimplémentation permet une fonction GDB de démarrage de rupture à Rosalina, ainsi que la levée des restrictions de contrôle d'accès FS à la bonne manière. Présenté en 2019 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:
TwlBg
et AgbBg
. Cela permettra une augmentation beaucoup mieux et plus configurable, pour l'écran supérieur dans les jeux DS et GBA (sauf sur Old 2DS). Ceci est actuellement développé en privé dans C ++ 23 (pas d'ETA). Bien que ce soit une entreprise assez difficile car cela nécessite de réécrire toute la pile de pilotes en semi-bare (noyau limité sans IPC), c'est la caractéristique la plus critique que Luma3DProcess9
pour TWL_FIRM
et AGB_FIRM
pour permettre plus de fonctionnalités en mode de compatibilité DS et GBA (celles qui nécessitent un accès au fichier)Kernel11
Kernel11
de Nintendo concernant la connexion d'un nouveau KDebugThread
à un KThread
sur la création de thread, et un autre thread-déréférencez- thread->debugThread
. Cela fait que le moteur de triche écrase les jeux qui créent et détruisent de nombreux threads tout le temps (comme Pokémon).Kernel11
soit réimplémenté.Pour construire Luma3DS, ce qui suit est nécessaire:
$PATH
dkp-pacman
(ou, pour les distributions qui fournissent déjà Pacman, ajoutez des référentiels): https://devkitpro.org/wiki/devkitpro_pacman3ds-dev
: sudo dkp-pacman -S 3ds-dev --needed
Alors que les versions LUMA3DS sont regroupées avec 3ds-hbmenu
, LUMA3DS se compile en un seul fichier: boot.firm
. Il suffit de le copier sur la racine de votre carte SD (FTPD est le moyen le plus simple de le faire), et vous avez terminé.
Ce logiciel est sous licence des termes du GPLV3. Vous pouvez trouver une copie de la licence dans le fichier licence.txt.
Les fichiers du Stub GDB sont plutôt triples comme MIT ou "GPLV2 ou n'importe quelle version ultérieure", auquel cas il est spécifié dans l'en-tête de fichier. Les réimplémentations PM, SM, PXI sont également autorisées sous le MIT.
LUMA3DS ne serait pas ce qu'il est sans les contributions et les commentaires constructifs de beaucoup. Nous tenons à remercier en particulier: