1 points par GN⁺ 2025-12-12 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Basé sur le projet de décompilation Super Mario 64 pour Nintendo 64, une version a été portée exclusivement pour PlayStation (PSX)
  • Il inclut des modifications importantes adaptées au matériel PS1, notamment le support de la vibration DualShock, la conversion vers des calculs à virgule fixe et l’optimisation du rendu
  • Ajout de fonctionnalités d’optimisation des performances comme le préprocesseur graphique, la compression de textures et l’optimisation mémoire des animations
  • Plusieurs bogues connus subsistent, dont un contrôle de la caméra incomplet, des problèmes de collision et de crash et une impossibilité de générer la musique
  • Un expérimental de portage multi-plateforme de jeu classique, intéressant pour le développement de consoles legacy et la recherche en reverse engineering

Aperçu du projet

  • Ce code est un fork de la version entièrement décompilée de Super Mario 64 (J/U/E/SH), ciblant uniquement le PSX et le PC (débogage)
    • Le build Nintendo 64 n’est plus pris en charge
    • Actuellement, seul le ROM US peut être compilé
  • La compilation du jeu n’inclut pas les assets originaux, et l’extraction des assets depuis une ROM d’origine est nécessaire

Fonctionnalités principales

  • Ajout d’un graphique compatible avec la DualShock™, imitant l’affichage d’origine “Rumble Pak Compatible”
  • Prise en charge du signal de vibration analogique pour le gros moteur et du signal numérique pour le petit moteur de la DualShock
  • Mise en place d’un soft float basse précision pour PSX afin de minimiser la baisse de performance des calculs flottants
  • Remplacement du code par de la mathématique à virgule fixe, avec utilisation de vecteurs et matrices d’entiers 16 bits, norme PSX
  • Simplification et réécriture du render graph worker
  • Subdivision de polygones (jusqu’à 2x) pour atténuer les problèmes de gros polygones
  • Conversion des RSP Display Lists en format personnalisé en mode JIT, pour améliorer la vitesse de traitement
  • Préprocesseur de display list pour supprimer les instructions inutiles et optimiser les meshes
  • Compression des animations Mario (580,632 → 190,324 octets) avec placement direct en VRAM
  • Ajout d’un profiler personnalisé et d’un encodeur de texture 4bpp
  • Remplacement par des ombres hexagonales en tenant compte des limites de transparence de la PSX
  • (Prévu) Réécriture de la rotation de caméra via le stick analogique droit et du système de sous-composants Goddard

Problèmes connus

  • Arbres flottants, certaines animations qui ne fonctionnent pas ou provoquent un crash
  • Impossible de générer la musique, effets sonores manquants ou déformés
  • Contrôle de caméra incomplet, crash en entrant dans certains niveaux
  • Échec du chargement de la séquence de fin, Lakitu n’apparaît pas, Pol ne fonctionne pas
  • Temps de chargement élevé à cause du chargement individuel des textures, distorsion des textures due aux limites de la PSX
  • Préprocesseur graphique à améliorer, erreurs de rendu sur certaines textures, écran titre incomplet, menu pause ne répond pas

Méthode de compilation

Linux

  • Installez la chaîne d’outils mipsel-none-elf-gcc, puis clonez le dépôt
  • Placez le fichier baserom.us.z64 à la racine du dépôt
  • (Optionnel) Ajoutez les fichiers de bande-son .wav (0~37) dans le dossier .local
  • Exécutez make pour générer l’image ISO (build/us_psx/sm64.us.iso)
  • La version benchmark (make BENCH=1) génère uniquement des ELF/EXE sans ISO et nécessite une PSX 8 Mo de RAM

Windows (non vérifié)

  • Installez MSYS2 puis configurez le paquet mingw-w64
  • Installez mipsel-none-elf-gcc et clonez le dépôt sm64-psx
  • Déposez le fichier baserom.us.z64 puis exécutez make
  • Les résultats de build sont générés aux mêmes emplacements que sous Linux

Dépannage

  • Si gcc n’est pas reconnu, vérifiez que vous n’avez pas lancé un environnement MSYS2 incorrect
  • Si baserom.us.z64 est manquant, vérifiez l’emplacement du fichier
  • Si le Makefile n’est pas trouvé, vérifiez le chemin du répertoire
  • En cas d’erreur de paquets, exécutez pacman -Syu puis pacman -Su pour mettre à jour
  • Vérifiez le fonctionnement de mipsel gcc via la commande mipsel-none-elf-gcc -v
  • Lors d’un changement de plateforme, make -C tools clean est nécessaire pour recompiler les outils

Structure du projet

  • actors : comportement des objets, géolayout, display lists
  • assets : animations et données de démo
  • src : sources C du cœur du jeu (audio, moteur, jeu, menus, portage, etc.)
  • textures, text, levels : données graphiques et niveaux
  • tools : outils de build
  • lib : contient le code SDK N64

Contributions

  • Pull Request les bienvenues
  • Avant les changements majeurs, il est recommandé de créer une Issue puis d’en discuter

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.