Aller au contenu


Photo

[PS4/PC/PSP/Switch] Super Mario 64, le portage progresse


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

Posté 20 mai 2020 - 06:51

#1
tikilou

tikilou

    Sunriseur avancé

  • Technicien
  • 329 messages

Depuis le leak du code source, non pas depuis le récent Hack ayant abouti aux fuites de codes sources de jeux et consoles de Nintendo, mais d'une équipe sur Discord ayant longuement travaillé à la décompilation du jeu pour un portage en C, une autre équipe a repris ce dernier pour faire un portage sur PC.

 

Les binaires (exécutables précompilés) ne peuvent pas être légalement distribué, mais le code source du jeu l'est, lui le peut.

 

Le portage du jeu a grandement avancé, on retrouve enfin un support stable de WebGL pour lancer le jeu depuis un navigateur Web, il est également possible de compiler le jeu pour Raspberry Pi, Switch  ( bientôt public) et ce dernier pourra également être lancé sur PS4 sous Linux. (Il se murmure qu'une version PSP, serait dans les clous, et que potentiellement, il serait aussi possible de faire un portage PSvita avec un wrapper OpenGL.)

Le support de DirectX 12 est en passe d'être abandonné visiblement, au profit d'OpenGL uniquement, pouvant être utilisé et porté partout, sachant que le jeu n'est vraiment pas gourmand. Vulkan n'est pas prévu pour le moment, le support de cette API dépendant essentiellement d'un projet tiers.

Progressivement, des options ont été rajoutées, pour augmenter la visibilité de la distance des objets (plus de clipping), sauter l'introduction du jeu lors du lancement d'une nouvelle partie, ainsi que le  réglage du volume, quitter le jeu, et le support des cheats !

 

 

 

 

Bonne nouvelle et pas des moindre de récents apports ont permis aux moddeurs de pouvoir enfin utiliser nativement des textures hautes-résolution, ou, au contraire de désactiver les filtres natifs du jeu afin d'en profiter avec un côté pixel arts. Certains bugs de l'époque ont même été corrigé, comme la texture de la fumée qui n'était pas programmée correctement à l'origine, et afficher une texture corrompue, alors que ladite texture était bien présente dans le jeu.

D'autres se sont carrément lancés dans des tâches plus complexes, un contributeur a réussi à reprendre un modèle de Mario de Super Mario Galaxy et l'intégrer dans Super Mario 64 avec succès, les outils pour pouvoir appliquer ça manuellement à tous les modèles du jeu est en cours, mais il a annoncé que pour sa part, il aura besoin de toutes les contributions possibles pour améliorer chaque objet/personnage du jeu.

Le support des gamepads est le même que SDL, dans la pratique, il accepte et configure de base tous les pads respectant le standard "Xinput", la Dualshock 4 de Sony fonctionne par exemple à merveille en USB et Bluetooth sous Linux.

Le support du multilingue avance lui aussi grandement, bien que la version européenne du jeu ne soit pas encore fonctionnelle (des problèmes d'affichage des polices et l'absence de son), il devrait être possible de bénéficier de la traduction française sur les versions US et JP. D'autres traductions, comme l'Espagnol, sont également en cours.

 

Dans tous les cas, vous devrez récupérer par vos propres moyens la bonne version us de la rom Super Mario 64 pour émulateurs Nintendo 64, au format Z64, sachez que vous n'avez légalement le droit d'en disposer qui si vous avez le jeu original en votre possession.

Le code source dépend des textures, des fichiers d'animation et modèles 3D, ainsi que les banques de sons et fichiers de séquençages du jeu original et quelques parties en assembleur, c'est pourquoi l'exécutable prêt à l'emploi ne peut pas être distribué. Et c'est également pourquoi Nintendo ne peut rien faire contre le code source, obtenu par rétro-ingénierie, pratique légale dans la plupart des pays du monde. (Mais pas au Japon)

Dans la pratique, ce code source donne le même résultat (et même mieux, avec toutes les corrections et apports) que celui en possession de Nintendo, mais il est différent du leur dans sa forme et composition ce qui fait qu'il ne tombe pas sous le coup d'un copyright.

Tout ça c'est bien beau, me direz vous, mais comme le jeu ne peut pas être distribué tel quel, comment compiler le jeu pour obtenir quelque chose qu'on peut exécuter/lancer et jouer avec ?

En réalité, c'est beaucoup plus simple qu'il n'y paraît, il va falloir compiler le jeu, c'est à dire, avec quelques outils, convertir le code source du jeu programmé avec le langage "C", en un exécutable binaire écrit en langage machine (vous savez, cette suite de 1 et de 0, seules choses qu'un processeur comprend concrètement ?...) voici les instruction plateforme par plateforme, c'est faisable tant que vous disposez d'une machine ayant un processeur du 64 bits. Le 32 bits est théoriquement possible, mais du fait de limitations technique et sa progressive disparition, les développeurs ne se concentrent pas sur son support et des bugs ne concernant que ces versions, peuvent parfois apparaître.
Suivez simplement les commandes qui suivent, selon votre situation, et n'oubliez pas de renommer la rom en "baserom.us.z64" (pour vérifier que la rom que vous avez soit bien la bonne, vérifiez avec "md5sum" que la somme md5 du fichier soit bien 20b854b239203baf6c961b850a4a51a2) et de l'intégrer à la racine du dossier du code source du jeu.


Préparer pour Linux, sous Linux sur PC et PS4 (Distributions Ubuntu et Debian) :

-64 bits :

sudo apt install build-essential git python3 libaudiofile-dev libglew-dev libsdl2-dev

-32 bits :

sudo apt install build-essential git python3 libaudiofile-dev libglew-dev:i386 libsdl2-dev:i386

Préparer pour Linux, sous Linux sur PC et PS4 (Distributions Manjaro et ArchLinux) :

-64 bits uniquement :

sudo pacman -S base-devel python audiofile sdl2 glew

Commande commune à toutes les distributions et systèmes :

-Pour récupérer le code source

git clone https://github.com/sm64pc/sm64pc.git --branch master

Ici, "master" peut être remplacé par "nightly" pour bénéficier des dernières nouveautés/contributions de la communauté sur le jeu.

Gardez à l'esprit toutefois que la compilation peut parfois échouer, tout n'ayant pas encore été passé en revue afin d'assurer la cohérence du tout.

-Déplacez vous dans le terminal/invite de commande dans le dossier contenant le code source avec la commande "cd" (ici ça peut être sm64pc, sm64pc-master, ou sm64pc-nightly, selon que vous utilisiez git ou téléchargiez directement l'archive zip contenant toute le code source, et l'extrayez manuellement.

Par exemple "cd /home/Romain/sm64pc" sous Linux ou "cd D:\sm64pc" sous Windows.

Sachez qu'une simple commande peut mettre à jour le code source avec les dernières nouveautés de la branche choisie, sans tout devoir re-télécharger.
 

git pull

Compiler Super Mario 64 pour Linux :
 

make clean && make -j$(nproc) VERSION=us BETTERCAMERA=1 EXT_OPTIONS_MENU=1 NODRAWINGDISTANCE=1

-Pour compiler une version 32 bits, vous devez également rajouter aux arguments de make :

MARCH=i686 TARGET_BITS=32

Ici "make" est l'outil permettant de compiler le code source avec GCC, un compilateur très connu, ayant lui même été utilisé par Nintendo en 1996 pour compiler le jeu original. (Avec des oublis, ayant entraîné une chute des performances et facilité la décompilation du jeu...

La fonction "clean" permettra de s'assurer à coup sûr que le dossier des binaires du jeu soit bien nettoyer pour recompiler proprement depuis le début.

"&&" permet de passer plusieurs commandes à la suite sur une seule ligne.

"-j" est un argument permettant d'indiquer le nombre de coeurs de votre processeur pour compiler  un binaire. Habituellement, ou peut indiquer directement -j4 si l'on dispose d'un core i5 avec quatre coeurs par exemple. Mais ici, remplacer un chiffre par $(nproc) permet à chacun de ne plus s'en soucier et d'utiliser le nombre maximum de cœurs disponibles. On compile donc le jeu plus rapidement par défaut.
Évidemment, si vous avez besoin d'une bonne partie des ressources de votre PC durant la compilation, vous pouvez remplacer par -j1 ou -j2 , selon votre désir.

VERSION=us  permet d'indiquer que vous allez extraire la rom US . (Pour la rom EU [PAL], utiliser l'argument "eu", et pour la rom japonaise, utiliser l'argument "jp".

BETTERCAMERA=0 permet de définir si vous voulez activez la gestion de la caméra comme dans le jeu d'origine, ou amélioré (à savoir, un vrai support fin de la caméra avec le joystick droit, comme la majorité des jeux récents), la valeur 0 permet de conserver le mécanisme d'origine, tandis que la valeur 1 compile le jeu avec le système moderne.

 

EXT_OPTIONS_MENU=1 permet d'activer le menu d'options supplémentaire permettant de désactiver le filtre graphique, activer ou désactiver la synchronisation verticale, régler le volume sonore, accéder aux cheats...

 

NODRAWINGDISTANCE=1 permet de désactiver la limitation d'origine du jeu pour l'affichage d'objets distants. Ce phénomène se nomme habituellement clipping, en relation avec la distance d'affichage configurée dans les jeux, selon les capacités du matériel sur lequel on joue.

-L’exécutable du jeu sera compilé dans le dossier build/us_pc et sera nommé sm64.us.f3dex2e, il ne vous restera plus qu'à l’exécuter.

Lors du lancement du jeu, un fichier sm64config.txt sera créé à côté, qui contiendra toutes les options de configurations (association des boutons de jeu, filtres, vsync, etc...).

Le fichier de sauvegarde sm64_save_file.bin sera créé dès votre première sauvegarde et respecte les spécifications d'origine de la nintendo 64. Il est théoriquement possible de l'utiliser avec un émulateur, ou même, avec la nintendo 64 si on a le matériel pour, et vice versa. (À terme, ce support sera remplacé par un fichier texte avec des valeurs claires).

Compiler Super Mario 64 pour Raspberry PI et autres matériels avec processeur ARM :

-Ajoutez simplement aux arguments de l'outil de compilation "make" :

TARGET_RPI=1

Globalement, le binaire obtenu devrait fonctionner sur tout processeur ARM, y compris sous Linux sur Nintendo Switch.

Le binaire sera disponible dans le même dossier que la version PC, et sera nommé sm64.us.f3dex2e.arm

Optionnellement, il est possible d'optimiser la compilation pour chaque version du RaspberryPi avec ce script prêt à l'emploi.


Compiler Super Mario 64 pour Windows (Sous Linux Manjaro ou ArchLinux) :

 

La première étape sera d'installer MSYS2 tel qu'indiqué dans ce guide.

Pui l'on installe les dépendances liées à la compilation de programmes pour Windows.

pacman -S mingw-w64-i686-glew mingw-w64-x86_64-glew mingw-w64-i686-SDL2 mingw-w64-x86_64-SDL2 python3

-Dans le dossier du code source du jeu, avec la commande cd, rendez vous dans le dossier ./tools/audiofile-0.3.6/ puis lancez la commande suivante :

autoreconf -i

-Puis on lance la configuration du script de compilation :

PATH=/mingw64/bin:/mingw32/bin:$PATH LIBS=-lstdc++ ./configure --disable-docs

-Puis on lance la compilation de la librairie audiofile configurée pour windows :

PATH=/mingw64/bin:/mingw32/bin:$PATH make

-On créer un dossier "lib" dans le dossier "tools" :

mkdir ../lib

-Puis on y copie les fichiers de la librairie configurée pour windows, fraichement compilés

cp libaudiofile/.libs/libaudiofile.a ../lib/ && cp libaudiofile/.libs/libaudiofile.la ../lib/

-On retourne dans le dossier tools avec la commande cd , puis éditez le fichier Makefile et recherchez la ligne tabledesign_CFLAGS := -Wno-uninitialized -laudiofile puis ajoutez y -lstdc++
La ligne en question devrait alors ressembler à ça désormais :

tabledesign_CFLAGS := -Wno-uninitialized -laudiofile -lstdc++

-On démarre désormais la compilation binaire de ces librairies configurées pour windows :

PATH=/mingw64/bin:/mingw32/bin:$PATH make

On retourne avec la commande cd dans le dossier sm64pc (à la racine du dossier du code source de Super Mario 64) et ENFIN on peut compiler le jeu pour windows :

 

PATH=/mingw32/bin:/mingw64/bin:$PATH make

-L’exécutable du jeu sera compilé dans le dossier build/us_pc et sera nommé sm64.us.f3dex2e.exe, il ne vous restera plus qu'à l’exécuter, sous Windows, ou avec Wine, ou Proton, ou même ReactOS, pour le tester.

 

Compiler Super Mario 64 pour navigateurs web (WebGL) sous Manjaro/ArchLinux :

-Il faudra tout d'abord installer emscripten pour pouvoir compiler la version WebGL de Super Mario 64, On aura d'abord besoin d'installer son paquet :

sudo pacman -S emscripten

-Puis il faudra créer un lien symbolique des binaires vers le dossier qui contient des executables locaux copiés par l'utilisateur.

sudo ln -s /usr/lib/emscripten/emcc /usr/local/bin/ && sudo ln -s /usr/lib/emscripten/emcc.py /usr/local/bin/

-On tente de lancer une première fois emscripten (qui échouera à cause d'une erreur de configuration), ce qui aura pour effet de créer son fichier de configuration, puis on l'édite. (remplacez nano par gedit ou tout autre éditeur graphique ou non, de votre choix)

nano ~/.emscripten

-Puis l'on remplace :
 

BINARYEN_ROOT = os.path.expanduser(os.getenv('BINARYEN', '')) # directory

-par

BINARYEN_ROOT = os.path.expanduser(os.getenv('BINARYEN', '/usr/lib/emscripten/')) # directory

Ici, on indique en fait au fichier de configuration, ou se situent les fichiers d'emscripten. (/usr/lib/emscripten/)

-Enfin, on peut compiler comme sur PC, à une différence près qu'on rajoute cet argument à make :

 TARGET_WEB=1

Par exemple ça peut donner ceci :

make clean && make -j$(nproc) VERSION=us TARGET_WEB=1 BETTERCAMERA=1 EXT_OPTIONS_MENU=1 NODRAWINGDISTANCE=1

-L’exécutable du jeu sera compilé dans le dossier build/us_web et sera composés de trois fichiers, respectivement nommés sm64.us.f3dex2e.html, sm64.us.f3dex2e.js, et sm64.us.f3dex2e.wasm, il ne vous restera plus qu'à l’uploader sur votre serveur web et à tester avec n'importe quel navigateur supportant WebGL. La compilation est un peu plus longue que la version PC, et l'internaute devra patienter le temps du téléchargement des fichiers dans le cache du navigateur.
La version web intègre un support des sauvegardes, également. Attention à ne pas effacer les coockies et le cache de la page web du jeu pour ne pas les perdre.

À noter que le support des gamepads est aussi fonctionnel avec les navigateurs webs !

 

Il existe deux serveurs discord, l'un du projet de décompilation, l'autre du port PC et des moddeurs.

Malheureusement ces derniers ont été fermés aux invitations suite à une avalanche de spammeurs et haters, et pour pouvoir continuer à oeuvrer dans la paix à l'abris des regards indiscrets.

Il peut arriver que parfois de nouveaux liens d'invitation soient créé, si c'est le cas, ils devraient apparaître sur la page github du projet de portage PC.

Vous pouvez par ailleurs reporter vos bugs et demandes de nouvelles fonctionnalités, en anglais, sur cette page, mais veillez à vérifier que votre demande n'existe pas déjà dans la liste déjà présente.

 

 

 

 

 

 


  • Retour en haut

Posté 20 mai 2020 - 06:51

#2
tralala

tralala

    \0/ Postman \0/

  • Newser Expert
  • 9 152 messages
  • Sexe:Male
merci .
  • Retour en haut

Posté 20 mai 2020 - 07:07

#3
RomAnOCrY

RomAnOCrY

    CryptoManiac

  • Modérateur
  • 1 837 messages
  • Sexe:Male
  • Lieu:28
  • Passions:http://chezromain.fr
Merci tikilou !
Après ca serait peut-etre mieux une news, puis un lien vers le forum ?
  • Retour en haut

Posté 20 mai 2020 - 07:20

#4
Alpha/

Alpha/

    Sunriseur

  • Members
  • PipPip
  • 225 messages
Merci pour la news très complète, digne d'un tuto :)
  • Retour en haut

Posté 20 mai 2020 - 08:14

#5
Linkynimes

Linkynimes

    Sunriseur elite

  • Members
  • PipPipPipPip
  • 1 984 messages
  • Sexe:Male
Merci pour la news, très complet tous sa :)
  • Retour en haut

Posté 20 mai 2020 - 08:45

#6
crash251

crash251

    Sunriseur PRIVILEGE

  • Members
  • PipPipPipPipPip
  • 12 286 messages
  • Sexe:Male
  • Lieu:76
  • Passions:Hacking, cracking, carding, phreaking...
Excellent , merci

Mail: crashoverridehack@gmx.fr pour tout Hack dans la région du 76 ,27 envoi Postal possible
 

Montage SX core = "Switch FAT/ Mariko" | SX Lite = Switch Lite" | SwitchMe = Switch FAT V1

  • Retour en haut

Posté 20 mai 2020 - 09:27

#7
polo_cha2

polo_cha2

    Sunriseur avancé

  • Members
  • PipPipPip
  • 391 messages
  • Sexe:Male
  • Passions:J'aime beaucoup l'informatique en tous genre et la programmation !
Très bonne news ! Elles sont rares maintenant :P

Bonjour moi c'est polo ! Alors pour commencer j'écris ce texte pour me présenter et pourquoi je suis sur ls. Donc si je suis sur ls c'est parce que j'aime le hack et tous ce qui tourne autours. Je suis aussi un programmer en herbe.

 

Et voici mes consoles hack :

 

 

NINTENDO

 

Nintendo switch bleu et rouge sous retroreloaded modifié sans emunand car je suis ban en 9.2.0

New nintendo 3ds sous Luma 3ds (anciennement sous gateway) en dernière version

Nintendo WiiU sous CBHC en dernière versio aussi

 

 

PLAYSTATION

 

 

Playstation 3 sous cobra ode pucée

 

 

Consoles non hack

 

 

Nintendo switch rouge et bleu exclusive au online

 

 

 

Voilà ! Si j'ai pas hack beaucoup de console c'est normal c'est car je suis encore jeune ^^ (j'avais une wii avant mais je l'ai donné à un ami proche elle était sous wiiflow pour les curieux). J'espère avoir répondu à vos question

 

 

 

PS : Je suis dans la Team PoyoNX ^^

 

  • Retour en haut

Posté 20 mai 2020 - 11:52

#8
cflam74

cflam74

    Sunriseur

  • Members
  • PipPip
  • 153 messages
Excellent tou ca ,à quand le portage de Zelda Ocarina of Time :)
  • Retour en haut

Posté 20 mai 2020 - 13:13

#9
crazycrazy

crazycrazy

    Sunriseur elite

  • Members
  • PipPipPipPip
  • 1 090 messages
  • Sexe:Male
Toppissime !!! Merci
  • Retour en haut

Posté 20 mai 2020 - 16:00

#10
karimamazigh 06

karimamazigh 06

    Nouveau / peu actif

  • Members
  • Pip
  • 9 messages
merciii pour ttes ces explications ^^
  • Retour en haut

Posté 20 mai 2020 - 17:15

#11
Hyndrid QC

Hyndrid QC

    https://twitter.com/hyndrid

  • Members
  • PipPipPipPip
  • 1 347 messages
  • Sexe:Male
  • Lieu:quebec
personne pour en faire un fpkg pour 5.05

Signaturhttps://twitter.com/hyndride éditée : Les publicités et liens vers des sites extérieurs sont interdits. Re-lire la charte

  • Retour en haut

Posté 20 mai 2020 - 20:07

#12
tikilou

tikilou

    Sunriseur avancé

  • Technicien
  • 329 messages

personne pour en faire un fpkg pour 5.05

Pour lancer Mario sur PS4, va voir par ici => https://t.me/ps4linux4homebrews


  • Retour en haut

Posté 20 mai 2020 - 20:42

#13
tikilou

tikilou

    Sunriseur avancé

  • Technicien
  • 329 messages

Excellent tou ca ,à quand le portage de Zelda Ocarina of Time :)

La team qui a décompilé le jeu bosse dessus, ainsi que sur le suivant. Ils avancent mais c'est plus difficile que sm64.
Ocarina of Time est très proche de sm64, les deux utilisent le même moteur de jeu. Majora Mask lui, en est une version améliorée.


  • Retour en haut

Posté 21 mai 2020 - 14:10

#14
abdelatif777

abdelatif777

    Sunriseur

  • Members
  • PipPip
  • 212 messages
  • Sexe:Male
  • Lieu:creil
Super news, dans la forme et dans le fond,bien détaillée avec un tuto,top
  • Retour en haut

Posté 24 mai 2020 - 15:17

#15
DOCKY99

DOCKY99

    Sunriseur avancé

  • Members
  • PipPipPip
  • 842 messages
  • Sexe:Male

cool le support multilang et la prise en charge des cheats.


bannierecream5hb.jpg

  • Retour en haut




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

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