PICO-8, TIC-80 et les consoles imaginaires

Posté par . Édité par ZeroHeure, Davy Defaud et ted. Modéré par Ysabeau. Licence CC by-sa.
53
19
sept.
2019
Jeu

Avec le regain d’intérêt actuel pour le retrogaming et les vieilles machines 8 bits et 16 bits, certains passionnés ont créé des consoles imaginaires, sur lesquelles on peut développer des jeux vidéo simples.

Aussi nommées Fantasy Consoles, ce sont des émulateurs de consoles de jeu, livrés sous forme de machines virtuelles, avec des spécifications et des limitations précises, ce qui a pour vocation de stimuler l’imagination, la créativité et de rendre le développement plus abordable pour tous.

Une des premières consoles imaginaires est PICO-8, sortie fin 2014, et développée par Lexaloffle (connu notamment pour Voxatron). Il ne s’agit pas d’un logiciel libre, ni même gratuit (15 €). En revanche, j’y ai eu accès à la suite de l’achat Humble Bundle de Voxatron ; du coup, PICO-8 m’a été offert lorsqu’il est sorti ensuite, ce qui m’a mis le pied à l’étrier pour m’y plonger. J’ai été un peu triste du côté non libre du logiciel, mais séduit par les nombreux jeux qui sont sortis à la suite de ça, et surtout par la communauté sympathique qui gravite autour. Le logiciel existe pour GNU/Linux (x86 et ARM, c’est‐à‐dire Raspberry Pi et PocketChip), Windows et macOS, et les caractéristiques de la machine virtuelle sont les suivantes :

  • 16 couleurs (sur une palette fixe, même si bidouillable) ;
  • définition d’affichage de 128 × 128 pixels ;
  • sons chiptunes 8 bits sur quatre voix ;
  • mémoire vive : 32 Kio.

Le logiciel contient un IDE intégré, qui permet de créer les images, les sons, les musiques, et d’écrire le code, en Lua. Tout se fait comme si l’on était en présence d’un véritable ordinateur, avec sa résolution et ses limitations. Un développeur a même fait un remake de Alone in the Dark en 3D, ce qui place la barre très haut niveau hacking… On trouve donc des jeux, mais aussi des démos, des outils, comme au bon vieux temps des années 80.

un jeu sur Pico-8
mod sur Pico-8
une démo sur Pico-8

Certaines caractéristiques du logiciel sont ingénieuses et étonnantes.
Par exemple, les « cartouches » de jeux sont au format PNG (oui oui, le format d’image), ce qui présente la jaquette du jeu, et le code en lui‐même se trouve… stocké dans les 2 bits les moins significatifs de chacun des 4 canaux de couleur, dans l'ordre ARGB. Une image de 160 pixels de large et 205 pixels de haut donnant un stockage possible de 32800 octets. De ceux-ci, seuls les 32769 premiers sont utilisés. En résumé les diverses nuances de couleurs permettent d’encoder les données selon un procédé que l'on retrouve en stéganographie.

cartouche

Il suffit donc de charger une image dans le logiciel pour y jouer. On peut également exporter les jeux pour les rendre jouables en HTML 5, depuis n’importe quel navigateur.

Vous serez sans doute déçu comme moi que ce logiciel ne soit pas libre, néanmoins il faut savoir que Sam Hocevar a créé un émulateur libre de PICO-8 (c’est‐à‐dire l’émulateur d’un émulateur). Mais ça a de grosses dépendances (cadriciel lol). Du coup, le dossier de compilation fait… 1,5 Gio une fois tout compilé. Je ne l’ai pas testé plus que ça.

À la suite de PICO-8, le concept a été repris par d’autres développeurs, avec plus ou moins de bonheur, dans des consoles imaginaires avec plus ou moins de limitations, sur un modèle payant ou libre. La voie est tracée ! On peut trouver une liste des consoles de ce type, avec leurs caractéristiques, le langage utilisé (il y en a en Basic, en assembleur, en C, en JavaScript, en Python, etc.), la licence, le système d’exploitation cible, etc. Il y en a près de cinquante, le choix est vaste.

Dans cette liste, on pourra notamment retenir LIKO-12, et notamment TIC-80, qui est un peu moins restrictif que PICO-8 dans les caractéristiques, tout en présentant des outils d’éditions avancés, et surtout qui est entièrement libre. Il en existe aussi une version baremetal pour Raspberry Pi, ce qui en fait presque une console matérielle (TIC-80 s’ammorce directement dessus).

Tic80

J’ai beaucoup parlé de PICO-8 car c’est là qu’on trouve le plus de ressources, manuels, tutoriels vidéos, exemples, etc., mais cette présentation peut s’appliquer dans une moindre mesure à TIC-80, qui a une petite communauté derrière. Le développement semble un peu ralenti, mais il y a des commits réguliers sur GitHub, donc on peut espérer que cette machine virtuelle continue de susciter l’intérêt encore de nombreuses années…

Aller plus loin

  • # Dingue !

    Posté par (page perso) . Évalué à 10 (+14/-0).

    Merci, je ne connaissais pas et je trouve le concept délicieusement geek. Inutile donc indispensable.

    Et quel plaisir de voir que Sam Hocevar est toujours aussi dingue !

  • # Euh... non ?

    Posté par . Évalué à -10 (+4/-34). Dernière modification le 20/09/19 à 00:39.

    Que LinuxFr devienne plus "bien-pensant", crie au loup et sorte les modos menaçants quand les débats s'animent et que des mots un peu durs sortent … c'est pénible en bien des points, mais admettons.
    Que LinuxFr deviennent de plus en plus "pensée unique", c'était encore plus pénible, mais le peu de contenu intéressant qui y passait faisait passer la pillule.

    Mais là, on a un contenu sur un écosystème propriétaire, très très très spécifique (coder des jeux rétro-gaming-like) qui passe en Dépêche ?
    Ok, c'est fun, mais la ligne éditoriable n'est pas, de mémoire, réellement celle-ci.
    Au mieux, ce genre de truc c'est une entrée dans les forums ou un journal.

    Au final,j'ai du louper la news qui annoncé que LinuxFR s'associait à GameKult et que l'équipe de modération des forums de jeuxvideo.com venait prêter main-forte …
    Plus que jamais, "C'était mieux avant" ©

    • [^] # Re: Euh... non ?

      Posté par . Évalué à 10 (+20/-1).

      Tic-80 est un logiciel 100% libre et pico-8 a une implémentation libre réalisée par un développeur de chez debian.

      Si ce n'est pas assez pour toi tu peux toujours aller te faire rédiger une dépêche cinéma.

    • [^] # Re: Euh... non ?

      Posté par . Évalué à 6 (+6/-1). Dernière modification le 20/09/19 à 07:04.

      Si ça c'est pas du Troll … !

    • [^] # Motus

      Posté par . Évalué à -3 (+3/-7).

      Salut,

      j'ai du louper la news qui annoncé que

      Perdu.

      […]louper la news qui a annoncé que[…]
      ou
      […]louper la news qui annonçait que[…]

      Dommage, c'était pourtant bien parti, mais il ne faut pas se louper.

      ;)

      Sinon pour l'OP, merci de griller mon vendredi :(

      • [^] # Re: Motus

        Posté par . Évalué à -10 (+1/-21).

        Euh récemment, tu as écrit ça:

        EDIT: linuxfr permets de changer de style avec le lien idoine

        Tu m'expliques à quel moment le verbe permettre prend un 's' à la 3ème personne du présent ?
        Donc t'es mignon, va jouer ailleurs.

  • # J'adore...

    Posté par (page perso) . Évalué à 3 (+3/-1).

    Avec un minimum de détection/correction d'erreur, ça veut dire qu'on peut copier un jeu… avec un photocopieur :)

    Et sinon, on peut jouer en réseau avec un émulateur V24 over IP ?

    • [^] # Re: J'adore...

      Posté par . Évalué à 3 (+1/-0). Dernière modification le 20/09/19 à 11:05.

      il faudrait un sacré photocopieur /scanner ! Le codage se trouve dans des niveaux de gris très similaires, quasi-invisibles. Tu ne les vois sans doute pas à l'oeil nu sur la cartouche de "Shadows of Dunwich" mis en copie plus haut, en zoomant on voit un peu, mais presque rien.

      Pour le réseau, apparemment quelqu'un a codé un truc permettant de jouer à plusieurs : https://www.lexaloffle.com/bbs/?tid=30059
      D'autre part sur pico-8, il y a un mode "splore", qui permet depuis le logiciel d'explorer directement les jeux postés sur le site internet. Tic-80 a un mode "surf" qui est similaire.

    • [^] # Re: J'adore...

      Posté par (page perso) . Évalué à 6 (+4/-0).

      Pour l'anecdote, du temps de l'Amstrad 464 on copiait les jeux avec la chaîne hifi du salon.

      Et en y repensant, il existait aussi un scanner livré avec un logiciel pour pouvoir imprimer ses programmes et les relire ensuite (je ne l'avais pas, mais je me souviens d'avoir vu des pubs ou articles sur ce truc).

      • [^] # Re: J'adore...

        Posté par (page perso) . Évalué à 7 (+5/-0).

        Il y avait une radio libre qui diffusait des programmes sur la bande FM, très tard le soir. On enregistrait « le son » (une bouillie de scritch-scratch) sur une cassette pour charger le programme sur l'Amstrad (l'Atari, l'Apple II, le TI-99, l'Oric, le Spectrum, le C64, etc.).

        "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

        • [^] # Re: J'adore...

          Posté par . Évalué à 3 (+2/-0).

          sérieux ?

          • [^] # Re: J'adore...

            Posté par . Évalué à 4 (+2/-0).

            il existe des outils pour convertir des données de zx spectrum en fichier wav, pour pouvoir justement les envoyer dans une véritable machine. Les données sont encodées dans l'audio. Je pense que c'est le même principe que le bruit de friture des modems internet 56k.

            https://github.com/leiradel/tape2wav

            Tu peux voir le processus de chargement ici par exemple : https://www.youtube.com/watch?v=cFD2zfD6qa8 (sur mon zx spectrum je n'ai pas de lecteur de k7, juste un audio in, le principe est le même)

          • [^] # Re: J'adore...

            Posté par . Évalué à 4 (+3/-1).

            Sérieux ; bon, j'ai jamais rencontré quiconque pour qui ça ait marché même une fois (à cause des parasites/artefacts audio inévitables, surtout avec le matos de l'époque: début des 80s) mais ça a existé, oui, des radios FM diffusaient du code :)

            • [^] # Re: J'adore...

              Posté par (page perso) . Évalué à 5 (+2/-0).

              Je me souviens avoir enregistré un truc d'une de ces radios. Mais je ne sais plus si ça avait fonctionné.

              De mémoire, c'était une radio locale qui avait une émission à 22h et qui diffusait un programme par soir ou quelque chose du genre.

              • [^] # Re: J'adore...

                Posté par (page perso) . Évalué à 3 (+2/-0). Dernière modification le 22/09/19 à 22:35.

                J'avais entendu parler de ça dans l'émission CPU, il y avait par exemple la radio FMR qui diffusait des logiciels en FM.

                Un LUG en Lorraine : https://enunclic-cappel.fr

        • [^] # Re: J'adore...

          Posté par . Évalué à 5 (+3/-0).

          Un lointain ancêtre du WiFi

  • # Génial !

    Posté par (page perso) . Évalué à 3 (+1/-0).

    Je découvre le concept qui est tout simplement génial (bon un truc de vieux certes ;)
    Est-ce que quelqu'un sais s'il y a des tentatives de fabrication de console «réel» supportant ces jeux ?

    • [^] # Re: Génial !

      Posté par . Évalué à 5 (+3/-0).

      Un truc de vieux, pas tant que ça. Le retrocomputing touche particulièrement les quarantenaires/cinquantenaires, ceux qui ont vécu l'arrivée des premiers ordinateurs et qui veulent continuer à faire vivre ça. Mais en ce qui concerne le retrogaming, on trouve pas mal de jeunes qui s'y intéressent, de plus ça peut être une bonne introduction à la programmation.

      Alors, pour des consoles réelles, ça me semble compliqué parce que si les contraintes techniques permettent de réaliser sans doute facilement de telles consoles, la partie interprétation met en oeuvre des techniques qui me semblent un peu dépasser une console basique, quoique de décoder du png et interpréter du lua ça doit pouvoir se faire en "embeded".

      Il y a néanmoins des choses qui pourraient s'en rapprocher un peu, comme le pocketchip qui était une sorte de clone de raspberry pi associé à un écran et un clavier tout en un.

      Titre de l'image

      On peut également s'interfacer sur les GPIO du pocketchip (et sans doute du raspberry pi également) via pico-8

      On voit également tourner pico-8 sur la gameshell (le prix est assez élevé, de l'ordre d'une centaine d'euro, mais la console est très classe) : https://www.lexaloffle.com/bbs/?tid=31569

      Ça reste au dessus d'un système linux, avec un boot assez long.

      Le top comme j'ai dit dans la dépêche, c'est d'utiliser un raspberry pi avec la version baremetal de TIC-80, ça boote en 3 secondes, il n'y a pas d'OS en dessous, juste TIC-80, ça donne l'impression d'une vraie console.

      Enfin, si tu t'intéresses vraiment au hardware, il y a l'inverse, une console simple basée sur de l'AVR, avec un émulateur et des outils de dev pour aller avec (il faut coder en C) : http://belogic.com/uzebox

      Regarde ce jeu : https://www.youtube.com/watch?v=b-c_01itNYU

      • [^] # Re: Génial !

        Posté par . Évalué à 5 (+3/-0).

        Mais en ce qui concerne le retrogaming, on trouve pas mal de jeunes qui s'y intéressent, de plus ça peut être une bonne introduction à la programmation.

        Avec le succès de jeux comme Terraria, Undertale, Rimworld ou Stardew Valley bon nombre de jeunes trouvent que le pixel ce n'est pas sale.
        D'ailleurs PICO-8 est souvent utilisé dans des GameJam ou pour faire du prototypage et TIS-80 commence aussi à être bien utilisé sur itch.io. Ce genre d'environnement est plus simple à prendre en main que des moteurs purs comme Love2d donc ça attire les novices.

        Enfin, si tu t'intéresses vraiment au hardware, il y a l'inverse, une console simple basée sur de l'AVR, avec un émulateur et des outils de dev pour aller avec (il faut coder en C) : http://belogic.com/uzebox

        Pour les plus chevronnés et puristes du rétro, il y a aussi des cartes avec FPGA pour reproduire des consoles/bornes et PCs d'antan. Le projet MISTer à base de carte Terasic DE10-nano a apparemment acquis une certaine popularité dans la communauté Amiga/Atari.

        • [^] # Re: Génial !

          Posté par . Évalué à 3 (+1/-0). Dernière modification le 22/09/19 à 09:49.

          Avec le succès de jeux comme Terraria, Undertale, Rimworld ou Stardew Valley bon nombre de jeunes trouvent que le pixel ce n'est pas sale.

          Minecraft, aussi, avec ses textures en 16x16

          THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.

          • [^] # Re: Génial !

            Posté par . Évalué à 2 (+0/-0).

            J'y ai pensé mais avec des packs de textures et des mods d'effets d'ombres et de lumières on peut rapidement obtenir un rendu graphique moderne et jouer sans pour autant aimer le pixel art de la version vanilla.

            • [^] # Re: Génial !

              Posté par . Évalué à 3 (+1/-0).

              Certes, mais je réagissais au paramètre "succès" : Minecraft a connu le succès avec des textures pixellisées et un rendu brutal (la diffusion de la lumière sur les premières versions, tout un chapitre. C'était moche ET on pouvait planter un serveur en faisant clignoter des lampes dans une grotte).

              C'est ce succès qui a suscité le développement de packs de texture et de rendu plus lisses.

              THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.

              • [^] # Re: Génial !

                Posté par . Évalué à 2 (+0/-0). Dernière modification le 22/09/19 à 18:50.

                Minecraft a connu le succès avec des textures pixellisées et un rendu brutal (la diffusion de la lumière sur les premières versions, tout un chapitre.

                Je suis entièrement d'accord avec toi pour les générations de joueurs qui ont la majorité, mais pour les ados et préados qui vont s'initier à la programmation je reste dubitatif.
                J'ai aussi connu cette époque durant la béta mais ça fait déjà bon nombre d'années que ça a changé. Assez pour me laisser penser que les ados qui se mettent à créer leurs premiers jeux ont probablement découvert Minecraft dans sa version plus moderne.
                Après ne connaissant que la version Java originelle il est fort probable que la version mobile soit moins paramétrable que sur PC et que possiblement ce soit la version la plus utilisée par les jeunes.

                C'est d'ailleurs ce paramètre d'âge qui m'a fait ne pas évoquer des jeux de plus de six ans tels que Rogue Legacy, Sword and Sworcery, Thomas was Alone ou FTL, qui ne sont peut-être pas vraiment connus des ados actuels. J'aurais d'ailleurs sans doute dû citer Starbound à la place de Terraria.
                Aussi j'ai oublié les gros hits que sont Celeste et Shovel Knight ainsi que les jeux un peu moins populaires qui ont pas mal fait parler d'eux tels que Wargroove, Baba Is You, Minit, Downwell ou encore Into the Breach.

                Enfin bon. Peu importe qu'on y inclut Minecraft ou non, au final il y a déjà suffisamment de jeux 2D relativement récents en pixel-art brut (sans traitement moderne des lumières et des particules, contrairement à Dead Cells ou à Graveyard Keeper) qui font l'actualité des vidéastes et des journalistes, même à des endroits qui traitent essentiellement des sorties de gros jeux AAA (beaucoup d'indés sortent sur Switch désormais), pour que les jeunes qui s'intéressent à la création de jeu ne soient pas totalement dépaysés ou hermétiques à ce genre de graphismes minimalistes. :-)

  • # quadplay

    Posté par . Évalué à 3 (+2/-0).

    Il y a aussi la quadplay : https://github.com/morgan3d/quadplay qui est sous licence LGPL3.

    Pour jouer : https://morgan3d.github.io/quadplay/console/quadplay.html

    La documentation est par là (générée avec un autre projet du même auteur : Markdeep)

  • # Merci pour la découverte

    Posté par . Évalué à 1 (+1/-0).

    Merci pour la découverte, ça donne envie de s'y mettre, même si le développement de jeu prend tellement de temps.
    Savez-vous comment se passe l'installation de PICO-8 ?

    • [^] # Re: Merci pour la découverte

      Posté par . Évalué à 2 (+0/-0).

      Il y a juste un binaire à lancer.

      Tu peux aussi regarder du côté de tic80, c'est le même principe, l'IDE de développement est plus conviviale je trouve, mais la communauté est plus réduite. Le langage reste similaire, en lua (js est possible également)

  • # Retro CD 2D?

    Posté par (page perso) . Évalué à 2 (+0/-1). Dernière modification le 20/09/19 à 22:58.

    Ces consoles imaginaires sont marrantes, mais un peu trop limitée.

    Est-ce qu'il existe des projets similaires qui essayent d'imiter l'âge inexploité, entre l'engloutissement d'Atari et l'avènement des jeux 3D ? Mega CD, Amiga CD32, Neo Geo CD, CD-i, PC-FX …

    Incubez l'excellence sur https://linuxfr.org/board/

    • [^] # Re: Retro CD 2D?

      Posté par . Évalué à 3 (+1/-0).

      À cette époque, de mémoire, ça utilisait beaucoup les premières 3D précalculées, à mon avis ça rend la création de jeu pas forcément évident… Je doute que ça existe. Et puis qui dit CD dit gros volumes de données. Autant utiliser des outils plus conventionnels non ? https://godotengine.org/ me semble bien pour les jeux 3D (et pas que)…

    • [^] # Re: Retro CD 2D?

      Posté par . Évalué à 1 (+0/-0).

      Salut,

      Est-ce qu'il existe des projets similaires qui essayent d'imiter l'âge inexploité, entre l'engloutissement d'Atari et l'avènement des jeux 3D ?

      Quelque chose correspondrait là dedans, ou j'ai mal compris ta recherche ?

      • [^] # Re: Retro CD 2D?

        Posté par . Évalué à 3 (+1/-0).

        je pense qu'il ne souhaitait pas faire du retrogaming vis à vis de matériel existant, mais trouver un système de développement qui simulerait des machines des années 1990-2000. Mais j'ai l'impression que les types de jeu de cette époque étaient plus vastes : 2D avec des photos, bouts de films avec des acteurs, 3D précalculées (7the guest), 3D avec de gros pixels (ultima underworld), 3D qui donne l'impression que c'est de la 2D (Heart of Darkness) etc

        • [^] # Re: Retro CD 2D?

          Posté par (page perso) . Évalué à 2 (+0/-1).

          Développer pour du vrai matos d'époque est faisable, mais très laborieux: il faut presque toujours faire de l'assembleur, il y a peu de documentation, le debugging est souvent impossible, les contraintes de tiles/sprites/palettes sont un casse tête…

          Incubez l'excellence sur https://linuxfr.org/board/

  • # ArduBoy

    Posté par (page perso) . Évalué à 4 (+3/-0). Dernière modification le 22/09/19 à 10:25.

    Très cool ces consoles! Pour aller encore plus loin, je trouve qu'il est encore plus intéressant de développer pour une console qui existe physiquement comme par exemple ArduBoy. Je ne sais pas si dans ce cas on peut parler de «console imaginaire», car il y a une plate-forme matérielle qui a été développée en amont, mais également un émulateur qui existe.

    Dans le cas des consoles que tu as citées le résultat est semblable, car on a eu les machines virtuelles en premier, et ont suivi des consoles physiques embarquant des émulateurs. Mais au niveau ressources on est quand même pas dans la même catégorie (utiliser un Raspberry avec 1Go de RAM avec CPU quadcore à 1Ghz pour émuler une console 8bits, ou avoir une vraie console 8bits basée sur Arduino).

    Je n'ai jamais utilisé ArduBoy (ah si seulement les journées faisaient 36 heures!), alors je ne sais pas trop ce qui existe comme outil de développement. Dans le cas des consoles que tu as présentées, ces outils sont vraiment bien foutus!

    Un LUG en Lorraine : https://enunclic-cappel.fr

    • [^] # Re: ArduBoy

      Posté par . Évalué à 3 (+1/-0). Dernière modification le 22/09/19 à 22:06.

      Bien vu pour l'ArduBoy, j'avais évoqué UzeBox dans un commentaire plus haut, mais le kit de ce dernier n'est plus commandable en ce moment on dirait.

      J'ai été voir les outils pour ArduBoy, on dirait que c'est codé avec l'IDE de l'arduino, il y a également un émulateur (qui tourne avec Atom/Electron je crois), et il faut donc coder en C++.

      Dans le même style (et en couleur dans la nouvelle version), il y a le Gamebuino :
      https://gamebuino.com/fr avec pas mal de tuto et des émulateurs. On peut programmer en C++ ou python.

      Il doit exister d'autres projets du genre. Je n'en ai pas parlé dans l'article parce que je voulais surtout focaliser sur les machines qui se comportent un peu comme des ordinateurs indépendants (même si dans la liste des "fantasy consoles" il y en a beaucoup qui ne se comportent pas comme ça).

      Bref, il reste encore à imaginer une machine hardware qui pourrait avoir son IDE intégré, mais est-ce que le jeu en vaudrait la chandelle ?

  • # Format des cartouches PNG

    Posté par . Évalué à 4 (+3/-0).

    Par exemple, les « cartouches » de jeux sont au format PNG (oui oui, le format d’image), ce qui présente au centre la jaquette du jeu, et le code en lui‐même se trouve… dans la bordure grise qui entoure l’image, les diverses nuances de gris permettant d’encoder les données.

    En fait, les données de la cartouche ne se trouvent pas dans les nuances de gris de la bordure mais dans tous les pixels de l'image, dixit la description faite de ce format sur ce wiki : «chaque octet PICO-8 est stocké en tant que les 2 bits les moins significatifs de chacun des 4 canaux de couleur, dans l'ordre ARGB. Une image de 160 pixels de large et 205 pixels de haut donnant un stockage possible de 32800 octets. De ceux-ci, seuls les 32769 premiers sont utilisés.»

    • [^] # Re: Format des cartouches PNG

      Posté par . Évalué à 3 (+1/-0).

      bien vu ! Je crois que j'avais lu sur un site web que ce n'était que la bordure, mais du coup c'était imprécis (et faux donc). En fait c'est le même principe que celui utilisé en stéganographie comme le précise le wiki. Merci.

      Si un modérateur passe par là, il peut remplacer

      Par exemple, les « cartouches » de jeux sont au format PNG (oui oui, le format d’image), ce qui présente au centre la jaquette du jeu, et le code en lui‐même se trouve… dans la bordure grise qui entoure l’image, les diverses nuances de gris permettant d’encoder les données.
      

      par

      Par exemple, les « cartouches » de jeux sont au format PNG (oui oui, le format d’image), ce qui présente la jaquette du jeu, et le code en lui‐même se trouve… stocké dans les 2 bits les moins significatifs de chacun des 4 canaux de couleur, dans l'ordre ARGB. Une image de 160 pixels de large et 205 pixels de haut donnant un stockage possible de 32800 octets. De ceux-ci, seuls les 32769 premiers sont utilisés. En résumé les diverses nuances de couleurs permettent d’encoder les données selon un procédé que l'on retrouve en stéganographie.
      
    • [^] # Re: Format des cartouches PNG

      Posté par (page perso) . Évalué à 3 (+1/-1).

      C'est bizarre, pourquoi ne pas avoir utilisé le chunk iTxt de PNG pour ça???

      Incubez l'excellence sur https://linuxfr.org/board/

      • [^] # Re: Format des cartouches PNG

        Posté par . Évalué à 3 (+1/-0).

        aucune idée, peut-être que le développeur voulait un truc plus sexy ?

      • [^] # Re: Format des cartouches PNG

        Posté par . Évalué à 4 (+3/-0). Dernière modification le 23/09/19 à 01:32.

        Je vois ça comme cela : en cachant 1 octet de code par pixel de l'image de la «cartouche», on a une limite physique imposée à la partie «ROM» de la cartouche : 160×205=32800 pixels, pas un de plus, même si c'est moins qui sont utilisés en réalité (je me demande d'ailleurs si ce sont bien 32769 octets qui sont utilisés ; 32768(=32kio) seraient plus logique). En détournant un chunk iTXt (ou tEXt, zTXt), c'est comme si la ROM n'avait pas de capacité physique définie comme c'était le cas pour les vieilles cartouches.

        • [^] # Re: Format des cartouches PNG

          Posté par (page perso) . Évalué à 1 (+0/-1). Dernière modification le 27/09/19 à 21:07.

          D'un autre côté il faut quand même vérifier, à un moment donné, que la contrainte arbitraire 160×205px est respectée  ; si on met une PNG de la taille qu'on veut on a une cartouche avec la capacité qu'on veut.
          Après j'imagine qu'il y a sûrement une bonne raison (au moins à la base) pour avoir opté pour cette technique (genre ne faire qu'une seule vérification et pas deux).

          • [^] # Re: Format des cartouches PNG

            Posté par . Évalué à 2 (+0/-0).

            Oui il y a bien une limite pour la mémoire disponible, de plus les cartouches PNG sont générées par le programme lui même.

      • [^] # Re: Format des cartouches PNG

        Posté par (page perso) . Évalué à 5 (+3/-0).

        C'est bizarre, pourquoi ne pas avoir utilisé le chunk iTxt de PNG pour ça???

        Cela signifierait que le format de stockage serait PNG, ici PNG est en quelque sorte le compresseur et le véritable format est le tableau RGB du PNG, mais ça pourrait être le tableau RGB du TGA ou du BMP.

        Ce serait comme demander pourquoi ne pas avoir utilisé une métadonnée quelconque du format gzip pour stocker les données au lieu de compresser un tar.

        ce commentaire est sous licence cc by 4 et précédentes

Envoyer un commentaire

Suivre le flux des commentaires

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