1 points par GN⁺ 2023-09-24 | 1 commentaires | Partager sur WhatsApp
  • La Nintendo 3DS est une console portable née à l’époque de l’essor des smartphones et des app stores, regroupant dans une structure de SoC complexe la 3D stéréoscopique sans lunettes, un double écran, des CPU rétrocompatibles et divers I/O
  • L’écran LCD supérieur de 800×240 affiche simultanément deux images 400×240 grâce à des pixels demi-largeur et à une barrière de parallaxe ; le curseur de profondeur et le suivi du visage de la New 3DS réduisent les problèmes d’angle de vue et de fatigue
  • Le modèle de base utilisait un ARM11 MPCore bicœur à 268 MHz, 128 Mo de FCRAM, un GPU DMP PICA200 et un DSP CEVA TeakLite II ; la New 3DS ajoute un quadricœur à 804 MHz, 256 Mo de FCRAM, le NFC et un système de vision stéréoscopique amélioré
  • En plus de l’ARM11, l’intérieur embarque aussi un ARM946E-S pour la DS et un ARM7TDMI pour la GBA, ce qui permet de basculer entre les modes Native 3DS, Nintendo DSi et Game Boy Advance, même si les développeurs manipulent en général uniquement l’ARM11 MPCore directement
  • Le système d’exploitation et la sécurité reposaient sur NATIVE_FIRM, TWL_FIRM, AGB_FIRM, SAFE_FIRM, Boot9/Boot11 et une chaîne de confiance basée sur AES/RSA/OTP ; au fil de multiples vulnérabilités, l’écosystème homebrew et custom firmware s’est développé

Gammes de modèles et générations matérielles

  • Nintendo a lancé plusieurs révisions pendant le cycle de vie de la 3DS afin de segmenter les prix et les publics
  • Du point de vue de l’architecture, on distingue 6 modèles
    • Nintendo 3DS (2011), Nintendo 3DS XL (2012) : basées sur l’architecture d’origine, la principale différence entre XL et non-XL étant la taille de l’écran
    • Nintendo 2DS (2013) : modèle d’entrée de gamme supprimant l’écran stéréoscopique et adoptant une forme inspirée de la Game Boy
    • New Nintendo 3DS (2014), New Nintendo 3DS XL (2015) : ajoutent une mise à niveau matérielle, un lecteur NFC, davantage de boutons et un système stéréoscopique amélioré
    • New Nintendo 2DS XL (2017) : modèle d’entrée de gamme dérivé de la New Nintendo 3DS XL, sans fonction stéréoscopique
  • La référence commune des jeux est la Nintendo 3DS d’origine, tandis que la gamme New présente des différences matérielles distinctes

Écran 3D sans lunettes

  • Comme successeur de la Nintendo DS, la Nintendo 3DS embarque deux écrans LCD, l’écran supérieur affichant une profondeur avec une définition de 800×240 pixels
  • L’effet stéréoscopique repose sur le principe de parallaxe stéréoscopique (stereoscopic parallax), comme sur la Virtual Boy
    • Une image légèrement différente est affichée pour l’œil gauche et l’œil droit
    • Le décalage entre les centres des deux images fait percevoir les objets comme étant en avant ou en arrière
  • Le LCD supérieur est physiquement composé de pixels demi-largeur et fonctionne selon deux modes
    • Mode 2D : deux pixels horizontaux sont traités comme un seul
    • Mode 3D : tous les pixels sont utilisés individuellement pour afficher simultanément deux images 400×240
  • La barrière de parallaxe sépare le rétroéclairage derrière les pixels du LCD afin que chaque œil voie un sous-ensemble différent de pixels
  • Cette méthode a toutefois des contraintes
    • Elle nécessite un surplus de luminosité, ce qui affecte l’autonomie
    • Si l’écran est incliné par rapport aux yeux, les deux images de parallaxe se mélangent visuellement et la fatigue oculaire peut augmenter
    • La posture fixe et la fatigue visuelle rapide peuvent rendre la fonction 3D contraignante
  • Le curseur de profondeur 3D ajuste l’effet de profondeur en augmentant ou réduisant l’écart entre les deux images
  • La New 3DS atténue le problème d’inclinaison grâce au suivi du visage via la caméra frontale et des LED infrarouges
  • Pour les jeux, le GPU doit rendre deux images légèrement décalées d’une même scène, comme s’il dessinait une image classique
    • L’API officielle fournit des routines pour construire deux matrices de projection

CPU, mémoire et structure de rétrocompatibilité

  • Le SoC principal, le CPU CTR, regroupe l’essentiel du système hors stockage et RAM
  • Nintendo a collaboré avec ARM pour constituer un cluster CPU basé sur ARM11 MPCore
    • 3DS d’origine : 2 cœurs MP11 à 268 MHz chacun
    • New 3DS : 4 cœurs MP11 à 804 MHz chacun, avec 2 Mo de cache L2 partagé
  • L’ARM11 utilise le jeu d’instructions ARMv6k et inclut aussi des composants comme Thumb, Jazelle et VFP
    • ARMv6 fournit des instructions SIMD entières et des instructions load/store pour la synchronisation multicœur
    • Le VFP11 accélère les opérations en virgule flottante en simple précision 32 bits et double précision 64 bits, conformément à IEEE 754
  • Chaque cœur MP11 dispose d’un pipeline à 8 étages, d’une prédiction de branchement dynamique et statique, du coprocesseur système CP15, de 16 Ko de cache d’instructions et 16 Ko de cache de données
  • Les cœurs ARM11 sont reliés par le bus AXI d’ARM, et la Snoop Control Unit du MPCore maintient la cohérence du cache L1
  • En plus de l’ARM11, la 3DS intègre aussi deux autres CPU
    • ARM946E-S : en mode Native 3DS, il agit comme coprocesseur de sécurité et d’I/O géré par l’OS ; lors de l’exécution de jeux DS/DSi, il devient le processeur principal
    • ARM7TDMI : en mode DS/DSi, il agit comme coprocesseur ; en mode GBA, il devient le CPU principal d’exécution
  • Il existe trois modes de fonctionnement
    • Mode Native 3DS : l’ARM11 exécute les jeux 3DS, l’ARM9 gère les I/O et la sécurité, et l’ARM7 est désactivé
    • Mode Nintendo DSi : l’ARM9 et l’ARM7 exécutent les jeux DS/DSi, et l’ARM11 assiste le matériel DS manquant ou relocalisé
    • Mode Game Boy Advance : l’ARM7 exécute les instructions des jeux GBA, tandis que l’ARM11 et l’ARM9 assurent un support en arrière-plan
  • La configuration mémoire est complexe
    • Du point de vue du développeur, la 3DS d’origine fournit 128 Mo de FCRAM et la New 3DS 256 Mo de FCRAM
    • L’ARM11 dispose de 512 Ko de SRAM à des fins de sécurité
    • L’ARM9 dispose de 1 Mo de SRAM, et de 1,5 Mo de SRAM sur New 3DS
    • L’ARM9 possède aussi 32 Ko d’instruction TCM et 16 Ko de données TCM
  • La FCRAM est une Fast Cycle DRAM créée par Fujitsu et Toshiba en 2002, conçue pour viser une latence inférieure à la DRAM sur les lectures non continues
  • La configuration DMA est également incluse
    • Le XDMA à côté de l’ARM9 fournit jusqu’à 4 canaux
    • Le CDMA à côté de l’ARM11 fournit jusqu’à 8 canaux
    • La New 3DS ajoute un CoreLink DMA-330 supplémentaire à côté du bloc ARM11
  • Les développeurs 3DS accèdent généralement uniquement à l’ARM11 MPCore, et les programmes sont écrits selon un modèle de multithreading basé sur des threads
  • Sur New 3DS, si les métadonnées du jeu indiquent qu’il cible le nouveau modèle, l’OS active les fonctions comme la fréquence plus élevée, la RAM supplémentaire et le cache L2
    • Sinon, le matériel spécifique aux modèles New est désactivé pour garantir la compatibilité
    • Un jeu peut embarquer à la fois une base de code pour les modèles Old et pour les modèles New

Pipeline graphique et PICA200

  • La Nintendo 3DS est la première machine de la gamme portable de Nintendo à utiliser un cœur IP d’un fournisseur de GPU au lieu d’un PPU maison
  • Nintendo a licencié le PICA200 de DMP et l’a intégré au SoC CPU CTR, et le GPU fonctionne à 268 MHz
  • Le PICA200 est un processeur 3D basse consommation, compatible avec OpenGL ES 1.1, utilisant l’architecture Maestro 2G avec des éléments d’OpenGL ES 2.0 ajoutés en extension
  • L’étape pixel repose sur une architecture à fonction fixe, mais les Maestro functions fournissent l’éclairage par fragment, des algorithmes d’ombres multiples, la subdivision de polygones, le bump mapping, des textures procédurales et plusieurs effets de brouillard
  • La VRAM dédiée au GPU n’est que de 6 Mo, et les programmeurs doivent y placer les commandes, buffers et textures répétées nécessitant un accès immédiat, le reste devant être placé en FCRAM
    • Le PICA200 dispose d’un DMA pour les transferts entre FCRAM et VRAM
  • Le contrôleur LCD ne comprend pas directement le format des render buffers du PICA200, donc un framebuffer LCD séparé est nécessaire
    • Au minimum trois sont requis pour l’œil gauche de l’écran supérieur, l’œil droit de l’écran supérieur et l’écran inférieur
    • Pour éviter les artefacts, il est possible d’utiliser un jeu dupliqué pour le page flipping
  • En jeu, le GPU rend généralement les trois écrans
    • Haut gauche : 400×240
    • Haut droit : 400×240
    • Bas : 320×240
    • Tous affichent des couleurs RGB 8 bits pour un maximum de 16,78 millions de couleurs
  • Le pipeline du PICA200 se compose des étapes commande, vertex, géométrie, rastérisation, fragment et post-traitement
    • L’étape commande lit le command buffer et dessine les polygones
    • L’étape vertex utilise 4 Vertex Processors en parallèle, mais seulement 3 si le geometry shader est activé
    • L’étape géométrie réaffecte un Vertex Processor pour l’utiliser comme shader distinct
    • L’étape fragment se compose de 4 texture units et d’unités de shading
    • Il n’y a pas de pixel shader, et l’ensemble repose sur 6 combineurs de couleurs et les fonctions Maestro
    • L’étape de post-traitement peut effectuer les tests alpha, stencil et profondeur, le blending, ainsi qu’un supersampling 2×2
  • La New 3DS semble avoir ajouté un DSP appelé MVD, chargé du décodage H.264/MJPEG et de la conversion YUV-vers-RGB
    • Il semble être utilisé par le navigateur web de la New 3DS pour la lecture vidéo accélérée
  • Les PPU pour les jeux DS et GBA sont également intégrés au SoC
    • Les jeux DS/DSi/GBA utilisent les PPU comme sur le matériel d’origine
    • La sortie passe par LgyFB vers le framebuffer, puis le PICA200 se charge de l’affichage
    • Cette structure ajoute de la latence, mais à un niveau négligeable pour l’utilisateur

Audio et E/S

  • Le SoC comprend deux blocs audio
    • Un DSP propriétaire pour les jeux 3DS
    • Le CSND de la lignée DS, utilisé par les jeux 3DS, DS et GBA
  • Le DSP spécifique à la 3DS est un CEVA TeakLite II fonctionnant à environ 134 MHz
    • Il produit une sortie stéréo 2 canaux, jusqu’à 32 kHz d’échantillonnage et 16 bits de résolution
    • Il utilise 512 Ko de RAM comme espace de travail DSP, en double buffering de 256 Ko chacun
    • Le DSP peut mixer jusqu’à 24 canaux d’échantillons ADPCM et PCM
  • Les programmes téléversent au runtime un firmware DSP écrit par Nintendo et inclus dans le SDK officiel, et le service audio de l’OS abstrait la communication avec le DSP
  • Le CSND fournit 32 canaux, soit deux fois plus que le bloc équivalent de la DS
  • Les E/S externes reflètent davantage une volonté de concurrencer les smartphones que les consoles portables classiques
    • Boutons numériques, Circle Pad analogique, curseurs 3D et volume, interrupteur Wi-Fi
    • Capteur tactile résistif, gyroscope, accéléromètre
    • Une caméra frontale et deux caméras arrière
    • Émetteur-récepteur infrarouge, slot carte SD, prise jack 3,5 mm, lecteur de cartouches
  • La New 3DS ajoute des E/S supplémentaires
    • Deux boutons numériques, C-Stick, lecteur NFC sous l’écran inférieur
    • LED infrarouge pour le suivi du visage
    • Slot microSD à la place de la SD
    • Suppression de l’interrupteur Wi-Fi au profit d’un contrôle logiciel
  • Les interfaces internes se divisent en SPI, HID, I²C, périphériques rapides basés sur FIFO et MCU
    • Le SPI relie la mémoire flash de sauvegarde des cartouches, la gestion d’alimentation DS, une partie du Wi-Fi, l’écran tactile, le son, le micro, le Circle Pad, etc.
    • Le HID lit le pavé numérique via un registre 16 bits
    • L’I²C relie les caméras, l’émetteur-récepteur infrarouge, le NFC, le module de suivi du visage QTM, le gyroscope, le MCU, etc.
    • L’eMMC et le slot SD sont connectés comme périphériques à 16 Mo/s via des registres FIFO
  • L’Auxiliary Microcontroller est un MCU 78K0R conçu par NEC et fabriqué par Renesas, qui gère l’écran LCD, les LED, l’alimentation, la batterie, la RTC, le curseur 3D, les boutons HOME/alimentation, etc.
  • Les services reposant sur les E/S incluent QR Reader, AR Games, Face Raiders, Amiibos, SpotPass, StreetPass et Play Coins

Système d’exploitation et structure de démarrage

  • La Nintendo 3DS stocke plusieurs firmwares pour fournir l’exécution native, la rétrocompatibilité et des modes de maintenance
    • NATIVE_FIRM : fait fonctionner les fonctions natives de la 3DS, avec l’ARM11 qui exécute le programme principal
    • TWL_FIRM : fait fonctionner la 3DS comme une Nintendo DSi, avec l’ARM9 et l’ARM7 au premier plan
    • AGB_FIRM : fait fonctionner la 3DS comme une Game Boy Advance, avec l’ARM7 qui exécute le programme principal
    • SAFE_FIRM : utilisé pour les opérations de maintenance comme les mises à jour système
  • Dans NATIVE_FIRM, l’ARM9 et l’ARM11 jouent chacun le rôle d’un OS distinct
    • L’ARM9 exécute Kernel9 et Process9, et prend en charge la sécurité, le chiffrement, les E/S, le système de fichiers, ainsi que la vérification et l’installation des titres
    • L’ARM11 exécute Kernel11 et plusieurs processus utilisateur, et fournit le réseau, le HOME Menu, le lancement des applications et l’abstraction des services matériels
  • Le scheduler ARM11 ne traite pas les cœurs comme des cœurs généralistes classiques
    • Le premier cœur, appcore, est destiné aux jeux et utilise un ordonnancement FIFO
    • Le deuxième cœur, syscore, est dédié aux tâches système et peut prêter 30 % de son temps d’exécution aux applications utilisateur
    • Le quatrième cœur MP11 de la New 3DS est dédié au suivi du visage
    • Le troisième cœur MP11 n’est pas ordonnancé par défaut et reste donc la plupart du temps inactif
    • Le CDMA supplémentaire de la New 3DS n’est accessible qu’au démarrage puis n’est plus utilisé ensuite
  • La RAM réellement utilisable par les applications est inférieure à la totalité de la FCRAM
    • 3DS d’origine : 64 Mo par défaut sur 128 Mo
    • New 3DS : 124 Mo par défaut sur 256 Mo
    • Avec le flag APPMEMTYPE, un démarrage sans HOME Menu permet d’obtenir jusqu’à 96 Mo et 176 Mo respectivement
  • Les supports de stockage se composent de la Boot ROM, de l’OTP, de l’eMMC NAND et de la SD/microSD
    • Boot9 et Boot11 sont les ROM de démarrage et sont cachées pour des raisons de sécurité
    • L’OTP contient des informations propres à la console et des clés de chiffrement écrites une seule fois en fabrication
    • L’eMMC NAND stocke les données système, les firmwares et les données utilisateur des modes 3DS/DSi
    • La SD/microSD stocke les logiciels eShop, les sauvegardes, photos, enregistrements, etc., protégés par AES-128-CTR
  • Au démarrage, le Boot9 de l’ARM9 s’exécute d’abord, réveille le Boot11 de l’ARM11, puis vérifie l’en-tête NCSD et les partitions de firmware de la NAND
    • Il vérifie les hash SHA-256 et les signatures RSA-2048 pour trouver un firmware valide
    • En cas d’échec, il tente un boot depuis la flash du module Wi-Fi, et si cela échoue aussi, affiche un écran d’erreur
    • Une fois NATIVE_FIRM chargé, la chaîne continue vers Kernel9, Process9, Kernel11, les processus système, NS, puis le HOME Menu ou le jeu
  • Le HOME Menu est un shell de navigation sur une page qui affiche les applications installées dans une grille défilante
    • Le module NS fournit aussi l’appel des Applets comme l’overlay du bouton HOME et le clavier virtuel
    • Sur New 3DS, même si le jeu s’exécute en mode de compatibilité, les Applets et routines NS peuvent utiliser l’ensemble du matériel
  • Les mises à jour système peuvent se faire en ligne ou via une cartouche de jeu
    • Les cartouches ne contiennent que la mise à jour système, sans mise à jour des applications utilisateur
    • Les mises à jour réseau contiennent le package complet
    • L’installation est effectuée par System Updater après redémarrage dans SAFE_FIRM

Développement, distribution et Virtual Console

  • L’écosystème de développement de la 3DS a été influencé par l’industrie des smartphones basés sur ARM et les progrès des compilateurs, mais Nintendo ne fournissait pas encore de toolchain standard
  • Les kits de développement matériel étaient fournis par Intelligent Systems et Kyoto MicroComputers
    • CTR-BOX se compose d’un boîtier métallique contenant le matériel 3DS et d’une coque factice de 3DS
    • Les flashcards officielles servaient à distribuer des prototypes de jeux à des testeurs externes
    • Pour la New 3DS, le kit SNAKE était proposé
  • Le SDK officiel inclut armcc pour 3DS, un débogueur, les API des services matériels et de l’OS, des bibliothèques graphiques, un packager, des bibliothèques réseau, audio et vidéo, un plugin Visual Studio 2010, ainsi que les outils et profileurs PICA200
  • Les bibliothèques graphiques sont au nombre de quatre
    • GL : une API OpenGL ES simple mais lente
    • GD : une alternative plus rapide qui génère des commandes PICA200
    • GR : l’API de commandes PICA200 la plus proche du matériel
    • GX : une bibliothèque généraliste pour la gestion de PICA200
  • Il existe trois supports d’exécution pour les jeux
    • Gamecard : peut contenir 128 Mo à 4 Go de ROM, ou jusqu’à 2 Go de Flash, ainsi qu’une backup memory pour la sauvegarde
    • eShop/SD Card : prend en charge les logiciels téléchargeables, les précommandes et la distribution de DLC
    • Local wireless : Download Play a été repris sur 3DS ; le jeu transféré est installé sur la NAND et n’utilise qu’un seul slot
  • La Virtual Console proposait via l’eShop des jeux DSiWare, NES/Famicom, Sega Game Gear, Game Boy et Game Boy Color
    • Les utilisateurs de New 3DS avaient aussi accès au catalogue Super Nintendo
    • Dans la plupart des cas, cela prenait la forme d’un paquet applicatif incluant la ROM et l’émulateur
  • Les jeux Game Boy Advance n’ont été proposés officiellement qu’aux utilisateurs du Ambassador Program
    • Ils s’exécutent nativement sur l’ARM7 via AGB_FIRM, et non via un émulateur ARM11
    • Les jeux GBA sont copiés dans la FCRAM, puis la console redémarre sur AGB_FIRM, après quoi l’ARM7 prend le contrôle
  • Les mises à jour de jeux sont distribuées via l’eShop et s’appliquent à tous les types de jeux sauf Download Play

Sécurité, protection contre la copie et homebrew

  • Les principales cibles de la sécurité de la 3DS sont le lecteur de cartes Game/CTR et le système d’exploitation
    • Les données internes des cartouches CTR sont au format NCSD, et l’OS se charge de l’authentification, de la vérification et du déchiffrement
    • La véritable chaîne de confiance se concentre sur le système d’exploitation et la structure de démarrage
  • Un matériel de sécurité dédié est intégré
    • Le flag XN de l’ARM11 et le MPU de l’ARM9 limitent l’exécution arbitraire en mémoire
    • L’ARM9 fonctionne comme un processeur dédié à la sécurité et accède à des blocs cryptographiques comme AES, RSA et PRNG
    • Le moteur AES prend en charge le chiffrement et le déchiffrement AES-128, jusqu’à 64 emplacements de clés, ainsi que les modes CTR/CCM/CBC/ECB
    • Le moteur RSA exécute des opérations RSA à clé publique et dispose de 4 emplacements de clés
    • L’OTP contient des clés propres à la console et le CTCert, et le CID eMMC est aussi utilisé pour l’obfuscation des clés
  • La chaîne de confiance s’étend de Boot9 à l’OTP, à l’eMMC, à NCSD, à NCCH et à la vérification des Title
    • NCSD et NCCH utilisent des signatures RSA-2048 + SHA-256
    • Les payloads NCCH sont chiffrés en AES-128 CTR
    • Les Title sont signés en RSA-2048, RSA-4096 ou ECDSA avec SHA-256
    • Les Ticket, c’est-à-dire les licences de téléchargement de l’eShop, sont aussi signés en RSA-2048 + SHA-256
  • Il existait également des faiblesses d’implémentation
    • La configuration des tables de pages AXI WRAM dans Kernel11 accordait largement les droits de lecture, écriture et exécution
    • Avant le système 3.0.0, la mémoire OTP n’était pas masquée
    • Il n’y avait pas de séparation des privilèges entre Process9 et Kernel9
    • Il n’y avait pas d’ASLR, ni de protection contre le downgrade du système
    • Le navigateur web basé sur WebKit a été une cible récurrente d’attaques
  • Le homebrew et la copie au début sont partis des flashcards DS
    • La DSi et la 3DS tentaient de bloquer les flashcards au moyen d’une whitelist de cartes autorisées
    • Les fabricants reprogrammaient les en-têtes des cartouches afin qu’elles soient identifiées comme d’autres jeux autorisés
  • En 2013, Gateway3DS est apparu comme la première flashcard 3DS réellement fonctionnelle
    • Blue Gateway était une flashcard DS qui installait le point d’entrée de l’exploit MSET
    • Red Gateway copiait les cartes de jeu officielles grâce à un FPGA et une microSD
    • Launcher.dat faisait office à la fois de payload pour l’exploit MSET et de custom firmware
  • Nintendo a réagi par des mises à jour
    • 5.0.0-11 a corrigé temporairement l’exploit MSET
    • 7.0.0-13 a bloqué les exploits kernel et ajouté un module RSA à la chaîne de confiance de déchiffrement NCCH
    • 9.3.0 a patché l’exploit kernel privé de Gateway3DS
    • Sky3DS a été mis sur liste noire dans 11.0
  • L’écosystème homebrew a évolué avec libctru, nihstro, Ninjhax et Homebrew Launcher
    • Ninjhax utilisait comme point d’entrée la fonction de QR code de Cubic Ninja
    • GSPWN est une vulnérabilité qui écrase le heap du HOME Menu via le DMA du GPU
    • Homebrew Launcher exécute des applications homebrew non signées au format .3dsx
  • memchunkhax et memchunkhax2 permettaient une élévation de privilèges sur Kernel11
    • En manipulant le memchunk header stocké dans la FCRAM, on obtenait un accès à l’AXI WRAM puis le contrôle de Kernel11
  • Après l’introduction de arm9loader sur la New 3DS en 2015, arm9loaderhax est apparu
    • Il s’agit d’un exploit permanent permettant l’exécution de code arbitraire avec les privilèges de Kernel9 au démarrage
    • Des outils comme Luma3DS, Godmode9, Anemone3DS et nds-bootstrap ont été largement utilisés
  • En 2016-2017, l’analyse de Boot9 a donné naissance à sighax, boot9strap et ntrboot
    • sighax exploite un défaut de vérification des signatures RSA-2048 dans Boot9 pour neutraliser la chaîne de confiance
    • boot9strap est devenu un bootloader alternatif prenant en charge soit un payload sur carte SD, soit un démarrage normal
    • ntrboot obtient les privilèges Boot9 à l’aide d’une flashcard DS, d’un aimant et d’une combinaison de touches
    • Ces vulnérabilités étant présentes dans la Boot ROM, elles ne peuvent pas être corrigées par mise à jour logicielle
  • Depuis 2018, les méthodes ont évolué pour simplifier l’installation de boot9strap
    • seedminer reconstitue movable.sed à partir du Friend Code, du nom d’un sous-répertoire de la carte SD et d’un court brute force
    • BannerBomb3 exploite un débordement de pile dans l’application Settings lors de l’analyse de la bannière d’un Title DSiWare
    • Les voies SAFE_FIRM avec unSAFE_MODE et safehax, ainsi que les voies basées sur le HOME Menu avec menuhax67 et nimdsphax, ont été utilisées
  • En mai 2023, la mise à jour 11.17.0 a patché BannerBomb3, neutralisant l’un des derniers points d’entrée ne nécessitant pas de matériel supplémentaire
    • Depuis, les utilisateurs ont besoin soit d’un exploit dans un jeu 3DS légal, soit d’une flashcard DS compatible ntrboot, soit d’un exploit WebKit

1 commentaires

 
GN⁺ 2023-09-24
Avis de Hacker News
  • C’est vraiment étonnant qu’il y ait un véritable CPU GBA physique pour faire tourner les jeux Game Boy Advance.
    J’avais lu toutes les rumeurs avant la sortie, précommandé le modèle bleu et payé environ 250 dollars au début, donc j’étais éligible à l’Ambassador Program. Quand Nintendo a fortement baissé le prix peu après le lancement, ils ont offert en guise d’excuse plusieurs jeux gratuits, y compris des titres qui n’étaient pas sur l’eShop, et j’en ai été satisfait.
    Rejouer au Mario Kart Super Circuit de mon enfance avec l’excellent pad coulissant de la 3DS, c’était comme un rêve ; apprendre ensuite qu’il tournait sur un vrai CPU comme sur ma GBA de l’époque a rendu ce souvenir encore plus spécial.

    • La raison est encore plus surprenante. À force d’empiler la rétrocompatibilité comme des poupées matriochkas, Nintendo s’est retrouvé avec un CPU GBA presque par accident.
      La Nintendo 3DS contient toute l’architecture système de la Nintendo DSi, et le CPU de la DSi sert aussi de CPU superviseur du système. La DSi était à l’origine, pour l’essentiel, une version overclockée de l’architecture de la Nintendo DS, et les deux premiers modèles de Nintendo DS incluaient aussi l’ARM7TDMI de la GBA pour assurer la rétrocompatibilité via le slot GBA.
      À l’époque de l’Ambassador Program, Nintendo a distribué le firmware AGB_FIRM, qui démarre la 3DS en mode Game Boy Advance ; pour le mode Nintendo DS, il y avait TWL_FIRM. Aujourd’hui, si l’on hacke une 3DS, on peut aussi charger d’autres logiciels GBA, ce qui permet d’exécuter les jeux GBA avec une précision pratiquement parfaite, hors dépendances aux périphériques.
    • Sony a utilisé une approche similaire.
      La PlayStation 2 avait besoin d’une puce d’entrée/sortie, et Sony a choisi le CPU de la PS1. Lorsqu’un jeu PS1 était lancé, l’exécution lui était transférée.
      Si ma mémoire est bonne, les premières PlayStation 3 embarquaient le CPU et le GPU de la PS2, mais ils ne servaient pas à grand-chose quand on ne lançait pas de jeux PS2. Ils ont probablement été retirés ensuite, quand Sony est passé à l’émulation pour réduire les coûts.
    • Mettre un vrai CPU Game Boy Advance physique est une vieille astuce, mais elle reste géniale.
      La GBA aussi embarquait le CPU de la GBC pour la rétrocompatibilité, et la cartouche elle-même actionnait un interrupteur physique pour changer de mode. La PS2 pouvait aussi réutiliser le CPU de la PS1 comme composant d’entrée/sortie sur la carte pour la rétrocompatibilité, les autres composants étant, si je me souviens bien, aidés par l’émulation.
    • Walmart avait commencé à vendre au prix réduit quelques jours avant la baisse officielle et la fin des demandes pour l’Ambassador Program.
      Grâce à un post Reddit, j’ai pu l’acheter au prix bas et recevoir aussi les jeux gratuits. Je n’ai presque pas joué aux jeux offerts, mais j’ai eu l’impression d’avoir berné le système.
    • Le CPU GBA fait partie du CPU NDS, c’est pour cela qu’il se trouve aussi dans la 3DS.
  • La 3DS a démarré très lentement, mais elle est finalement devenue l’une de mes consoles préférées.
    Comme je n’avais jamais eu de N64, j’ai découvert Ocarina of Time et Majora’s Mask grâce à leurs excellents remasters 3D. La rétrocompatibilité complète avec la DS était aussi un gros atout, et il faut maintenir Start au lancement si l’on veut éviter l’agrandissement non entier assez disgracieux de l’image.
    L’étendue du homebrew et de l’émulation pris en charge sur une console softmoddée en fait aussi une petite machine très séduisante. J’adore également le design de la petite New 3DS, l’un des meilleurs à mes yeux, et j’ai acheté beaucoup de coques interchangeables au look sympa et ludique.
    Autre point vraiment appréciable : quand les batteries ont commencé à vieillir, j’ai pu appeler Nintendo et acheter deux batteries officielles neuves, une pour la mienne et une pour celle de ma femme. Elles coûtaient environ 15 livres chacune, et on pouvait les remplacer sans démonter la console. C’est devenu rare aujourd’hui.

  • Pendant la pandémie, à cause de mon TDAH, j’ai fini par acheter trois New Nintendo 3DS XL.
    J’en ai importé une du Japon et je l’ai convertie avec une ROM américaine. Je l’adore pour les voyages. L’effet 3D est réussi, c’est bien de pouvoir le désactiver, et l’autonomie est excellente.
    Cela dit, comme pour toutes les passions, quand les objets deviennent rares on se met à les vouloir et à les collectionner ; comme je ne peux pas jouer à trois consoles en même temps, il va sans doute falloir que je m’en sépare.

    • Si tu as trois consoles, tu devrais essayer Tri Force Heroes avec deux amis.
    • S’il existe un moyen d’empêcher les batteries de se détériorer, ou si je peux trouver des batteries de remplacement à l’avenir, je pense que je la garderai simplement.
      J’ai acheté une New Nintendo 2DS XL il y a quelque temps ; c’est la dernière itération de la famille DS, et elle fait tourner les jeux DS, DSi et 3DS. Comme il n’y a que quelques jeux sortis exclusivement pour la « new » DS, elle couvre environ 15 ans d’histoire du jeu vidéo.
      J’essaie d’acheter des jeux DS dès que j’en vois, mais il est déjà difficile d’en trouver à bon prix, et certains titres comme Bravely Default coûtent encore autour de 60 euros par ici. Il y a aussi énormément de jeux industriels médiocres sur DS, donc je les évite.
  • Faire régler la profondeur 3D de la 3DS avec un curseur physique très facilement accessible était une idée de conception géniale.
    Je ne sais pas quelle étude les a conduits à permettre d’ajuster ainsi l’élément central de la 3D, mais cela a fait une différence décisive pour l’utilisabilité de la fonction.

    • À ce stade, on aurait pu s’attendre à ce que les écrans avec rendu de profondeur soient devenus une fonction courante des appareils à écran tactile.
      Avec Face ID, on peut connaître l’écartement des yeux, et cette valeur de curseur pourrait même être ajustée automatiquement.
  • Cet article fait partie d’une excellente série : https://www.copetti.org/writings/consoles/

  • L’une de mes fonctions préférées sur une 3DS jailbreakée est l’application NSUI : https://3ds.eiphax.tech/nsui
    Les sorties officielles sur Virtual Console permettaient de jouer à certains anciens jeux Nintendo sur 3DS, mais on peut utiliser le même wrapper avec n’importe quel jeu des systèmes pris en charge. C’est davantage un wrapper qu’un émulateur, ce qui améliore directement les performances et la compatibilité.
    La 3DS devient ainsi une bonne portable pour profiter de jeux NES/SNES/GB/GBC/GBA avec une précision au pixel près.
    Autre chose que je n’ai réalisée qu’il y a quelques années : plus on utilise une carte microSD de grande capacité, plus la 3DS ralentit. À ma connaissance, toute la console scanne l’intégralité du stockage par blocs ; à partir de 64 Go et plus, cela devient douloureusement lent. C’est particulièrement vrai avec les jeux GBA injectés, car la 3DS redémarre quasiment dans ce mode et rescanne donc le stockage.

  • Je me souviens du passage disant qu’« avant la version système 3.0.0, la mémoire OTP n’était pas masquée, et qu’avec n’importe quelle vulnérabilité on pouvait extraire la clé OTP sans problème »
    À l’époque, pour hacker une 3DS, il fallait downgrader le firmware en 3.0.0 afin de procéder à l’extraction de l’OTP. Mais la 3.0.0 n’était pas entièrement compatible avec la New 3DS, si bien que, sur ce modèle, le simple fait de fermer le clapet avec cet ancien firmware pouvait briquer définitivement la console. C’était le bon temps

  • Cette série est vraiment excellente
    Si vous voulez vous essayer au homebrew sur 3DS, allez voir https://github.com/devkitPro/libctru

  • J’espère que Nintendo n’abandonnera jamais l’expérience de console portable consistant à mettre une console complète dans le creux de la main
    J’aimerais aussi que l’industrie plus large des consoles portables indé se développe
    Ce qui ressemble à la fin imminente des appareils portables haut de gamme, c’est le cloud gaming. Y compris les approches où l’on fait tourner la console à la maison et où l’on streame sur son téléphone
    Au bout du compte, tout dépend de ce que chacun choisit avec son portefeuille. La GBC me manque

    • Je ne pense pas que les consoles portables soient près de disparaître. Le matériel continue de progresser, tandis que les exigences matérielles stagnent
      À mon avis, la Switch a connu un grand succès avec les jeux indés 2D comme Stardew Valley, Hades ou Dead Cells. Ce type de game design fonctionne bien, et de bons graphismes 2D ne paraissent jamais dépassés
      Je doute que les gens paient pour un modèle de streaming défavorable aux consommateurs afin de jouer à d’excellents jeux qui tournent même sur une machine poussive
    • Ça me paraît très peu probable. Stadia a fermé, mais la Switch et le Steam Deck ont tous deux été de grands succès
      La latence du cloud gaming et sa dépendance à une connexion réseau stable restent un problème pour beaucoup de monde. En plus, je doute que la plupart des joueurs aient envie de payer un abonnement de plus, et le cloud gaming finira probablement par aller de pair avec un abonnement
      Si, de toute façon, il faut du matériel pour jouer, autant utiliser un bon appareil portable. Des fabricants de PC comme Asus produisent aussi des appareils portables comme le RoG Ally, et la Switch 2 comme le Steam Deck 2 sont quasiment acquis. Au contraire, les consoles portables semblent continuer à s’améliorer et à gagner des parts de marché
    • Je déteste vraiment que Sony ait arrêté la PSP, mais je comprends pourquoi. C’est aussi pour cette raison que le Steam Deck et ses variantes plus puissantes rencontrent le succès
      Aujourd’hui, les jeux sont moins exclusifs qu’avant, et à moins d’intégrer aussi étroitement le salon et le portable que Nintendo, au point d’en faire un seul appareil, une entreprise crée une séparation inutile
      Imaginez que Nintendo ait aussi sorti une console de salon séparée de la Switch : ça n’aurait probablement pas été une structure viable
      C’est amusant de voir les gens louer le « génie » et l’« innovation » de Nintendo pour avoir créé un appareil portable que l’on branche à la TV. Pendant ce temps, la PSP Go et son dock TV sont là à dire : « les gars, vous ne vous souvenez pas de moi ? ». J’aime beaucoup la PSP Go, elle est vraiment petite et mignonne
    • Les puces ne feront que devenir plus puissantes et plus petites. On peut déjà jouer à beaucoup de jeux sur un Raspberry Pi, et d’ici une dizaine d’années, je pense que des appareils de taille similaire pourront faire tourner les jeux de la génération actuelle
      Je songe à fabriquer une console portable pour ma fille, comme projet amusant
  • Les articles comme celui-ci sont vraiment excellents
    Je m’intéressais à l’architecture GB/GBC et je voulais créer des jeux pour cette plateforme, mais je n’avais pas encore trouvé cet article. Merci de l’avoir publié, et merci à Rodrigo de l’avoir écrit