Je m’étais lancé un petit défi en fin d’année dernière : programmer une petite intro pour la Gamebuino Meta, une console portable miniature made in Saint-Étienne que je m’étais procurée il y a quelques années. La machine est assurément d’inspiration oldschool et a pour objectif de fournir un environnement de développement similaire à ce que proposaient les micro-ordinateurs 8 et 16 bits : des spécifications figées et un environnement de développement tout-en-un. La Gamebuino Meta est basée sur une architecture Arduino Zero éprouvée, relativement populaire et bien documentée. Elle dispose des caractéristiques suivantes :
- Processeur : Microchip ATSAMD21 ARM Cortex M0+
- RAM : 32 KB
- Resolution : 80×64 en 16 couleurs, palette fixe (d’autres modes vidéo sont disponibles)
Mes ambitions étaient à l’image de mes compétences en matière de programmation : modestes. Mon but était de combiner un starfield 2D, un scrolltext, un gros logo et une musique chiptune. Je suis quelqu’un de simple, et pour moi voir ces éléments combinés avec talent comme dans certaines cracktros mythiques est un des petits plaisirs de la vie. Le langage de programmation utilisé ici est de type C++, généralement considéré comme plus complexe que les langages que j’ai maltraité jusqu’ici, surtout le BASIC et le Python. Outre le défi personnel, un autre objectif pour ce projet était d’être la première production purement demoscene pour la console.
J’ai opté pour la stratégie éprouvée du pas à pas : travailler sur chaque élément un par un, et les combiner progressivement après avoir obtenu un résultat qui fonctionne. L’ordre d’attaque a été le suivant : le starfield (facile, j’avais déjà en tête une approche à base d’array), le logo rebondissant (avec calcul de ma propre table de cosinus dans Excel), le scrolltext, les petites étoiles sur le logo (objectif complémentaire) et enfin la lecture de la musique qui je savais serait de loin le plus complexe vu l’absence de fonction évoluée pour cela dans la bibliothèque Gamebuino. Mon plan B était de jouer une simple MP3, supporté nativement par la Gamebuino, mais cela heurtait un peu mes sensibilités oldschool et me semblait anachronique au vu du style 16 bits de l’intro. Au bout du compte j’ai été assisté par r043v de la communauté Gamebuino grâce à son portage d’un player de modules Arduino. Chavez et Joss ont composé une musique chiptune 4 voies spécialement pour l’occasion qui est superbe et bien au delà de ce que j’espérais pour une intro aussi basique.
La plupart des éléments ont été relativement faciles à mettre en œuvre, mis à part le scrolltext qui m’a donné du fil à retordre et qui est géré d’une manière que je suspecte être non-conventionnelle et complètement inefficace ! Pour un premier essai je suis néanmoins satisfait même si je viserai une meilleure routine la prochaine fois. À ce propos, j’ai créé tous les effets en partant de zéro, sans piquer des bouts de routines existantes à droite et à gauche. Ce fut plus lent et parfois douloureux, mais aussi un bon défi d’un point de vue intellectuel. Une des tâches les plus longues aura en fait été de condenser autant que possible la petite histoire que raconte le scrolltext (mon premier essai dans le style « comédie romantique geek ») et que je vous laisse découvrir 😉
Ma seule déception pour cette première expérience de développement sérieux avec la Gamebuino aura été le manque de maturité de l’émulateur. Pas lors de la phase de développement en lui-même (l’IDE Arduino permet d’envoyer le code compilé très rapidement sur la console), mais lors de la capture de la vidéo. La vitesse de l’émulateur semble inconsistante (ce qui explique le décalage sur la vidéo) et surtout le son n’est pas supporté du tout. Le manque d’émulateur Gamebuino exact va aussi rendre délicat la préservation des productions Gamebuino à l’avenir quand le hardware d’origine se fera rare.
L’intro fut présentée à la démoparty Outline au mois de mai dans la catégorie démo oldschool après délibération. Le positionnement un peu hybride de la Gamebuino fait qu’on pourrait tout autant aussi justifier sa présence dans les catégories newschool ou wild. En l’état, l’intro a fini dernière de sa catégorie, ce qui est je pense en partie dû au fait que le 4 minutes et demi du scrolltext furent présentées en intégralité lors de la compétition, ce qui est je le reconnais assez long.
Toujours à la Outline, j’ai aussi présenté une image intitulée « Little Things » dans la catégorie oldschool graphics dans un style assez expérimental, type BD indépendante. Les spécifications sont celles de l’Atari ST : 320×200 en 16 couleurs choisies parmi une palette de 512. La Gamebuino est évidemment présente en bas à gauche mais il y a aussi une référence plus obscure en haut à droite avec le donut et la paire de lunettes de soleil de notre démo Replay.