Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierinformatique général
  • ✇Korben
  • FEX - L'émulateur x86 financé par Valve
    Dites donc, en ce moment, c’est la folie autour de Valve. D’ailleurs, en lisant mon article sur le Steam Frame , vous vous êtes peut-être demandé comme celui-ci allait réussir à faire tourner des jeux PC alors qu’il tourne sur un Snapdragon ARM ? Hé bien la réponse s’appelle FEX , un émulateur que Valve finance en secret depuis 2018 soit en gros depuis le tout début du projet. Pour ceux qui connaissent pas, FEX permet de faire tourner des applications x86 (32 et 64 bits) sur des processeurs ARM

FEX - L'émulateur x86 financé par Valve

Par : Korben
4 décembre 2025 à 05:57

Dites donc, en ce moment, c’est la folie autour de Valve. D’ailleurs, en lisant mon article sur le Steam Frame , vous vous êtes peut-être demandé comme celui-ci allait réussir à faire tourner des jeux PC alors qu’il tourne sur un Snapdragon ARM ?

Hé bien la réponse s’appelle FEX , un émulateur que Valve finance en secret depuis 2018 soit en gros depuis le tout début du projet.

Pour ceux qui connaissent pas, FEX permet de faire tourner des applications x86 (32 et 64 bits) sur des processeurs ARM64 sous Linux. C’est un peu comme qemu-user ou box64, sauf que FEX utilise un recompilateur binaire avancé avec un IR custom qui génère du code plus optimisé qu’un JIT classique.

Concrètement, au lieu de traduire directement le code x86 en ARM64 (ce qui serait un bordel monstre vu les différences entre les deux architectures), FEX fait donc ça en deux temps :

  1. x86 → IR : le code x86 est d’abord converti dans un langage intermédiaire simplifié, indépendant de toute architecture
  2. IR → ARM64 : ensuite cet IR est traduit en code ARM64 natif

L’avantage c’est qu’on peut appliquer des optimisations sur l’IR (par exemple, éliminer du code mort, simplifier des opérations, réorganiser les instructions…etc) avant de générer le code final.

FEX supporte même AVX et AVX2, ce qui est quand même pas mal pour de l’émulation.

La vraie force de FEX, c’est sa capacité à rediriger les appels API vers les bibliothèques natives du système. Au lieu d’émuler OpenGL ou Vulkan (ce qui serait une catastrophe pour les performances), FEX balance directement les appels vers les versions ARM des bibliothèques. Selon Valve, on parle d’une perte de performances de seulement 10 à 20% sur certains aspects du code… et visiblement, ils arrivent à faire tourner Hades 2 en 1440p à 90 Hz sur le Steam Frame donc c’est pas dégueu.

Du coup, on a maintenant la vue d’ensemble de la stratégie Valve pour le gaming ARM : FEX pour émuler le x86 natif , Lepton pour les APK Android, et Proton pour les jeux Windows. Trois couches de compatibilité qui devraient permettre au Steam Frame de jouer à peu près tout ce qui existe. C’est la même stratégie que pour le Steam Deck, au final.

Le cache de code expérimental de FEX permet aussi de réduire les saccades en jeu, et y’a même une interface graphique (FEXConfig) pour configurer les paramètres par application. Parce que oui, selon les jeux, vous pouvez ajuster les réglages pour optimiser les perfs… genre désactiver l’émulation coûteuse du modèle mémoire si le jeu n’en a pas besoin.

Et comme d’hab avec eux, c’est open source et ça profite à tout le monde alors c’est cool !

Source

  • ✇Korben
  • SkiftOS - Recoder la roue c'est chouette aussi
    Créer un système d’exploitation complet from scratch pour s’amuser, c’est le genre de projet un peu foufou qu’on ne voit plus tellement aujourd’hui. Pourtant SkiftOS existe ! SkiftOS c’est un OS écrit entièrement depuis zéro, et pas un n-ième fork de Linux ou d’une distribution BSD. Non, c’est un vrai OS avec son propre kernel, son interface graphique et même les bases d’un moteur de navigateur web. J’ai découvert ce projet en me baladant sur les Top GitHub et ça m’a rappelé cette époque d’av

SkiftOS - Recoder la roue c'est chouette aussi

Par : Korben
13 septembre 2025 à 21:13

Créer un système d’exploitation complet from scratch pour s’amuser, c’est le genre de projet un peu foufou qu’on ne voit plus tellement aujourd’hui. Pourtant SkiftOS existe !

SkiftOS c’est un OS écrit entièrement depuis zéro, et pas un n-ième fork de Linux ou d’une distribution BSD. Non, c’est un vrai OS avec son propre kernel, son interface graphique et même les bases d’un moteur de navigateur web.

J’ai découvert ce projet en me baladant sur les Top GitHub et ça m’a rappelé cette époque d’avant ma naissance où créer son OS était un genre de rite de passage pour tous les développeurs passionnés. Sauf qu’ici, on n’est plus dans les années 70 et le projet utilise du C++20 moderne avec une architecture microkernel très propre.

Et malgré son statut de projet “hobby”, il fonctionne réellement. Il tourne pour le moment sur du hardware x86_64 et l’équipe travaille sur le support RISC-V.

L’architecture modulaire du projet est d’ailleurs particulièrement bien pensée. Chaque module a son petit nom, c’est rigolo. Hjert gère le microkernel avec les fonctions essentielles telles que la gestion mémoire, l’ordonnancement et l’IPC (Inter-Process Communication). Karm fournit la bibliothèque C++ de base sans dépendre de la STL (Standard Template Library) . KarmUI propose un framework d’interface réactive. Hideo s’occupe du bureau et de l’environnement graphique. Et Vaev ambitionne de devenir un moteur de navigateur web complet.

Pour compiler tout ça, l’équipe a également développé CuteKit, leur propre système de build qui gère les dépendances et la cross-compilation. Bah oui, quand on réinvente un OS, autant réinventer aussi tous les outils pour le construire.

Cette approche “tout fait maison” rend en tout cas le projet fascinant d’un point de vue pédagogique. Car oui le code source est disponible sur GitHub donc si vous voulez comprendre comment fonctionne un OS moderne sans vous perdre dans les millions de lignes de code de Linux ou de Windows (pour les vieilles versions qui ont leakée), c’est une excellente opportunité pour apprendre. Pas besoin donc d’être Microsoft ou Apple pour développer un système d’exploitation fonctionnel.

Faut “juste” de la motivation, du temps, des compétences en C++ moderne, et surtout l’envie de construire quelque chose de différent.

Vous l’aurez compris, SkiftOS ne remplacera probablement jamais votre OS principal, c’est clair mais pour les développeurs curieux qui veulent comprendre les entrailles d’un système d’exploitation, ou pour ceux qui cherchent un projet open source technique sympa où contribuer, c’est une sacrée mine d’or.

Et qui sait, peut-être que dans quelques années on parlera de SkiftOS comme on parle aujourd’hui des débuts de Linux…

  • ✇LinuxFr.org : les dépêches
  • QEMU 10.0
    Comme tous les ans, Qemu sort une nouvelle version majeure. Le numéro n'implique donc pas de grands bouleversements. Il s'agit plutôt d'une base stable qui va être maintenue et améliorée pendant quelques années. Ainsi, les versions 7, 8 et 9 ont eu des mises à jour en mars 2025. Comme d'habitude, les architectures ARM et Risc-V se taillent la part du lion et sont enrichies de nouvelles architectures. Les accès aux stockages sont partout plus rapides, et l'espace utilisateur accède toujours mieu

QEMU 10.0

Comme tous les ans, Qemu sort une nouvelle version majeure. Le numéro n'implique donc pas de grands bouleversements. Il s'agit plutôt d'une base stable qui va être maintenue et améliorée pendant quelques années. Ainsi, les versions 7, 8 et 9 ont eu des mises à jour en mars 2025.

Comme d'habitude, les architectures ARM et Risc-V se taillent la part du lion et sont enrichies de nouvelles architectures. Les accès aux stockages sont partout plus rapides, et l'espace utilisateur accède toujours mieux au matériel.

Qemu est devenu une pièce importante dans le monde des serveurs et des développeurs. En tant qu'émulateur il permet de développer, compiler ou lancer un programme sur un processeur ou une machine différente. Couplé à KVM, XEN ou VMWare, il permet une virtualisation performante.

Quoi de neuf ?

L'article de Next résume bien les changements sur ARM et Risc-V. C'est technique, n'étant pas connaisseur je vous y renvoie.

x86 bénéficie de changements globaux à toutes les architectures avec quelques ajouts spécifiques pour des processeurs Intel. Mon petit doigt impatient de tester me souffle que ça sera plus rapide avec des accès "multithread1" aux périphériques de stockage (virtio-scsi et virtio-blk). L'accès direct au matériel en espace utlisateur continue de s'améliorer (VFIO, fonctions virtuelles d'entrées-sorties).

Les autres changements concernent l'émulation des architectures HPPA et S390.

Attention aux trucs enlevés

À chaque version ou presque, des morceaux sont enlevés. Si vous faites dans l'exotique, ne vous précipitez pas sur la dernière version sans consulter la liste des Removed features.

Documentation d'introduction pour QEMU et la virtualisation

En guise de conclusion, voici quelques pistes pour ceux et celles qui débutent avec la virtualisation sous Linux et/ou QEMU. Différentes distributions Linux ont de la documentation sous licence libre. Loin d'être exhaustif, voici quelques choix :


  1. Qu'on me pardonne ce mot, je simplifie pour faire court! 

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇LinuxFr.org : les dépêches
  • Linus Torvalds: comment éviter que RISC-V ne reproduise les erreurs du passé?
    Lors de leur keynote à l'Open Source Summit 2024, Linus Torvalds et Dirk Hohndel ont échangé sur l’avenir des architectures matérielles libres, en particulier RISC-V. Linus, avec son franc-parler habituel, a partagé ses craintes et ses espoirs concernant l’évolution de RISC-V et le rôle crucial que peuvent jouer les communautés open source pour éviter les erreurs passées, notamment dans le développement des plateformes comme ARM et x86. Linus estime qu’il existe un risque majeur que RISC-V répè

Linus Torvalds: comment éviter que RISC-V ne reproduise les erreurs du passé?

Lors de leur keynote à l'Open Source Summit 2024, Linus Torvalds et Dirk Hohndel ont échangé sur l’avenir des architectures matérielles libres, en particulier RISC-V. Linus, avec son franc-parler habituel, a partagé ses craintes et ses espoirs concernant l’évolution de RISC-V et le rôle crucial que peuvent jouer les communautés open source pour éviter les erreurs passées, notamment dans le développement des plateformes comme ARM et x86.

Linus estime qu’il existe un risque majeur que RISC-V répète les erreurs commises par les architectures précédentes, comme lorsqu’ARM est devenu une plateforme serveur et a ignoré en partie les leçons apprises lors du développement de l’architecture x86, notamment en matière de sécurité. Cependant, il reconnaît également que grâce à l’expérience accumulée, ces erreurs ont été corrigées plus rapidement. La question cruciale est à présent de savoir si RISC-V saura tirer parti de cette expérience collective pour éviter ces écueils ou s’il devra traverser les mêmes cycles d’apprentissage douloureux.

Leçons du passé et rôle des logiciels libres

Les erreurs évoquées par Linus sont multiples. Il parle notamment des problèmes de compatibilité et d’interopérabilité qui ont compliqué l’adoption de nouvelles architectures matérielles. Il mentionne également le manque de communication entre les concepteurs de matériel et les développeurs de logiciels, créant un fossé qui ralentit l’innovation et entraîne des inefficacités. Enfin, il rappelle que les délais nécessaires pour corriger les erreurs matérielles sont bien plus longs que pour les logiciels, ce qui peut freiner l’évolution des nouvelles technologies.

Cependant, l’open source présente une opportunité unique pour surmonter ces obstacles. Une architecture matérielle ouverte comme RISC-V permet une transparence totale, où les développeurs de logiciels peuvent intervenir dès les premières phases de conception pour s’assurer que les erreurs du passé ne se reproduisent pas. Cette collaboration précoce entre développeurs matériels et logiciels est essentielle pour anticiper et résoudre les problèmes avant qu’ils ne deviennent des obstacles majeurs.

L’open source a déjà prouvé sa valeur dans le domaine des logiciels en offrant une flexibilité et une adaptabilité incomparables. Cette même philosophie appliquée au matériel peut accélérer l’innovation et permettre de répondre plus rapidement aux besoins du marché. De plus, une communauté ouverte permet de partager les connaissances et les meilleures pratiques, réduisant ainsi les risques de répéter les erreurs passées.

Sécurité et architecture matérielle open source

Un point crucial soulevé par Linus concerne la sécurité, en particulier les défis posés par les failles matérielles et les attaques par canal auxiliaire. Ces vulnérabilités résultent souvent des optimisations dans le silicium, comme l'exécution spéculative, qui peuvent être exploitées pour compromettre la sécurité des systèmes.

Linus a exprimé sa frustration face à la nature secrète des processus de gestion des failles de sécurité dans le domaine du matériel. Il a souligné que cette opacité empêche de travailler en toute transparence sur ces problèmes intéressants et techniques. Une architecture matérielle open source, comme RISC-V, pourrait potentiellement atténuer ces frustrations en permettant une collaboration ouverte dès le début, facilitant ainsi la détection et la correction rapide des vulnérabilités.

L’open source offre également un modèle de confiance basé sur la transparence et la vérification par les pairs. Dans le contexte de la sécurité, cela signifie que les failles peuvent être identifiées et corrigées plus rapidement grâce à une surveillance continue et à une coopération étroite entre les développeurs de matériel et de logiciels.

La vision d’un avenir open source pour le hardware

L’un des points forts de l’open source est sa capacité à démocratiser l’accès à la technologie. Avec des projets comme RISC-V, il est possible de voir émerger des solutions matérielles qui ne sont pas seulement le produit de quelques grandes entreprises, mais le fruit d’une collaboration globale. Cela peut mener à des avancées significatives non seulement en termes de performances, mais aussi de coûts et d’efficacité énergétique, en offrant des alternatives viables aux architectures propriétaires.

Linus Torvalds a également évoqué l’évolution des pratiques du développement du matériel. Il y a dix ans, il était difficile de passer de x86 à une autre plateforme, mais aujourd’hui, grâce à l’open source, la transition est beaucoup plus fluide. Les utilisateurs finaux ne se soucient plus de savoir si leur serveur fonctionne sur un processeur Intel, AMD ou ARM ; ce qui compte, c’est que l’infrastructure logicielle soit solide et interopérable.

Pour que RISC-V réalise pleinement son potentiel, il est donc crucial que les communautés du logiciel et du matériel libres continuent de favoriser une culture de partage et de collaboration. Les développeurs de logiciels doivent être encouragés à s’impliquer dans le processus de conception matérielle, et vice versa. En travaillant ensemble, ils peuvent s’assurer que les erreurs du passé ne se reproduisent pas et que les nouvelles technologies répondent aux besoins réels du marché.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  • ✇Korben
  • Operation CHARM – Accédez gratuitement aux manuels de réparation auto
    Operation CHARM n’est pas d’une mission digne d’un James Bond, mais plutôt d’un projet open source que je trouve très cool pour tous ceux qui aiment faire de la mécanique. Il s’agit d’une base de données gigantesque répertoriant les manuels de réparation de pratiquement toutes les marques de voitures, de 1982 à 2013, accessible gratuitement et librement. De quoi faire trembler votre garagiste ^^. Les personnes derrière Operation CHARM sont convaincus que chacun devrait avoir le droit de rép

Operation CHARM – Accédez gratuitement aux manuels de réparation auto

Par : Korben
22 mai 2024 à 09:30

Operation CHARM n’est pas d’une mission digne d’un James Bond, mais plutôt d’un projet open source que je trouve très cool pour tous ceux qui aiment faire de la mécanique. Il s’agit d’une base de données gigantesque répertoriant les manuels de réparation de pratiquement toutes les marques de voitures, de 1982 à 2013, accessible gratuitement et librement. De quoi faire trembler votre garagiste ^^.

Les personnes derrière Operation CHARM sont convaincus que chacun devrait avoir le droit de réparer, comprendre et améliorer son véhicule sans devoir payer une fortune pour un manuel d’atelier. C’est philosophie très proche de celle du libre et des makers e on ne peut qu’applaudir des deux mains l’initiative (enfin, quand on n’a pas les doigts pleins de cambouis).

Le téléchargement du torrent pèse plus de 700 Go et ils ont également créé un site web (https://charm.li/) accessible à tous, où l’on peut naviguer parmi les différentes marques et modèles. Ils admettent eux-mêmes que l’interface n’est pas toujours très intuitive, mais c’est le contenu qui compte, non ?

Sur charm.li, vous pouvez ainsi explorer des manuels de différentes marques telles que : Audi, BMW, Renault, Volkswagen, Toyota, et bien d’autres, soit au total plus de 40 marques.

Bien sûr, avoir accès aux schémas électriques et aux procédures de démontage ne fera pas de vous un garagiste professionnel du jour au lendemain mais avec une bonne dose de curiosité, de patience et de jugeote, vous serez capable de diagnostiquer les pannes courantes et même de réaliser quelques réparations par vous-même. De quoi frimer au prochain repas de famille et économiser quelques euros au passage. 💸

Ces Anonymous de l’automobile qui se cachent derrière l’Operation CHARM ne comptent pas s’arrêter là. Ils envisagent déjà d’étendre leur base de données à d’autres véhicules comme les motos, les camions ou même les tracteurs. Bien entendu, un tel projet ne plaît pas à tout le monde, à commencer par les constructeurs auto qui voient d’un mauvais œil la diffusion massive de leur précieuse documentation technique. Mais qu’ils se rassurent, personne ne compte pirater les manuels des derniers modèles de véhicules bardés d’électronique. L’objectif c’est avant tout de permettre aux propriétaires de véhicules plus anciens de les entretenir et de les réparer dans les meilleures conditions. Un peu comme les fans de rétro-computing qui maintiennent en vie d’anciens ordinateurs ou de vieilles consoles de jeu.

Et si jamais vous bloquez sur une procédure un peu trop obscure, n’hésitez pas à solliciter l’aide de la communauté sur les forums spécialisés. Les mécanos amateurs sont généralement de bons samaritains prêts à partager leur expérience avec les néophytes.

Bref, j’espère vous avoir donné envie de mettre les mains dans le cambouis. À bon entendeur, salut ! 🖖

Source

  • ✇Korben
  • Un GPU Intel Arc A750 sur un processeur ARM 64 cœurs ? C’était impossible, mais il l’a fait quand même !
    Vous pensiez que les cartes graphiques Intel Arc étaient réservées aux processeurs x86 ? Et bien détrompez-vous car un ingénieur de génie nommé Vladimir Smirnov, a réussi un exploit tout à fait inattendu. Il est parvenu à faire fonctionner un GPU Arc A750 sur un processeur ARM 64 cœurs Ampere Altra, et tout ça sous Linux ! Vladimir était en train de monter un serveur ARM avec une carte mère ASRock Rack et un processeur Ampere Altra et en attendant de recevoir toutes les pièces, il s’est dit

Un GPU Intel Arc A750 sur un processeur ARM 64 cœurs ? C’était impossible, mais il l’a fait quand même !

Par : Korben
14 mai 2024 à 15:27

Vous pensiez que les cartes graphiques Intel Arc étaient réservées aux processeurs x86 ? Et bien détrompez-vous car un ingénieur de génie nommé Vladimir Smirnov, a réussi un exploit tout à fait inattendu. Il est parvenu à faire fonctionner un GPU Arc A750 sur un processeur ARM 64 cœurs Ampere Altra, et tout ça sous Linux !

Vladimir était en train de monter un serveur ARM avec une carte mère ASRock Rack et un processeur Ampere Altra et en attendant de recevoir toutes les pièces, il s’est dit qu’il allait tester différentes cartes graphiques qu’il avait sous la main : une vieille Radeon RX 550, une RX 5700 de minage et un Intel Arc A750 flambant neuf.

Pour la Radeon RX 550, pas de souci, installation simple et sans galère. Pour la RX 5700, petite compatibilité problématique avec le noyau Linux 6.1 sur ARM, en raison de registres non sauvegardés et d’un bug PCIe spécifique aux puces Ampere Altra. Heureusement pour lui, des correctifs ont été intégrés dans plusieurs distributions Linux, donc c’est facilement contournable.

Mais mais mais… Pour l’Intel Arc A750 c’est un autre délire. En effet, les pilotes (le i915) pour ce GPU d’Intel sont principalement conçus pour une architecture x86, ce qui pose problème sur ARM et malheureusement, le nouveau pilote Xe dédié aux cartes Arc pose aussi problème sur ARM.

Alors que faire ? Se rouler en boule dans un coin et pleurer ? Non ! Vladimir ne s’est pas laissé décourager. En commentant des bouts de code liés à la compatibilité avec les vieilles consoles VGA, il a pu obtenir une image via HDMI. Mais pas de 3D… snif… Il a donc fallu recompiler Mesa3D avec la version compatible Xe et appliquer des correctifs pour résoudre ces bugs spécifiques aux puces Ampere Altra. Et finalement, petit miracle 2024, l’Intel Arc A750 a pu afficher de la 3D sur son processeur ARM 64 cœurs !

Bien que cette configuration ne permette pas de jouer à des jeux extrêmement gourmands tels que Crysis en 8K, pouvoir faire tourner Doom 3 représente déjà un exploit ! Bravo Vlad, tu es notre héros

Bref, la prochaine qu’on vous dira « c’est pas possible« , fait comme Vlad, persévérez !

Source

  • ✇Korben
  • Rain Alarm – L’app Météo qui vous évite la pluie ☔
    J’sais pas vous, mais moi, à chaque fois que je me dis que je vais bosser dans le jardin, que ce soit pour planter des trucs ou tondre la pelouse, je me prends une averse au bout de 5 min. Pire poisseux que François Hollande sur le coup. Mais avec Rain Alarm, mes mésaventures appartiennent au passé. Cette application d’un nouveau genre n’utilise pas les traditionnelles prévisions météo qui, avouons-le, manquent souvent de précision (A part l’app Météo Agricole à jamais dans mon cœur) mais s

Rain Alarm – L’app Météo qui vous évite la pluie ☔

Par : Korben
30 avril 2024 à 09:00

J’sais pas vous, mais moi, à chaque fois que je me dis que je vais bosser dans le jardin, que ce soit pour planter des trucs ou tondre la pelouse, je me prends une averse au bout de 5 min. Pire poisseux que François Hollande sur le coup.

Mais avec Rain Alarm, mes mésaventures appartiennent au passé. Cette application d’un nouveau genre n’utilise pas les traditionnelles prévisions météo qui, avouons-le, manquent souvent de précision (A part l’app Météo Agricole à jamais dans mon cœur) mais s’appuie à la place sur des données radar fournies par les services météorologiques gouvernementaux. Ces informations sont mises à jour en temps réel, ce qui permet à l’app de détecter l’approche des précipitations avec une fiabilité inégalée.

Concrètement, Rain Alarm vous envoie une notification dès que de la pluie est détectée dans un rayon prédéfini autour de votre position. Vous pouvez ainsi savoir précisément quand sortir votre parapluie ou, au contraire, profiter d’une accalmie pour vous balader. L’app indique même l’intensité et la zone couverte par les précipitations, pour une information complète.

Autre atout de Rain Alarm c’est sa couverture mondiale. Que vous soyez aux États-Unis, au Japon, à Roubaix ou en Australie, vous pourrez bénéficier de ses alertes. L’app fonctionne dans de nombreux pays, et la liste ne cesse de s’allonger. Ce qui est pratique si comme moi, vous tondez la pelouse dans plusieurs fuseaux horaires.

Au-delà de son utilité au quotidien, Rain Alarm ouvre de nombreuses perspectives. Elle peut devenir l’alliée des agriculteurs pour optimiser l’arrosage des cultures, des organisateurs d’événements en extérieur pour sécuriser leurs manifestations, ou encore des gestionnaires de réseaux d’eau pour anticiper les risques d’inondation. Les possibilités sont nombreuses !

Si ça vous branche, sur Desktop, il suffit de télécharger Rain Alarm sur votre smartphone, via le Chrome Web Store ou le site addons.mozilla.org pour Firefox. Le site propose aussi de vous notifier directement. Et il y a bien sûr des app mobiles pour Android et iOS.

  • ✇LinuxFr.org : les dépêches
  • Entretien avec GValiente à propos de Butano
    GValiente développe un SDK pour créer des jeux pour la console Game Boy Advance : Butano. Cet entretien revient sur son parcours et les raisons qui l’ont amené à s’intéresser à cette console. lien nᵒ 1 : Butanolien nᵒ 2 : Un article sur l'architecture de la Game Boy Advancelien nᵒ 3 : Le dossier de Grospixels sur cette consoleSommaire Partie 1: présentation Qui êtes-vous, quel est votre parcours et est-il lié aux jeux vidéos ? Pourquoi le retrogaming est-il important pour vous ? Partie

Entretien avec GValiente à propos de Butano

GValiente développe un SDK pour créer des jeux pour la console Game Boy Advance : Butano.

Cet entretien revient sur son parcours et les raisons qui l’ont amené à s’intéresser à cette console.

Game Boy Advance

Sommaire

Partie 1: présentation

Qui êtes-vous, quel est votre parcours et est-il lié aux jeux vidéos ?

Après des études d'informatique, j'ai travaillé dans plusieurs domaines autour du logiciel comme les pages web ou les applications graphiques Java/Swing.

Aujourd'hui je travaille plutôt en C et C++ dans l'embarqué, ainsi même si mon parcours professionel n'est pas directement lié aux jeux vidéos, mon boulot actuel en est plutôt proche.

Comme loisir, j'ai joué un peu avec RPG Maker 2K avant de commencer à programmer pour la GBA.

Pourquoi le retrogaming est-il important pour vous ?

D'abord pour la nostalgie : être capable de jouer à nouveau aux jeux de votre enfance est très important pour tout le monde. Malheureusement, pouvoir rejouer à de vieux jeux est quelque chose que nous sommes en train de perdre à cause des restrictions des jeux modernes (mode en ligne obligatoire, DRM…).

Ensuite, grâce aux émulateurs il est très facile de lancer sans problème des jeux que j'ai créés pour la GBA il y a 20 ans. Si je les avais fait pour Mandrake 8.0 à la place, ce ne serait pas aussi facile de les tester aujourd'hui sans recompiler du vieux code et autre.

Partie 2: Game Boy Advance

Comment en êtes-vous venu à vous intéresser à la Game Boy Advance ?

La GBA SP était un grand progrès par rapport au modèle original grâce à l'écran rétro-éclairé et la batterie intégrée, alors j'en ai acheté une dès qu'elle est sortie.

Les jeux 2D me manquaient après la N64 et la GameCube, alors pouvoir jouer à des classiques de la 2D comme Final Fight sur une console portable était génial.

Mais ce qui m'intéressait vraiment à propos de la GBA était la possibilité de créer des jeux grâce au HAM SDK et aux flashcarts.

La GBA SP

Qu’est-ce que cette console a de particulier ?

C'est la dernière console 2D. Le système graphique de la GBA fonctionne comme les consoles 16 bits classiques comme la SNES ou la Megadrive, avec des sprites, des arrières plans…

Toutefois elle utilise un processeur ARM 32 bits tourant à 16MHz, alors il n'est plus nécessaire ou aussi important de programmer en assembleur pour avoir de bonnes performances.

En plus, je trouve plus "magique" de voir votre jeu tourner sur un écran d'une vieille console portable que sur un écran de télévision.

Est-elle proche de la Game Boy ou de la SNES ?

Au niveau graphique, c'est comme une SNES avec plus de couleurs simultanées, plus d'arrière plans et beaucoup de sprites par scanline (proche d'une Neo Geo et en plus on peut leur appliquer une rotation !). Elle permets aussi d'utiliser un "framebuffer" qui rends le rendu "logiciel" plus facile. Les jeux 3D comme Doom sont beaucoup plus rapide sur la GBA grâce à ces modes. Malheureusement la résolution de l'écran est un peu trop basse (240x160 contre 256x224 pour la SNES par exemple).

Cependant, au niveau son, c'est pire que la SNES: la GBA partage le même canal PSG que la Game Boy originale avec deux nouveaux canaux directs pour jouer des samples PCM. Avoir seulement deux canaux PCM demande presque toujours de gâcher des tonnes de cycles CPU en mixage audio et même après cela sonne toujours pire que la SNES.

Comment fonctionne l'affichage (PPU, écran LCD) ?

Comme je l'ai dit, cela fonctionne comme une SNES : vous avez un nombre fixe d'arrière plans et de sprites, vous les configurez en écrivant des registres. La GBA a aussi des interruptions HDMA et H-Blank, donc vous pouvez faire beaucoup d'effets "raster" comme le fameux mode 7 de la SNES.

Néanmoins, quelques limitations pénibles du PPU de la SNES ont été retiré, ce qui rends le PPU de la GBA plus facile à programmer. Par exemple, la GBA permets d'écrire en VRAM pendant le "V-Draw" (quand le PPU rafraîchit l'écran). Cela permets d'utiliser toutes les tailles de sprites disponibles en même temps alors que la SNES ne permettait que deux tailles simultanément.

La console peut-elle faire de la 3D ?

La GBA n'a pas d'accélération 3D matérielle, mais son CPU est assez rapide pour faire du rendu logiciel (à un faible taux de rafraîchissement). Il y a quelques techniques pour dessiner des polygones 3D avec des sprites 2D, mais cela vient avec des tonnes de limitations. Dans Varooom 3D, j'ai utilisé des sprites 2D poour dessiner des lignes horizontales, ce qui m'a permis de dessiner quelques polygones non texturés à 60 images par seconde.

Comment fonctionne le son ?

Je ne sais pas très bien comment fonctionne l'audio de la GBA, car je n'en ai pas eu besoin : il y a de très bonnes bibliothèques disponibles et j'ai préféré les intégrer plutôt que d'implémenter ma propre solution.

Comment marche la rétrocompatibilité avec les précédentes Gameboy ?

Il y a 3 modèles de GBA disponible: GBA, GBA SP and GBA Micro. Seules les deux premières sont compatibles avec la Game Boy originale.
La rétrocompatibilité est transparente pour le développeur et la plupart des fonctionnalités de la Game Boy sont indisponibles en mode "natif" : un jeu GBA ne peut pas utiliser le CPU de la Game Boy par exemple.

La machine possède une ROM interne, à quoi sert-elle ?

La GBA démarre depuis le BIOS, une petite ROM qui montre l'écran d'accueil et exécute le jeu après cela. Il a aussi quelques fonctions liées à l'énergie, comme arrêter le CPU jusqu'au V-Blank ou mettre la console en veille. Enfin, il propose quelques routines comme des fonctions mathématiques, mais je ne les utilise pas pour des questions de performances. Cela aide aussi à éviter les bugs d'émulation du BIOS.

La GB possède un dispositif anti piratage, comment fonctionne-t-il ?

Je préfère vous renvoyer à l'article de copetti.org sur le sujet.

Comment fonctionne le réseau (Game Boy Link) ?

Comme pour l'audio, je ne sais pas trop comment cela fonctionne, car j'ai préféré intégrer une bibliothèque.
En général je préfère une bonne bibliothèque plutôt que passer du temps à implémenter une plus mauvaise solution.

Les cartouches peuvent-elles embarquer des coprocesseurs ?

Bien sûr, mais le CPU est tellement puissant par rapport à ceux des consoles 16 bits, qu'il n'y en a pas souvent besoin. Le meilleur exemple d'une cartouche officielle avec un coprocesseur dont je me rappelle est la Play-Yan : elle semble embarquer un VideoCore 1 pour jouer des musiques mp3 et des vidéos mp4 depuis une carte SD.

Les émulateurs sont-ils bons ?

Extraordinaires. Les émulateurs GBA sont si bons que vous n'avez presque jamais besoin de tester sur du vrai matériel. Si votre jeu fonctionne sur la plupart des émulateurs modernes, alors votre jeu a toutes les chances de fonctionner sur une console réelle sans souci. D'ailleurs la plupart des membres actifs de gbadev ne possèdent même pas de GBA.

Quels sont vos jeux commerciaux préférés sur cette console ?

Beacoup :

  • des joyaux de Treasure comme Astro Boy Omega Factor et Gunstar Super Heroes ;
  • d'autres jeux d'action comme Ninja Five-0, Dragon Ball Advanced Adventure et Final Fight ;
  • tous les Castlevanias (qui sont proches du Simphony of the Night de la PS1) ;
  • les ports de Doom ;
  • bien sûr les classiques de Nintendo comme Wario Ware et Zelda the Minish Cap ;
  • des RPGs bien connus comme Mother 3, Mario and Luigi et Final Fantasy I&II ;
  • quelques RPGs moins connus comme Riviera et CIMA the Enemy.

Astro Boy Omega Factor

Quels sont vos jeux "homebrew" préférés sur cette console ?

Il y en a beaucoup aussi, mais mon préféré est de loin GBA Microjam '23: c'est une collection de mini jeux très amusants à la Wario Ware.
Ce qui le rend très spécial, c'est que chaque mini-jeu a été fait par un membre différent de gbadev, c'est un jeu "communautaire".

D'autres très bons:

gba-microjam-23

Partie 2 : Butano

Pourquoi créer un SDK aujourd’hui pour si vieux système ?

L'objectif de Butano était de pouvoir travailler avec le PPU de la GBA et le reste du système aussi facilement que possible sans perdre trop de cycles CPU. Et je pense que j'y suis arrivé : avec Butano, vous pouvez créer, afficher et détruire des sprites, des arrière plans, du texte, des effets raster et plus encore avec une seule ligne de C++.

Les prémisses de Butano étaient une bibliothèque interne à mes jeux. Je n'avais pas de plan pour rendre ça public à part faire quelques exemples et de la documentation.

Finalement je suis content d'avoir rendu ça public : le plus grand accomplissement de Butano est le grand nombre de jeux de qualité fait avec.

Est-ce que vous participez vous même à la création de jeux ?

Oui, Butano vient avec le code source de deux jeux que j'ai fait : Butano Fighter et Varooom 3D.

Varooom 3D

Quels ont été les difficultés pour créer Butano ?

Pour être honnête, je n'ai pas eu beaucoup de difficultés grâce au grand nombre de bibliothèques, tutoriaux, émulateurs et outils disponibles pour la GBA.

Vous aimeriez vivre du développement de ce logiciel libre?

Bien sûr, mais à moins de travailler à plein temps sur un jeu homebrew à grand succès, c'est difficile voire impossible de vivre de ça.

Est-ce que Butano gère les accessoires (e-Reader, WormCam, Play-Yan…) de la console ?

Il gère les accessoires les plus communs : SRAM, rumble et l'horloge temps réel / real time clock (RTC).

Pour les accessoires plus exotiques, je pense qu'il est préférable d'utiliser d'autres bibliothèques.

Quels conseils donneriez-vous à quelqu’un qui veut se lancer dans le développement de jeux Game Boy Advance ?

Premièrement, vous devez apprendre les bases du C/C++ : la plupart des nouveaux connaissent uniquement des langages de haut niveau comme Javascript ou Python, malheureusement ils sont un peu trop lourds pour la pauvre GBA.

Après, vous pouvez suivre cet excellent guide plutôt que suivre mes modestes conseils.

Quels sont les outils pour créer/préparer des graphismes utilisable par Butano ?

J'utilise Gimp et Usenti (un logiciel proche de MS Paint pour la GBA et notamment une gestion des couleurs 15 bits et des palettes). Toutefois, la plupart des outils permettant de produire des images indexées peuvent faire l'affaire.

Pour le travail des cartes, j'aimais utiliser Tiled par le passé.

Quels sont les outils pour créer/préparer des musiques et des sons utilisable par Butano  ?

OpenMPT est l'outil audio le plus populaire pour la GBA, les musiques étant généralement créées avec un tracker. Il a aussi de bons outils pour travailler avec les samples. D'autres utilisent hUGETracker et Furnace.

Est-il possible de créer ses propres cartouches ?

Je ne suis pas juriste, mais comme Butano est sous licence zlib, tant que vous respectez cette licence et celles des autres dépendances, vous pouvez faire vos propres cartouches et même les vendre.

Je pense que ce que font la plupart des gens aujourd'hui, c'est acheter des cartouches pirates Pokémon pas chères, et les flasher pour y mettre leurs propres jeux.

Pourquoi le choix de C++ pour ce SDK ?

Comme je l'ai dit, un langage de haut niveau avec ramasse miettes est généralement trop pour la GBA.

Entre C et C++, j'ai choisi ce dernier, car il permet de réduire grandement la quantité de code sans gâcher trop de CPU.

Par exemple:

  • les destructeurs de C++ permettent de ne pas avoir à écrire trop de code pour nettoyer les ressources, ce qui est une source de bugs importante sur les grands projets GBA ;
  • la GBA ne gère pas les nombres flottants en hardware, donc utiliser des nombres en virgule fixe est essentiel. Grâce à la surcharge d'opérateurs, C++ permets d'écrire des classes qui se comportent comme des nombres flottants.
  • L'opérateur constexpr permet de générer et stocker des tables de correspondance (lookup tables) ou autres constantes en ROM sans avoir à utiliser d'outils externes.

Est-ce qu'il existe d'autres SDK libres pour ces consoles ?

Il y a beaucoup de SDK pour GBA, mais malheureusement (à mon avis) la plupart sont de plus bas niveau que Butano.

Voici une liste de ressources (compilers, toolkits, libraries, etc.) pour la GBA: resources GBA.

Partie 3: pour finir

En dehors du travail, quels logiciels libres utilisez-vous, sur quel OS ?

J'utilise généralement Windows à cause du boulot et de certains jeux PC, mais la plupart des programmes que j'utilise sont libres.

L'éditeur de code que j'utilise presque toujours est Qt Creator, il est génial pour C++.

À part les logiciels libres pour le développement GBA, j'utilise Firefox, Notepad++, VLC, 7-Zip, LibreOffice, TortoiseGit, VirtualBox et bien sûr les émulateurs pour les vieilles consoles et bornes d'arcade.

Au travail, quels logiciels libres utilisez-vous, sur quel OS ?

Pour le développement embarqué, j'utilise GCC et les outils GNU. Pour les applications de bureau, j'utilise Qt avec MinGW.

GCC est aussi le compilateur le plus populaire pour le développement GBA, alors je n'aurais pas pu l'éviter même si j'avais voulu.

D'autres logiciels que j'utilise au travail : Thunderbird, Putty and WinSCP.

Quelle est votre distribution GNU/Linux préférée et pourquoi, quels sont vos logiciels libres préférés ?

Ubuntu est bien pour le peu d'usage de Linux que je fais.

Mes logiciels libres favoris sont ceux avec lesquels je passe le plus de temps : Firefox, Qt Creator, GCC, les émulateurs.

Quelle question auriez-vous adoré qu’on vous pose ?

Mmh… rien qui me vienne à l'esprit.

Quelle question auriez-vous détesté qu’on vous pose ?

Pourquoi perdez-vous votre temps avec des consoles vieilles de 20 ans ?

Maintenant que j'y pense… J'aurais adoré qu'on me demande ça.

Commentaires : voir le flux Atom ouvrir dans le navigateur

❌
❌