Entretien avec Alekmaul à propos de PVSnesLib

43
9
août
2023
Jeu

Alekmaul développe un SDK pour créer des jeux pour la console Super Nintendo 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

Sommaire

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, 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, Casio PB-100 et 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, 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 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. 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 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).

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

Quelle est votre manette préférée ?

Les manettes d’origines, elles me suffisent et fonctionnent bien :P.
Manette US

Les émulateurs SNES sont-ils bons ?

Ils sont plus ou moins bons. Le meilleur est le dernier sorti : 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

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, 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
Eyra the Crow Maiden
Block em Sock em

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

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

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

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 )

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 :D » !

Aller plus loin

  • # je vais me répéter

    Posté par  . Évalué à 6. Dernière modification le 09 août 2023 à 18:18.

    Je l'ai déjà dit dans les commentaires dess autres interviews, mais c'est une chouette interview avec plein d'infos et de la technique dedans !
    linuxfr.org, plus fort que les éditions « retro-machin » et leurs « anecdotes » sur la couleur du slip du programmeur !

    Il reste des consoles à voir dans de futures interviews ?

    Discussions en français sur la création de jeux videos : IRC freenode / #gamedev-fr

    • [^] # Re: je vais me répéter

      Posté par  . Évalué à 3.

      Il reste des consoles à voir dans de futures interviews ?

      Si tu n'as pas peur de te faire spoiler, c'est direct en avant-première pour l'interview suivant.

    • [^] # Re: je vais me répéter

      Posté par  (site web personnel) . Évalué à 6.

      Il reste des consoles à voir dans de futures interviews ?

      Il en reste un paquet : pour les plus connues comme la PC Engine ou la GameBoy, je pense trouver en guettant les forums.

      Pour la FM Towns Marty ou le Philips CD-i, ce sera plus dur :-)

      Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

      • [^] # Re: je vais me répéter

        Posté par  . Évalué à 2.

        N'oublions pas le SDK de la Videopac :)

        Discussions en français sur la création de jeux videos : IRC freenode / #gamedev-fr

      • [^] # Re: je vais me répéter

        Posté par  (site web personnel, Mastodon) . Évalué à 2.

        Pour l'Amstrad CPC: https://github.com/lronaldo/cpctelera

        L'interview des organisateurs de http://cpcretrodev.byterealms.com/en/ pourrait être intéressante aussi (concours de programmation où participent entre autres des étudiants d'université qui reçoivent un cours sur la programmation de l'Amstrad CPC. Des points bonus sont attribués aux jeux publiés sous licence libre)

        • [^] # Re: je vais me répéter

          Posté par  (site web personnel) . Évalué à 5.

          Je cherche des francophones et du logiciels libres pour coller à la ligne éditoriale invisible de linuxfr.

          Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

          • [^] # Re: je vais me répéter

            Posté par  . Évalué à 2.

            J'ai cru que tu allais faire remarquer que le CPC n'était pas une console de jeux (enfin dans les faits si, mais c'est un autre débat :þ )

            Discussions en français sur la création de jeux videos : IRC freenode / #gamedev-fr

            • [^] # Re: je vais me répéter

              Posté par  (site web personnel) . Évalué à 3.

              Je ne compte pas me limiter aux consoles !

              Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

            • [^] # Re: je vais me répéter

              Posté par  (site web personnel, Mastodon) . Évalué à 2.

              ça marche aussi pour la console Amstrad GX4000 qui utilise le même matériel que l'Amstrad 464Plus (sans clavier et sans lecteur cassettes).

              • [^] # Re: je vais me répéter

                Posté par  (site web personnel) . Évalué à 3.

                A propal, à quand une console ou un micro ordinateur avec Haiku ? :-)

                Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

                • [^] # Re: je vais me répéter

                  Posté par  . Évalué à 2.

                  Sur le raspberry ou apparenté, ça serait bien.

                  Je suis étonné que ces cartes n'aient pas leur propre OS et fassent tourner péniblement un linux et son écosystème , inutilement lourd pour elles (quand on veut l'utiliser en desktop, ce qui serait le cas d'une machine de jeux).

                  Discussions en français sur la création de jeux videos : IRC freenode / #gamedev-fr

          • [^] # Re: je vais me répéter

            Posté par  . Évalué à 3.

            Quid de l'AMIGA ??

            Aussi quid s'il y a interview en anglais qui est ensuite traduite en français ? (parce qu'il y a pas mal de personne dans le retro libre qui parle en anglais (pas juste US ou UK )) Sinon on se coupe d'une partie de la richesse et de la diversité des talents dans le libre (en plus sachant que matière jeux vidéos et retro gaming en général c'est le parent pauvre du libre )

            • [^] # Re: je vais me répéter

              Posté par  (site web personnel) . Évalué à 4.

              Je connais mal le monde Amiga, si tu as des idées…

              Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

              • [^] # Re: je vais me répéter

                Posté par  . Évalué à 3.

                Il y a l'émulateur UAE, avec un historique amrrant: le U de UAE signifie "Unusable" car l'émulation était beaucoup trop lente au début :-D

                Après, il y a AmigaOS qui est toujours maintenu, donc il y a sans doute des développeurs qui peuvent en parler (ou pas, histoire de droits tout ça).

  • # processeur SNES

    Posté par  . Évalué à 2. Dernière modification le 28 août 2023 à 12:06.

    Bonjour,
    D’abord, merci à Alekmaul pour ce super SDK (que j’utilise actuellement)
    J’ai une remarque concernant le processeur de la Super Nintendo :
    Dans l’interview Alekmaul qualifie le processeur de la snes de « bien lent » par rapport à la Megadrive.

    Je voulais apporter une précision :
    Le processeur de la snes est certes plus lent en fréquence d’horloge que celui de la Megadrive

    Megadrive : Motorola 68000 => 7,67 MHz
    SNES : 65816 (dérivé du 6502) => 3,58 MHz

    Mais les 2 architectures (et les jeux d’instructions) étant différentes, il n’est pas judicieux de les comparer de cette manière
    Pour exemple, un benchmark de l’époque donne :

    Motorola 68000 à 7,67 MHz => 1,4 MIPS
    6502 à 3,58 MHz => 1,79 MIPS

    (Ce qui ne veut pas dire non plus que le processeur de la snes est plus rapide que celui de la Megadrive, mais ça fait relativiser)

    La véritable raison pour laquelle la snes semble parfois « asthmatique » sur certains jeux est certainement le bus de données de 8 bits contre 16 bits sur Megadrive
    Finalement, je qualifierais le processeur de la snes de comparable a celui de la megadrive
    Nintendo a fait le choix de privilégier les capacités graphiques de la console, c’est sur ce point la que la console excellait (mode7…)
    J’adore ces 2 consoles, c’était une époque ou les consoles avaient de la personnalité, on pouvait reconnaitre la console avec une semble image d’un jeu (en se basant sur les couleurs ou les effets)

    • [^] # Re: processeur SNES

      Posté par  (Mastodon) . Évalué à 5.

      J’adore ces 2 consoles, c’était une époque ou les consoles avaient de la personnalité, on pouvait reconnaitre la console avec une semble image d’un jeu (en se basant sur les couleurs ou les effets)

      Oui. On a toujours été dans une maison SEGA mais on a eu la chance de pouvoir faire des échanges de consoles avec des copains. C'était sympa de pouvoir jouer pendant 3-4 mois avec la SNES, certains jeux étaient bien différents. J'exprimerais ça dans le sens où la megadrive avait un bon rendu métal quand la snes avait un bon rendu plastique. Je m'explique: même si les textures étaient plus détaillées sur les versions SNES, les jeux sombres avec des contrastes et jeux de lumières rendaient en général mieux sur megadrive à mon humble avis, je pense par exemple aux Castlevania, Ghouls 'n Ghosts, etc. En revanche tout ce qui était tiré de dessin animé, mangas, avec des couleurs vives me paraissaient meilleurs sur la SNES>

      On pouvait même aussi remarquer sur une console unique quels étaient les jeux "natifs" (dans le sens créés pour elle) et quels étaient les ports. Par exemple les ports de jeux Amiga/Atari ST avaient souvent une patte différente (plus adulte?).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.