URL: https://linuxfr.org/news/entretien-avec-alekmaul-a-propos-de-pvsneslib Title: Entretien avec Alekmaul Ă  propos de PVSnesLib Authors: devnewton đŸș NeoX, BenoĂźt Sibaud, ted et Ysabeau đŸ§¶ Date: 2023ćčŽ08月06æ—„T19:40:15+02:00 License: CC By-SA Tags: retrogaming, super_nintendo, retrosdk et rĂ©tro-informatique Score: 43 Alekmaul dĂ©veloppe [un SDK pour crĂ©er des jeux pour la console Super Nintendo](https://github.com/alekmaul/pvsneslib) aussi appelĂ©e Super NES ou SNES, cet entretien revient sur son parcours et les raisons qui l’ont amenĂ© Ă  s’intĂ©resser Ă  cette console. ![Super Nintendo](https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Wikipedia_SNES_PAL.jpg/800px-Wikipedia_SNES_PAL.jpg) ---- [PVSnesLib](https://github.com/alekmaul/pvsneslib) [L'architecture de la Super Nintendo](https://www.copetti.org/writings/consoles/super-nintendo/) [Un dossier consacrĂ© Ă  cette console](https://www.grospixels.com/site/snes.php) [Le site d'Alekmaul](https://www.portabledev.com/) [Le site d'Alekmaul Studio](https://alekmaulstudio.fr/) ---- Partie 1: prĂ©sentation ====================== ## Qui ĂȘtes-vous, quel est votre parcours et est-il liĂ© aux jeux vidĂ©os ? Hello, je m’appelle Jean-Michel Girard, connu sous le nom d’Alekmaul dans le monde du retro gaming. J’ai fait des Ă©tudes d’informatique il y a maintenant bien longtemps oĂč l’on apprenait encore comment dĂ©velopper en assembleur ;) **NDM: moules< enseignantes et Ă©tudiantes, n’hĂ©sitez pas Ă  rĂ©agir en commentaires sur ce sujet de l’enseignement de l’assembleur** J’ai toujours aimĂ© dĂ©velopper des jeux vidĂ©os. J’ai connu la grande Ă©poque [d’Hebdogiciel](https://fr.wikipedia.org/wiki/Hebdogiciel), le journal qui publiait des listings Ă  taper sur le clavier de pas mal de machines, listings qu’envoyaient les lecteurs du journal. Moi-mĂȘme je n’ai jamais Ă©tĂ© publiĂ© dedans Ă  l’époque ^^. J’ai vu les dĂ©buts des micro-ordinateurs et consoles dans les annĂ©es 80, j’ai commencĂ© Ă  dĂ©velopper sur [ZX81](https://fr.wikipedia.org/wiki/ZX81), [Casio PB-100](https://fr.wikipedia.org/wiki/Casio_PB-100) et [ZX Spectrum](https://fr.wikipedia.org/wiki/ZX_Spectrum), ma passion du dĂ©veloppement de jeux vidĂ©os date de lĂ  ;) J’ai aussi fait un passage Ă©clair dans le jeu vidĂ©o chez Virgin Espagne pour dĂ©velopper un jeu sur [DS](https://fr.wikipedia.org/wiki/Nintendo_DS), mais y’a eu la banqueroute en Espagne Ă  ce moment-lĂ  (vers 2010 si je me souviens bien), il n’est jamais sorti mais je suis fier d’avoir pu profiter du kit officiel de Nintendo sur DS \^\^. J’ai maintenant 56 ans, je travaille toujours dans l’informatique dans le monde du paiement sur Internet, je gĂšre des personnes, des projets mais je ne dĂ©veloppe plus. Je m’éclate donc Ă  dĂ©velopper sur mon temps perso sur de vieilles consoles ! Partie 2: SNES ============== ## Comment en ĂȘtes-vous venu Ă  vous intĂ©resser Ă  la SNES ? C’est un ami, connaissant mes crĂ©ations sur Nintendo DS et [GBA](https://fr.wikipedia.org/wiki/Game_Boy_Advance) qui m’a demandĂ© de voir si j’étais intĂ©ressĂ© pour rĂ©aliser un kit de dĂ©veloppement sur SNES. En effet, le dĂ©veloppement en assembleur est pas simple et il se disait que si quelque chose Ă©tait disponible en C comme pour la GBA ou la DS, ça aiderait Ă  promouvoir cette machine. Un dĂ©but de kit existait sur googlecode, basĂ© sur un fork du compilateur [tcc](https://bellard.org/tcc/). Tout est parti de lĂ  sur cette console. Je l’ai sorti il y a maintenant plus de 10 ans sur SNES, pour les 20 ans de la console en France. On continue toujours Ă  maintenir PVSneslib avec de plus en plus de contributeurs ! ## Qu’est-ce que cette console a de particulier ? Elle n’est pas facile Ă  programmer avec son processeur entre le 8 bits et 16 bits. Elle possĂšde un chip sonore bien sympathique et des capacitĂ©s graphiques permettant pas mal d’effets surtout avec l’aide des transferts rapides de mĂ©moire possibles. Ses diffĂ©rents modes graphiques peuvent ĂȘtre un atout mais aussi un frein Ă  comprendre la console. Sa rĂ©solution est moindre que la Megadrive mais dans la lignĂ©e des machines de l’époque. Son processeur est par contre bien lent, ça aurait Ă©tĂ© super d’avoir un 68000 dedans \^\^. **NDM : la console taĂŻwanaise [Super A'Can](https://fr.wikipedia.org/wiki/Super_A%27Can) ressemble beaucoup Ă  une Super Nintendo avec un 68000. Si vous programmez dessus, n’hĂ©sitez Ă  contacter devnewton< pour un futur entretien.** ## Comment fonctionne les processeurs graphiques (Super PPU) ? Le processeur graphique est du mĂȘme genre que les autres consoles de l’époque. Il possĂšde certains modes graphiques avec un certain nombre de couleurs gĂ©rables par mode graphique. Le mode le plus utilisĂ© est le mode 1. Chaque mode possĂšde un certain nombre de « fonds » ou plans sur lequel on peut rĂ©aliser des graphiques, les faire se dĂ©placer. Chaque plan dans ce mode possĂšde 16 couleurs parmi « tout plein » de couleurs, comme les sprites. On fait ainsi de trĂšs jolis jeux (non je dirais pas des jeux plus jolis que sur Megadrive ;) :P ). On possĂšde aussi un certain nombre d’objets animĂ©s nommĂ©s sprites, ce qui aide beaucoup pour tout Ă  dessiner sur un seul plan. Le terme « Super PPU », en tant que tel, je connais pas dĂ©solĂ© :( ( **NDM: ce terme est utilisĂ© par [cet article](https://www.copetti.org/writings/consoles/super-nintendo/)**). ## Comment fonctionnent les puces sonores (S-DSP, SPC700) ? La puce sonore fonctionne par transfert de donnĂ©es depuis la puce de la SNES vers le processeur du SPC700. Cela prend donc du temps, c’est pour cela que dans mes jeux, y’a un petit dĂ©lai au dĂ©but des niveaux pour transfĂ©rer les musiques. De plus, elle ne supporte pas plus de 64Ko de mĂ©moire, sons et programmes sonore compris, c’est peu mais il faut faire avec ! ## Beaucoup de cartouches embarquent des coprocesseurs, quels sont les plus remarquables ? J’en sais fichtrement rien :D ! je ne dĂ©veloppe pas sur ces processeurs. Peut-ĂȘtre que le DSP1 est sympa de part ses capacitĂ©s de calculs matriciels et le Super-FX pour la 3D ;) ## La SNES a rĂ©cemment eu une version « mini » ? Qu’en pensez-vous ? C’est mignon, c’est mini, pas grand-chose de plus. Je la possĂšde Ă  la maison, mais elle prend la poussiĂšre je dois dire \^\^. Faudrait que je la patche un de ces jours avec mes jeux pour les voir sur grand Ă©cran \^\^. ![SNES Mini](https://upload.wikimedia.org/wikipedia/commons/thumb/5/52/Nintendo_Classic_Mini_Super_Nintendo_Entertainment_System_%28enhanced_image%29.jpg/624px-Nintendo_Classic_Mini_Super_Nintendo_Entertainment_System_%28enhanced_image%29.jpg) ## Quelle est votre manette prĂ©fĂ©rĂ©e ? Les manettes d’origines, elles me suffisent et fonctionnent bien :P. ![Manette US](https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/SNES-Controller-Flat.jpg/640px-SNES-Controller-Flat.jpg) ## Les Ă©mulateurs SNES sont-ils bons ? Ils sont plus ou moins bons. Le meilleur est le dernier sorti : [Mesen-S](https://github.com/SourMesen/Mesen-S) ou MEsen maintenant depuis la reprise du projet par l’auteur aprĂšs quelques rebondissements. B-Snes est trĂšs bon aussi. J’utilise pas mal aussi no$sns, car c’est facile de dĂ©boguer avec. Mais l’émulation n’est pas tout Ă  fait fidĂšle pour ce dernier. En gros, Mesen-S pour tester la compatibilitĂ© avant de tester sur une vraie console (car rien ne remplace les vraies consoles) et no$sns pour debugger rapidement. ## Quels sont vos jeux commerciaux prĂ©fĂ©rĂ©s sur cette console ? Mario Kart et Metroid ! Mais aussi Chrono Trigger qui est une vraie claque sur SNES. ![Chrono Trigger](https://upload.wikimedia.org/wikipedia/en/d/d5/ChronoTriggerInside.PNG) ## Quels sont vos jeux "homebrew" prĂ©fĂ©rĂ©s sur cette console ? HĂ©hĂ©, je vais pas dire les miens, mais il y en a trĂšs peu sur SNES. Certainement les homebrews de [Shiru](http://shiru.untergrund.net/software.shtml), un dĂ©veloppeur russe bourrĂ© de talent. Comme par exemple Classic Kong qui exploite bien la console. ## Pourquoi crĂ©er un SDK aujourd’hui pour si vieux systĂšme ? J’ai créé le SDK Ă  la demande d’un ami. Il voulait savoir si on pouvait programmer facilement sur cette console. Je suis parti d’un code basĂ© sur un fork de tcc par Ulrich Hecht nommĂ© SNES C SDK. Les 20 ans de la console arrivaient, c’était le bon moment de travailler sur quelque chose. Le SDK commence donc Ă  dater mais n’a pas eu beaucoup de succĂšs au dĂ©part, mais il commence Ă  prendre forme maintenant, 10 ans plus tard... ## Est-ce que vous participez vous-mĂȘme Ă  la crĂ©ation de jeux ? Ah bah oui, c’est mĂȘme mon activitĂ© principale sur SNES. Parmi les plus connus, j’ai créé Sydney Hunter and the Caverns of Death, puis Eyra the Crow Maiden et je travaille maintenant sur The Illmoore Bay (plus pas mal d’autres jeux aussi `^^`). ![Sydney Hunter and the Caverns of Death](https://alekmaulstudio.fr/wp-content/uploads/2023/04/cod_000.png) ![Eyra the Crow Maiden](https://raw.githubusercontent.com/alekmaul/pvsneslib/master/pvsneslib/docs/images/eyra.gif) ![Block em Sock em](https://alekmaulstudio.fr/wp-content/uploads/2023/07/blockem230714b454_ntsc_006.png) ## Quels ont Ă©tĂ© les difficultĂ©s pour crĂ©er PVSnesLib ? Tout d’abord, bien connaitre la console. C’est le minimum avant de se lancer lĂ -dedans. J’ai donc potassĂ© tout ce que je trouvais, consultĂ© les wikis, le fichier d’aide de no$sns qui est une mine d’information. Ensuite, il faut rĂ©flĂ©chir Ă  trouver comment rĂ©aliser quelque chose de portable (et il reste du chemin avec PVSNeslib !) pour que tout le monde puisse l’utiliser sur son projet. C’est ce que j’ai tentĂ© de faire. D’autres personnes ont utilisĂ© le kit, m’ont fait part de remarque et on est maintenant plusieurs Ă  le faire Ă©voluer, ce qui est ma plus grande fiertĂ© ! ## Vous aimeriez vivre du dĂ©veloppement de ce logiciel libre? Vivre du dĂ©veloppement de jeu sur ancienne console ? Pas possible Ă  mon avis, il faut faire quelque chose Ă  cĂŽtĂ©. Pour ma part, c’est maintenant plus un projet pour ma retraite ! J’ai d’ailleurs créé « Alekmaul Studio » pour essayer de rĂ©gulariser tout cela et prĂ©parer cette seconde Ă©tape dans mes dĂ©veloppements Homebrews. ## Quels materiels sont gĂ©rĂ©s par PVSnesLib ? ### Est-ce que PVSnesLib gĂšre les multitaps ? Oui, il gĂšre le multitap et un futur jeu va l’exploiter (Bizbille, pour mes amis Canadiens, un genre de roue de la fortune). ![multitap](https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/Super_Nintendo_MultiTap.jpg/640px-Super_Nintendo_MultiTap.jpg) ### Est-ce que PVSnesLib gĂšre les pistolets (Super Scope) ? J’ai un dĂ©but d’implĂ©mentation mais rien de concret ! J’attends de l’aide sur ce sujet ! ![Super scope](https://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/Nintendo-SNES-Super-Scope-L.jpg/640px-Nintendo-SNES-Super-Scope-L.jpg) ### Est-ce que PVSnesLib gĂšre d’autres pĂ©riphĂ©riques de la SNES (souris, modems...) ? Non, rien d’autre pour l’instant, Ă  part la SRAM. ![souris](https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/SNES-Mouse-and-Pad.jpg/640px-SNES-Mouse-and-Pad.jpg) ## Quels conseils donneriez-vous Ă  quelqu’un qui veut se lancer dans le dĂ©veloppement SNES ? Erf... Tout d’abord avoir la passion car ça va ĂȘtre long. Ensuite, connaitre le langage C, langage utilisĂ© pour programmer avec PVSnesLib. Puis, connaitre le langage machine de la SNES (le 65C816), car ça aide Ă  debugger. Et enfin et surtout, connaitre la SNES, comment elle fonctionne, quelles sont ses limites en matiĂšre de graphismes, de son, de mĂ©moire. ### Quels sont les outils pour crĂ©er/prĂ©parer des graphismes utilisable par PVSnesLib ? J’utilise GraphicGale pour crĂ©er mes graphiques et c’est ensuite l’outil gfx2snes, livrĂ© avec PVSneslib qui fait le job pour rendre cela compatible avec ce que l’on souhaite. ### Quels sont les outils pour crĂ©er/prĂ©parer des musiques et des sons utilisable par PVSnesLib ? Il faut un tracker de musique qui supporte le format IT, comme openMPT. L’outil smconv livrĂ© avec PVSneslib fera ensuite le job pour rendre tout cela compatible avec ce que l’on souhaite. ### Est-il possible de crĂ©er ses propres cartouches ? Bien sur ! j’en suis dĂ©jĂ  Ă  4 jeux diffĂ©rents Ă©ditĂ©s sur SNES :) ! ### Comment s’accommoder des faibles ressources (peu de RAM, CPU 8 bits...) ? Bah, faut rĂ©flĂ©chir, bien poser les problĂšmes, savoir optimiser ce qu’il faut (on le dit jamais assez mais un octet fait 8 bits, on peut donc stocker 8 informations binaires dedans \^\^). Partie 3: pour finir ==================== ## Au niveau personnel, quels logiciels libres utilisez-vous, sur quel OS ? Qu’est-ce que l’on qualifie exactement de logiciel libre ? ( **NDM : en gĂ©nĂ©ral sur linuxfr, on parle de logiciel libre pour ceux qui respectent les [4 libertĂ©s](https://www.gnu.org/philosophy/free-sw.html#four-freedoms)** ) Les compilateurs pour mes programmes, dont j’ai les sources, ça c’est certain. Je crois que j’utilise peu de logiciels libres en tant que tel. Car sinon, j’ai aussi du VSCode et du VirtualBox pour tester et Ă©diter, mais je pense pas que cela soit considĂ©rĂ© comme du libre. J’utilise par contre pas mal de logiciels gratuits. Ah si, j’utilise aussi VI, j’adore :D ! ## Au niveau professionnel, quels logiciels libres utilisez-vous, sur quel OS ? Je ne peux hĂ©las pas en parler ;) Tout ce que je peux dire c’est que l’on dĂ©veloppe avec Java sous Linux (RedHat). ## Quelle est votre distribution GNU/Linux prĂ©fĂ©rĂ©e et pourquoi, quels sont vos logiciels libres prĂ©fĂ©rĂ©s ? Ubuntu est sympa pour le peu de ce que je fais sous Linux. Au taf, on est sous RedHat. Pas de logiciel libre sur Linux, je m’en sers uniquement pour tester PVSneslib et la compilation de cette derniĂšre. ## Quelle question auriez-vous adorĂ© qu’on vous pose ? Je dois dire que je sais pas... Peut ĂȘtre « t’es pas trop vieux pour faire ce genre de chose ? » :D ! ## Quelle question auriez-vous dĂ©testĂ© qu’on vous pose ? C’est pas vraiment une question mais plus quelque chose qui est de plus en plus frĂ©quent et qui me fatigue : pourquoi ne pas faire un SNESStudio ou un SNESMaker ? C’est trop dur de dĂ©velopper avec PVSneslIb... J’ai mĂȘme le droit Ă  « c’est plus simple de dĂ©velopper sur Megadrive avec [SGDK](https://linuxfr.org/news/entretien-avec-stephane-d-a-propos-du-sgdk) :D » !

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /