Entretien Bruno Steux Ă  propos de cc2600 et cc7800

Posté par  (site web personnel) . ÉditĂ© par BenoĂźt Sibaud et Julien Jorge. ModĂ©rĂ© par devnewton đŸș. Licence CC By‑SA.
41
9
nov.
2023
Jeu

Bruno Steux dĂ©veloppe des compilateurs pour crĂ©er des jeux pour les consoles Atari 2600 et Atari 7800, cet entretien revient sur son parcours et les raisons qui l’ont amenĂ© Ă  s’intĂ©resser Ă  cette console.

Atari 2600

Sommaire

Partie 1 : Présentation

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

Je suis Bruno Steux, 50 ans. Je travaille comme ingĂ©nieur dans la dĂ©fense et je ne suis pas vraiment gamer. J’ai dĂ©butĂ© l’informatique trĂšs tĂŽt sur un TI 99/4A, puis j’ai enchaĂźnĂ© sur C64 puis Atari ST. J’ai passĂ© mon adolescence pendant l’ñge d’or du jeu d’arcade : des milliards d’heures sur Commando, Bomb Jack, Green Beret
 C’est une pĂ©riode dont je suis restĂ© trĂšs nostalgique. Aujourd’hui, je joue trĂšs rarement, sauf Ă  Dr. Mario avec ma femme (on se fait des duels infernaux), et un peu avec mes Atari avec mon fils de 9 ans.

Comment en ĂȘtes-vous venu Ă  vous intĂ©resser aux consoles Atari ?

J’ai appris l’assembleur du 6502 sur mon C64 Ă©tant jeune et ai gardĂ© un souvenir impĂ©rissable des deux pages sur l’Atari 2600 dans le numĂ©ro spĂ©cial de l’ordinateur individuel de dĂ©cembre 1982. C’était une console trĂšs chĂšre Ă  l’époque et je rĂȘvais d’en avoir une. L’annĂ©e derniĂšre, j’ai lu le livre « Racing the beam » et ai commandĂ© ma premiĂšre console sur eBay, une pauvre 2600 SECAM bien pourrie. J’ai ensuite dĂ©couvert l’univers d’AtariAge et je me suis retrouvĂ© scotchĂ©.

Est-ce que vous participez vous-mĂȘme Ă  la crĂ©ation de jeux ?

Pas vraiment, mais c’est dans les cartons. J’ai Ă©crit un premier jeu disponible gratuitement pour Atari 2600 : Paul’s Happybird (Paul est le prĂ©nom de mon fils de 9 ans) et un deuxiĂšme fini mais pas encore diffusĂ© (Armor Ambush Reloaded). Pas eu le temps de faire l’annonce sur AtariAge
 Une fois les projets cc2600 et cc7800 complĂštement terminĂ©s, je compte me mettre Ă  la rĂ©alisation de jeux complets plus ambitieux.

Partie 2: L’Atari 2600

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

Pour moi 3 éléments uniques: son design - elle reste la plus belle console de tous les temps, avec ses switchs en métal et sa façade de faux bois, sa communauté active sur AtariAge, et son modÚle de programmation tellement unique et plein de challenges.

Comment fonctionne le processeur graphique et sonore (Television Interface Adaptor) ?

Ah, le TIA. Un processeur graphique de machine Ă  Pong, franchement pas vraiment bien conçu mĂȘme pour l’époque. 5 sprites (2 joueurs, la balle, et deux missiles) et un background de 40 pixels de rĂ©solution, et un paquet de registres Ă  modifier Ă  la volĂ©e Ă  chaque ligne Ă  afficher pour faire autre chose qu’un Pong
 Avec un processeur lent, mais lent
 76 cycles processeurs par ligne. Un vrai challenge qui motive les meilleurs programmeurs depuis plus de 40 ans


L’Atari 2600 a connu plusieurs versions (VCS, CX2600, 2800, 2600 Jr, 2600+
) ? Les avez-vous testĂ©s ?

Je suis l’heureux propriĂ©taire d’une Darth Vader Secam, une Darth Vader PAL et une magnifique light six PAL fabriquĂ©e Ă  Sunnyvale, sortie de grange anglaise et donnĂ©e comme morte, mais qui aprĂšs nettoyage s’est rĂ©vĂ©lĂ©e parfaitement vivante. La 2600 Jr ? Trop laide. Je pense acheter l’Atari 2600+, ne serait-ce que pour vĂ©rifier que les jeux que je dĂ©veloppe tournent bien dessus (surtout en mode 7800).

Atari 2600 noire

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

La manette d’origine de l’Atari 2600 est inimitable. Elle a une trĂšs mauvaise prise en main, un seul bouton, mais elle est tellement belle. De loin ma manette prĂ©fĂ©rĂ©e, iconique. La manette de l’Atari 7800 est la pire jamais vue. Elle fait trĂšs mal trĂšs vite. Heureusement, on peut facilement utiliser des manettes de MegaDrive grĂące un petit adaptateur facile Ă  souder


Patrick secoue son stick

NDM : oui c’est bien Patrick Bruel Ă  la manette dans une publicitĂ© avec des captures vidĂ©os pas du tout truquĂ©es.

Les émulateurs Atari 2600 sont-ils bons ?

J’utilise Stella. Il est plus que bon: il est excellent. Il Ă©mule mĂȘme le code ARM pour les cartouches Ă  processeur additionnel, ou encore l’AtariVox pour la synthĂšse vocale
 MĂȘme la connexion Wifi de la PlusCart est Ă©mulĂ©e
 Le dĂ©bugger intĂ©grĂ© est tout Ă  fait complet.

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

Moon Patrol, Q*Bert et Ms. Pacman sont les jeux auxquels j’ai le plus jouĂ©. Ils sont trĂšs bons, mĂȘme pour 2023. Space Invaders ou encore Circus Atari (avec les paddles!) sont excellents aussi.

Q-Bert

Quels sont vos jeux « homebrew » prĂ©fĂ©rĂ©s sur cette console ?

Lode Runner et Boulder Dash. Le premier est incroyable, mĂȘme si le code tourne sur un ARM dans la cartouche (il faut quand mĂȘme passer par le TIA pour l’affichage
). Le second n’utilise mĂȘme pas d’ARM et est une incroyable rĂ©ussite technique. J’ai achetĂ© les deux cartouches sur AtariAge. Amoeba Jump est un petit jeu gratuit gĂ©nial si vous ne connaissez pas.

Partie 3 L’Atari 7800

Atari 7800

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

Outre son chip Maria excellent, il se trouve que c’est une console qui est complĂštement compatible Atari 2600 ET qui a une sortie Peritel pour la version française. Elle est donc, contrairement Ă  ses aĂŻeules, trĂšs simple Ă  brancher sur un tĂ©lĂ©viseur moderne


Est-elle juste une Atari 2600 boostée ?

C’est vraiment la descendante de la 2600, car elle est 100% compatible : elle utilise un 6502 et le TIA. Le format de cartouche est compatible aussi (8 broches en plus sur les cĂŽtĂ©s pour les cartouches de 7800). Mais la prĂ©sence de Maria n’en fait pas qu’une 2600 boostĂ©e. On passe d’une console Pong Ă  un Ă©quivalent NES ou Sega Master Systems, sensiblement supĂ©rieure Ă  un C64 par exemple.

Comment fonctionne le processeur graphique (MARIA) ?

Ce composant trĂšs simple et trĂšs low cost a Ă©tĂ© conçu par GCC (General Computer Corporation), les concepteurs du jeu d’arcade Ms. Pacman. C’est une puce trĂšs flexible dont l’architecture se rapproche de celle des jeux d’arcade de l’époque. Pas de notion de sprite ou de background, juste des listes d’objets Ă  transfĂ©rer par DMA (Direct Memory Access). On a donc une machine capable d’afficher des bitmaps ou des sprites sans limite de nombre ou de taille autre que celle imposĂ©e par son petit bus mĂ©moire 8 bits. Une puce vraiment gĂ©niale mais qui impose au programmeur un modĂšle de programmation exotique, d’autant que le mapping mĂ©moire impose d’entrelacer code et graphiques (les deux lignes successives d’un « sprite » doivent ĂȘtre sĂ©parĂ©es de 256 octets en mĂ©moire. Sic.). Le tout uniquement en assembleur, car le 6502 est allergique Ă  tout langage de haut niveau. D’oĂč une logithĂšque bien pauvre Ă  la fin
 Mais une machine excellente qui reste Ă  exploiter en 2023 !

Les émulateurs Atari 7800 sont-ils bons ?

Oui, a7800 est excellent, parfaitement "cycle accurate" et dotĂ© d’un excellent debugger intĂ©grĂ© pour les programmeurs.

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

Franchement? Je trouve les jeux commerciaux sur Atari 7800 globalement mauvais, voire indĂ©cents (Jinks, Aces of Aces). J’ai Ă©tĂ© trĂšs déçu par les adaptations d’Ikari Warriors et de Double Dragon, considĂ©rĂ©s pourtant comme des bons jeux sur Atari 7800. Commando est correct, mais sans plus par rapport Ă  la version C64 Ă  laquelle je jouais petit. Les jeux rĂ©alisĂ©s par GCC (les concepteurs de Maria) sont trĂšs corrects, mais il s’agit pour la plupart d’adaptations de jeux d’arcades assez simples (Dig Dug, Ms. Pacman).

Quels sont vos jeux « homebrew » prĂ©fĂ©rĂ©s sur cette console ?

Je n’ai jouĂ© Ă  aucun jeu homebrew sur Atari 7800. C’est d’abord pour moi une plateforme de dĂ©veloppement. J’ai vu sur Youtube l’adaptation de 1942 qui est vraiment trĂšs bonne, mais elle n’est pas diffusĂ©e sur cartouche. Rikki & Vikki a l’air aussi excellent, mais est aujourd’hui introuvable.

Partie 4 : cc2600 et cc7800

Pourquoi crĂ©er des compilateurs aujourd’hui pour de si vieux systĂšme ? Pourquoi le C ?

Pourquoi le C ? Parce que c’est le standard pour le dĂ©veloppement systĂšme, a priori ce qu’il faut pour ce type de consoles. J’ai fait du C pendant 30 ans, donc naturellement quand j’ai dĂ©couvert les Atari 2600 et 7800 et que j’ai vu que tout Ă©tait programmĂ© soit en assembleur, soit en basic, je me suis dit qu’il fallait faire quelque chose. Il existe bien dĂ©jĂ  un paquet de compilateur C pour le 6502 dont l’excellent cc65, mais le 6502 est un processeur qui se prĂȘte trĂšs mal au langage C (nombre de registres trĂšs rĂ©duit et capacitĂ©s d’indexation extrĂȘmement limitĂ©es). RĂ©sultat: le code gĂ©nĂ©rĂ© par cc65 est inutilisable (trop gros) sur les Atari. Sur la NES, pas de souci, ça passe, car le processeur graphique de la NES fait l’essentiel. Sur les Atari 2600 comme 7800, c’est le 6502 qui travaille et qui doit alimenter le TIA ou MARIA le plus vite possible. Le compilateur C doit donc gĂ©nĂ©rer un code proche d’un code assembleur Ă©crit Ă  la main, d’oĂč cc2600 et cc7800. Ils ne sont pas aussi complets que cc65 mais gĂ©nĂšrent le code assembleur 6502 qui convient pour les Atari.

Quels ont été les difficultés pour créer cc2600 et cc7800 ?

Je n’ai pas vraiment rencontrĂ© de difficultĂ© pour ĂȘtre franc. J’ai programmĂ© cc6502 (le code commun Ă  cc2600 et cc7800) avec grand plaisir en Rust, en utilisant la librarie Pest pour gĂ©rer la grammaire du C. Ca a Ă©tĂ© un rĂ©gal. J’ai Ă©crit de nombreux tests unitaires (une facilitĂ© intĂ©grĂ©e Ă  Rust) pour Ă©viter de me perdre dans les bugs. Au bout d’une semaine, j’avais un compilateur opĂ©rationnel, puis je l’ai amĂ©liorĂ© au fur et Ă  mesure du dĂ©veloppement de mes jeux ou exemples sur Atari 2600 puis 7800. Je me suis surtout servi de ce projet personnel pour apprendre le Rust, et je crois que l’objectif est atteint.

Quels conseils donneriez-vous Ă  quelqu’un qui veut se lancer dans le dĂ©veloppement de jeux avec ces compilateurs ?

Ces compilateurs peuvent faire gagner beaucoup de temps comparĂ© Ă  l’utilisation de l’assembleur, mais la spĂ©cificitĂ© des architectures des Atari 2600 et 7800 imposent d’abord de bien les maĂźtriser. On ne peut pas s’affranchir non plus d’apprendre l’assembleur du 6502, car cc6502 est un compilateur C incomplet orientĂ© 6502 (il permet notamment d’utiliser directement les registres X et Y du 6502) et que tout dĂ©bogage se fera en assembleur


Quels sont les outils pour créer/préparer des graphismes, musiques et sons pour ces consoles ?

J’ai Ă©crit Ă©galement en Rust sprites7800 et tiles7800 qui gĂ©nĂšrent le code C des graphismes Ă  partir d’images PNG et d’une description en YAML des sprites et des tiles Ă  gĂ©nĂ©rer. Pour la musique, il existe l’excellent RMTracker sur Atari 7800 qui permet de rĂ©aliser de belles musiques de fond pour le chip POKEY, et que j’ai intĂ©grĂ© Ă  cc7800. Pour les musiques Ă  base de TIA (pour 2600 comme 7800), je fournis un exemple d’intĂ©gration d’un ensemble de sons rĂ©alisĂ©s par l’auteur de 7800Basic. Il existe aussi un TIA tracker, mais je ne l’ai pas encore intĂ©grĂ©. J’essaie de dĂ©velopper au fur et Ă  mesure de nouveaux « headers » pour cc2600 et cc7800 pour faciliter le travail des dĂ©veloppeurs.

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

C’est trĂšs simple sur la 2600 comme sur la 7800. On trouve les schĂ©mas de PCBs tout fait sur internet avec les fichiers pour rĂ©aliser les cartouches en impression 3D. Il n’est pas trĂšs complexe non plus de rĂ©aliser des cartouches intĂ©grant un micro-contrĂŽleur type STM32F (en se basant par exemple sur le projet UnoCart), qui peut non seulement Ă©muler l’EPROM mais exĂ©cuter du code spĂ©cifique (accĂ©lĂ©rateur matĂ©riel) ou encore assurer une connexion Wifi via un ESP32.

Comment s’accommoder des faibles ressources (peu de RAM, CPU sans virgule flottante
) ?

Vous parlez des 128 octets de RAM Ă  partager entre variables et pile sur l’Atari 2600 ? Ça fait partie du jeu ! Je trouve que finalement on s’en accommode facilement. Le plus contraignant est cette sacrĂ©e limitation de dĂ©calage bit par bit sur le 6502
 Et l’absence de multiplieur matĂ©riel
 Le plus souvent, on s’en tire en prĂ©calculant tout et en utilisant des tables, la taille de la ROM et donc du code Ă©tant comparativement trĂšs peu limitĂ©e.

Partie 5: Pour finir

Vous aimeriez vivre du développement de vos logiciels libres?

IdĂ©alement oui, mais je ne vois pas vraiment comment pour ĂȘtre franc
 Pour l’instant, ça m’a coĂ»tĂ© beaucoup de temps et pas rapportĂ© un kopek, mais sait-on jamais. La communautĂ© Atari, aussi dynamique soit-elle, reste rĂ©duite. J’espĂšre que l’Atari 2600+ sera un succĂšs. Bien que bourrĂ©e de dĂ©fauts, ça me paraĂźt ĂȘtre la proposition la plus sĂ©rieuse depuis longtemps de relance d’une activitĂ© par Atari.

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

Je dĂ©veloppe tout sur mon PC sous Ubuntu 22.04. Je programme essentiellement en Rust en utilisant Neovim comme Ă©diteur. J’utilise aussi GIMP pour tout ce qui est graphisme. Avec ces outils, je couvre 99% de mes besoins.

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

Pareil, au niveau professionel : dĂ©veloppement en Rust sous Ubuntu 22.04. J’utilise Firefox comme navigateur. Pour la partie bureautique, j’ai un second PC professionnel sous Windows avec Word et compagnie. J’avoue avoir toujours du mal avec LibreOffice


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

Je devrais rĂ©pondre ArchLinux si j’étais un vrai un geek, mais franchement Ubuntu me satisfait pleinement. C’est simple et ça marche. Mes logiciels libres prĂ©fĂ©rĂ©s ? Rust, LLVM, Vim et Neovim, GIMP. Et KiCad pour le design de circuits. J’utilise aussi parfois Blender et Audacity. Blender est particuliĂšrement impressionnant comme projet open source.

Quelle question auriez-vous adorĂ© qu’on vous pose ?

Comment expliquez-vous les dizaines de milliers de like que vous obtenez pour chacune de vos publications sur AtariAge ? Humm, mon record de like est à 13. Ça porte bonheur non ?

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

Vous n’avez pas mieux Ă  faire que de dĂ©velopper pour une plateforme complĂštement oubliĂ©e depuis plus de 30 ans ?

Aller plus loin

  • # super intĂ©ressant

    Posté par  . Évalué à 8.

    Merci pour ces chroniques, je trouve ça super intéressant. Que des personnes passent du temps 30 ans aprÚs (40?) à dev des trucs sur du vieux matos, je trouve ça passionnant.

    Et j'ai joué à space invaders sur une vieille console atari2600 qui marchait encore, c'était rigolo :-)

  • # quand je pense


    Posté par  . Évalué à 6. DerniĂšre modification le 09 novembre 2023 Ă  11:39.

    Quand je pense que je croyais faire du bas niveau archéologique avec l'assembleur Z80 sur MSX :)

    Merci pour l'interview, trĂšs vivante.

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

  • # 1024 excuses

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

    J'ai oubliĂ© de placer le jeu de mot Atari, Ă  moitiĂ© dans ton lit dans la dĂ©pĂȘche :-(

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

  • # ah bah le 6502

    Posté par  (site web personnel) . Évalué à 4. DerniĂšre modification le 09 novembre 2023 Ă  20:14.

    moui, c'est un peu spartiate le 6502 avec ses 2 registres (A et B) et ses deux index (X et Y)

    j'ai pas mal joué avec l'assembleur sur mon Apple IIe, de bons souvenirs
 d'abord en Basic avec des PEEK et des POKE, puis avec un vrai assembleur (MASM ou TASM je crois). C'était indispensable pour pouvoir utiliser l'extension à 128 ko (l'AppleSoft Basic ne voyait que 48 ko sur les 64 ko de base et pas l'extension de 64 ko à 1500 Francs de l'époque :/)

    Lode Runner et Boulder Dash, j'y ai passé des heures ! (ainsi que Conan, que Locksmith 5.0 avait mal copié et dont le dernier niveau plantait :/)

    • [^] # Re: ah bah le 6502

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

      J avais 100 niveau perso de load runner :)

      "La premiÚre sécurité est la liberté"

    • [^] # Re: ah bah le 6502

      Posté par  . Évalué à 3.

      Et c'est mĂȘme pire que ça : le 6800 avait bien les registres A et B mais le 6502 faisait l'Ă©conomie du B et ne gardait qu'un unique registre accumulateur.
      Cependant, l'accÚs rapide à la premiÚre page mémoire (la zeropage) permet de facto d'avoir l'équivalent de 256 registres généraux.

  • # Et reprendre des programmes d'ailleurs?.

    Posté par  (site web personnel, Mastodon) . Évalué à 2. DerniĂšre modification le 15 dĂ©cembre 2023 Ă  21:55.

    Outre le fait de crĂ©er de nouveaux jeux pour l'Atari, est-ce que ton compilateur permet de reprendre certains jeux existant (Ou autres programmes) et de les faire tourner sur Atari en les recompilant? J'imagine qu'il y a pas mal de retouche manuel Ă  faire (i.e. de l’assembleur).

    Je pense un peu a des jeux écrit en C pour d'autres console mais aussi des programmes tels que ceux de l'IOCCC ou je ne sais pas (Il y avait un simulateur d'avion par exemple).

    Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.

Suivre le flux des commentaires

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