mupen64plus: Le premier emulateur Nintendo 64 en Multisampling! Grace à moi! Youhou!!!
Par Narann le vendredi, 26 février 2010, 22:55 - Mes coups de coeur - Lien permanent
Ma première contribution à un projet Open Source!
Hahaaa! Ayé, je suis un vrai développeur! (ironie inside :baffed: ) En effet, je viens de me faire accepter mon second patch pour le projet mupen64plus. Pour ceux qui ne connaissent pas, c'est un émulateur de Nintendo 64 (console sur laquelle j'ai passé mes plus belles années de jeux vidéo :sourit: ) qui est, depuis peu, multiplateforme.
Intro
J'ai découvert cet émulateur (dont j'avais déjà entendu le nom) en version 1.5 à la suite d'un épisode de The Big Bang Theory (série que je conseil à toute les personnes qui ont un petit coté geek en eux). Dans cet épisode, Sheldon joue à Super Mario 64 et je n'ai pas pu résisté aux son du bouton Start: "Tidon didon!" qui lui est si particulier.
Étant sous Linux à ce moment là (Ubuntu), je commence à chercher un émulateur N64 sur cette plateforme. Le nom qui revenait tout le temps était mupen64plus (sous Windows je n'aurai même pas réfléchie, ça aurait été Project 64, lequel n'est plus mis à jour depuis 4-5 ans, pi basta!) Ni une ni deux:
aptitude install mupen64plus
Puis je lance la bête. L'émulateur était tout à fait honorable et j'ai joué quelques heures avec avant que l'envie d'en savoir plus sur cet émulateur open source ne prenne le dessus sur mon envie de jouer (je suis comme ça, quand j'utilise un truc plus d'une heure, je peut pas m'empêcher d'aller chercher des infos sur le net! :seSentCon: ).
Puis je tombe sur un message d'un des développeur qui annonce travailler sur la version 2.0 de mupen64plus qui comprend principalement une ré-architecture complète du code (qui est en C à la base) afin de le rendre multiplateforme. Il précise que l'émulateur est normalement "compilable sous Windows mais n'a pas essayé". Je chope les sources "pour regarder" puis envois un mail pour fayotter congratuler le développeur pour son taff (il faut voir de quoi il est parti! o_O). Il demande si je peut essayer de le compiler pour Windows. Bon, compiler je dois pouvoir en être capable.
Premier patch
Grosse surprise, aucun soucis lors de la compilation: Tout marche! o_O La grande classe (pour moi! :baffed: ), je commence à jouer sur un émulateur "que c'est moi qui l'ai compilé". Puis arrive le premier (et seul bug pour l'instant que j'ai vu): Un fatal error, Un gros dépassement de mémoire à la con (que Linux il le vois pas mais que Windows il lui pardonne pas) sur le plugin d'affichage OpenGL (fingers in the noze! :aupoil: ).
Je questionne le dev la dessus. Puis, (un peu par fierté je l'avoue), j'entame seul ma quête à la recherche de la fuite mémoire. S'en suit quelques bonnes grosses soirées de debug intensif (j'ai pu découvrir le debug sous Visual C++ 2008 Express. C'est cool en fait! :seSentCon: ) pour, finalement, découvrir l'endroit de la faille.
Je n'en revenais pas moi même! Je venais de trouver un pauvre décalage de byte paumé les tréfonds du code. Je suis loin d'être un développeur et j'ai failli abandonné plusieurs fois. Je donne la solution au dev qui modifie le code dans la journée.
Le second patch
Bon, les jeux N64 en Full HD, ça à une meilleur définition, mais c'est pas terrible. Vu que j'avais bien pataugé dans le code du plugin d'affichage pour mon premier patch, je commençai à savoir comment il fonctionnait. Puis, en me rendant compte que malgré le faible nombre de polygone, aucun émulateur N64 ne proposait d'option de Multisampling, je me décide à trouver un moyen "de mettre sur Multisampling la dedans"! Encore une fois, pour le fun, "pour moi". :laClasse:
EDIT 31/07/2010: Après vérification, l'émulateur Project 64 faisait déjà du multisampling depuis longtemps... -_-' Epic fail alors...
Deux soirs plus tard, le multisampling était possible! En fait c'est super simple: Prenez un programme OpenGL (Ici c'est dans une fenêtre SDL), tapez:
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 16); //Soyons fou!
Et paf! Vous avez sur Multisampling dans votre affichage OpenGL...
Bon, c'est subtile mais ça change quand même pas mal quand ça bouge.
J'en parle au dev qui m'explique les deux-trois choses à faire pour implémenter ça proprement et je propose un patch qu'il implémente le lendemain. :sourit:
Je me doute bien que n'importe quel développeur qui à fait de l'OpenGL (voir même sans lol) serait capable de faire ça en 10 minutes.
Pourquoi je parle de ça alors qu'on s'en fout?
Et bien tout simplement parce que je pense que je ne suis pas le seul qui à envie d'en apprendre plus sur le développement et qu'un "petit" (ici c'est relatif, il fut un temps ou il était beaucoup téléchargé) projet open source est très intéressant pour débuter (surtout si celui ci vous intéresse particulièrement). Le projet mupen64plus à l'avantage d'avoir été "remis à neuf" (pas le code en lui même, sont architecture) depuis peu.
En ce qui me concerne, je prend beaucoup de plaisir à apprendre l'OpenGL et ce genre de projet me permet de faire des tests et des implémentations "concrètes" avec l'impression de participer à quelque chose (et pas de faire son truc en lousdé sans aller jusqu'au bout pour voir son bout de code finir dans un vieux HDD).
Si vous êtes français, que vous connaissez un peu l'OpenGL et que vous participez (ou voulez participer) au dev de mupen64plus, n'hésitez pas à me contacter. Il y a quelques bugs à solver. :seSentCon:
A bientôt!!!
Dorian
Commentaires
C'est cool, je suis tomber sur ton site un peux par hasard et comme je vois que tu a u une petite histoire d'amour avec mupen64plus et que je sais qu'il y a des développeurs qui bosse dessus en se moment pour faire une version pour le Nokia N900 (Maemo Linux) je me suis dit que peux être tu pourrais les aider je sais pas si ils on besoins d'aide mai voila si sa te fait plaisir d'y bosser alors voila le lien verre le forum de conversation des développeurs: http://forums.internettablettalk.co...
A+
Merci pour l'info!
Mais il y a déjà énormément de boulot à faire sur la version "de base", sans compter le temps qu'il m'a fallut pour que je "rentre dans le code" que je doute que je passe à autre chose. :)
Sinon, c'est sympa de voir des projets open source se développer autour de celui-ci.
Merci pour cet émulateur!