Aller au contenu


Photo

Wii System Menu Extractor & Normalizer


  • Veuillez vous connecter pour répondre
5 réponses à ce sujet

Posté aujourd'hui, 17:19

#1
tikilou

tikilou

    Sunriseur avancé

  • Technicien
  • 554 messages

logo.png?raw=true

 

Wii System Menu Extractor & Normalizer
 
Un outil avancé de reverse engineering, écrit en Rust, conçu pour extraire, décompresser et normaliser autant de ressources que possible du Menu Système de la Wii vers des formats standards et ouverts (glTF, PNG, JSON, WAV).
Il peut également — bien que ce ne soit pas son objectif principal — extraire et convertir des fichiers de certains jeux Wii.
 

1. Accès aux données (moteurs d’extraction)
- ASH (.ash)
: Machine virtuelle Huffman/LZ77 personnalisée et intégrée, permettant une décompression bit-par-bit exacte.
- LZ77 (.LZ, .lz7) : Prise en charge complète des variantes 0x10, avec détection robuste.
- Yaz0 (.szs) : Décompresseur LZSS haute performance pour les archives de chaînes.
- Archives standards (.app, .arc, .zip) : Extraction complète des arborescences U8 et ZIP.
- Conteneurs NW4R (.brres, .breft) : Extraction des sous-fichiers par scan heuristique de signatures.

2. Normalisation des ressources (qualité musée)
Graphismes (pixel-perfect)

- TEX0 / TPL / BTI → PNG : Décodage GX complet.
- Amélioration unique : stratégie « White-Alpha » pour la gestion des formats à intensité (I4, IA4), garantissant des éléments d’interface sans artefacts noirs.
Prise en charge complète de RGBA8 (planaire) et CMPR (Wii BC1/DXT1).
- Gestion des palettes (PLT0) : Application automatique aux textures indexées (CI4 / CI8).
 
Interface (dépendante de l’UI)
- BRLYT → JSON : Reconstruction de l’arbre de scène hiérarchique complexe.
- BRLAN → JSON : Extraction des courbes d’animation.
 
Modèles 3D
- MDL0 → glTF 2.0 : Export de la géométrie complète (versions v1 à v11).
 
Typographie
- BRFNT → JSON & PNG : Décodage bit-par-bit exact, incluant le tuilage spécifique Wii 8×4 utilisé par les polices (Rodin).
Extraction des métriques de glyphes (CWDH) et des tables Unicode (CMAP).
 
Audio & musique
- BWAV → WAV : Prise en charge des fichiers du Menu Système.
- RWAV / RWSD / RBNK → WAV : Décodage DSP-ADPCM matériel 16 bits.
- BRSEQ → MIDI & JSON : Séquences musicales (travail encore en cours).
 
Reverse engineering
- SEL → JSON : Prise en charge des fichiers binaires (Static Executable Linker).
Récupération du chemin de build d’origine (.elf) et de la table complète des symboles (noms internes des fonctions).

 

UTILISATION

 

Build

cargo build --release

Exécution

./target/release/wii_system_menu_extractor <CHEMIN_DU_DOSSIER_OU_FICHIER_TITLE>

Le programme traite les fichiers de manière idempotente : il détecte les extractions déjà effectuées et ne traite que les nouveaux fichiers ou ceux modifiés.
Lancer le programme directement (sans terminal) dans le répertoire courant produit le même effet sur son contenu, même sans sortie graphique.

Il n’existe pas encore de version officielle ni de numéro de version. Le programme est toujours en développement, mais il est fonctionnel et suffisamment efficace pour la majorité des usages.

 

 

APPIMAGE

 

Un script de build AppImage est fourni dans le dossier scripts.
Une AppImage prête à l’emploi est également disponible dans le dossier packages.

Le programme a été compilé sous Debian 13 et nécessite au minimum les versions de certaines bibliothèques incluses dans cette distribution de référence.
En conséquence, cette AppImage devrait fonctionner sur toutes les distributions Linux à jour.

 

 

ETAT DU SUPPORT (CIBLES)

 

Format : TEX0 / TPL
Normalisation : PNG
Statut : Ultra-fidélité (White-Alpha)

Format : BRLYT / BRLAN
Normalisation : JSON
Statut : 100 % (structure arborescente)

Format : BRFNT
Normalisation : PNG + JSON
Statut : Pixel-perfect (Rodin tuilé)

Format : SEL
Normalisation : JSON
Statut : Symboles et chemin ELF

Format : BWAV / RWAV
Normalisation : WAV
Statut : Bit-perfect

Format : MDL0
Normalisation : glTF 2.0
Statut : Géométrie et UV

Format : BMG
Normalisation : JSON
Statut : Multilingue

 

 

GLOSSAIRE DES FORMATS ET JSON NORMALISES

 

 

Archives et compression

 

ASH / LZ77 / Yaz0
Formats de compression propriétaires.
Normalisation : décompression vers les fichiers originaux (.arc, .brres).

U8 / ARC / APP
Archives de fichiers non compressées.
Normalisation : extraction dans des sous-dossiers _extracted.

 

 

Graphismes et typographie

 

TPL / TEX0 / BTI (textures Wii) vers PNG.
Stockage tuilé GX. Les formats IA4 et IA8 sont normalisés via la stratégie White-Alpha pour l’interface.

BRFNT (police binaire) vers atlas PNG et JSON.
Le JSON contient les métriques (hauteur, ligne de base) et le mapping Unicode (code vers index de glyphe).
Champs JSON : ascent (hauteur au-dessus de la ligne de base), widths (largeur par glyphe).

 

 

Interface et animation

 

BRLYT (layout) vers JSON.
Stocke l’arbre hiérarchique de l’interface (panes).
Le champ root contient la pile de panes avec le nom, les positions x/y/z, l’échelle, la rotation et les enfants hiérarchiques.

BRLAN (animation de layout) vers JSON.
Contient les séquences d’animation appliquées aux panes BRLYT.
Champs JSON : animations (cibles), keyframes avec time (frame) et property (valeur).

 

 

Audio

 

RWAV / BWAV vers WAV.
Fichiers audio bruts, souvent en DSP-ADPCM (compression matérielle 4 bits) ou PCM16.

BRSAR / RWSD vers WAV et JSON.
Le JSON liste les sons et leurs propriétés (volume, pitch).

 

 

Reverse engineering

 

SEL (table des symboles) vers JSON.
Contient les métadonnées de linkage du code Wii, souvent présentes dans les fichiers .app.
Champs JSON : internal_path (chemin d’origine sur le PC du développeur Nintendo), symbols (liste complète des noms de fonctions C++ récupérées).

BMG (Message Group) vers JSON.
Table de textes localisés.
Champ JSON : messages associe un identifiant numérique à la chaîne traduite.

 

 

LICENCE

 

GNU General Public License version 3 (GPL 3) – Tikilou

 

 

LIENS

 

AppImage :
https://github.com/T...x86_64.AppImage
 

Dépôt GitHub :
https://github.com/T...ctor-Normalizer

 

 

 

PS: Ce projet fait partie d’un projet “Museum” beaucoup plus vaste.

C’est encore en développement.
L’approche est volontairement alignée avec celle de Valve sur la préservation et l’accès aux contenus.


Modifié par tikilou, aujourd'hui, 21:45.

  • Retour en haut

Posté aujourd'hui, 17:33

#2
RomAnOCrY

RomAnOCrY

    CryptoManiac

  • Modérateur
  • 2 123 messages
  • Sexe:Male
  • Lieu:28
  • Passions:https://romainj.com
Tikilou, je te laisse la remettre en forme ?
  • Retour en haut

Posté aujourd'hui, 18:14

#3
MeteK

MeteK

    Sunriseur avancé

  • Members
  • PipPipPip
  • 368 messages
  • Sexe:Male

Tikilou, je te laisse la remettre en forme ?


Ouais elle à l'air un peu fatiguée :D
  • Retour en haut

Posté aujourd'hui, 19:31

#4
tikilou

tikilou

    Sunriseur avancé

  • Technicien
  • 554 messages
Tikilou, je te laisse la remettre en forme ?

 

Tikilou, je te laisse la remettre en forme ?

Les liens sont tout en bas, avec le dépôt Github et l'AppImage à télécharger !

Il n'y a pas de capture d'écran en tant que tel, c'est un outil sans interface graphique, prévu pour le terminal, utilisable aussi sans interface graphique ou appelé depuis un script/outil tiers.
Si lancé depuis le terminal, on voit juste défiler l'extraction des fichiers, si on le lance sans terminal, tout le contenu du dossier où est présent l'appimage, est extrait.


Modifié par tikilou, aujourd'hui, 19:32.

  • Retour en haut

Posté aujourd'hui, 21:40

#5
Linkynimes

Linkynimes

    Sunriseur PRIVILEGE

  • Members
  • PipPipPipPipPip
  • 3 901 messages
  • Sexe:Female

Tikilou, je te laisse la remettre en forme ?

 

Tikilou, je te laisse la remettre en forme ?

Les liens sont tout en bas, avec le dépôt Github et l'AppImage à télécharger !
Il n'y a pas de capture d'écran en tant que tel, c'est un outil sans interface graphique, prévu pour le terminal, utilisable aussi sans interface graphique ou appelé depuis un script/outil tiers.
Si lancé depuis le terminal, on voit juste défiler l'extraction des fichiers, si on le lance sans terminal, tout le contenu du dossier où est présent l'appimage, est extrait.


Hello
Le lien de l'app image est cassé

Merci pour la news

Modifié par Linkynimes, aujourd'hui, 21:40.

  • Retour en haut

Posté aujourd'hui, 21:48

#6
tikilou

tikilou

    Sunriseur avancé

  • Technicien
  • 554 messages

Hello
Le lien de l'app image est cassé

Merci pour la news

Le lien est réparé. Pensez à clique sur le petit icône de téléchargement sur github, tout à droite.  
 


  • Retour en haut




0 utilisateur(s) li(sen)t ce sujet

0 invité(s) et 0 utilisateur(s) anonyme(s)