{{tag> graphisme semi-graphique minitel teletext petscii atascii gameboy em}}
====== Infra-graphique ======
Random Walk dans les images semi-graphiques avec comme point de départ : définitions minimales, 1-bit, 2-bits, game boy, game boy camera, imprimante thermique, graphisme ASCII / teletext / minitel
Sur 4 jours, ça donne :
vendredi après midi : dessin de tuiles animées minimales avec libresprite, maps avec Tiled, intégration dans gbstudio \\
samedi : recherches minitel, dessin de la table de caractères avec libresprite, utilisation dans Tiled \\
dimanche : préparation des spritesheets PETSCII, ATASCII, etc. / install. de image2mode7 \\
lundi : réalisation d'images videotext, dithering 8 couleurs, etc. \\
Ci-dessous, diverses notes, résultats, commandes utiles
==== Aide-mémoire ====
**Minitel** : 25 lignes x 40 "caractères" de 8 px de large sur 10 px de haut, soit 320 x 250 pixels, 8 couleurs ou 8 niveaux de gris \\
**Game Boy** : 20 x 18 "tuiles" de 8x8 px, soit 160 x 144, 4 couleurs (2 bits), backgrounds 4 couleur, sprites 3 couleurs (+transparence) \\
**Game Boy Color** : 160 x 144, système de tuiles également, «32,768 colors, up to 56 simultaneously» ( https://en.wikipedia.org/wiki/Game_Boy_Color ) \\
**Teletext** : 25 lignes x 40 caractères, 8 couleurs chaque caractère graphique est découpé en 6 blocs (2 colonnes, 3 lignes) appelés //sixels//, il me semble que chaque bloc d'un sixel fait la même hauteur, contrairement au minitel ( https://en.wikipedia.org/wiki/Sixel ), cela donne une définition de 75 x 80 blocs
{{:recherche:residence_infra:calfaxcolours.png?direct|}}
{{:recherche:residence_infra:calfaxgraphics.png?direct|}}
===== Minitel =====
«Le Minitel (pour « Médium interactif par numérisation d'information téléphonique ») est un type de terminal informatique destiné à la connexion au service français de Vidéotex baptisé Télétel, commercialement exploité en France entre 1980 et 2012» (wp)
«L'écran du Minitel est une matrice texte d'une taille de 25 lignes par 40 colonnes en mode Vidéotex (8 nuances de gris) et se base sur un système de codage qui lui est propre. Un jeu de caractères graphiques, chacun constitué de 6 gros pixels, lui permet d'afficher des images en mode « mosaïque », un peu à la manière de l'art ASCII.» (wp)
Avec le minitel 2 (à partir de 1989) : «Il permet aussi un affichage graphique plus évolué en permettant de redéfinir les caractères (DRCS, Dynamical Redefinable Character Set — en français, JCRD, Jeu de Caractères Dynamique Redéfinissable). Cette fonction est peu utilisée car elle est lente et que le parc de Minitel 2 n'a jamais été assez étendu.» (wp)
source : wp : https://fr.wikipedia.org/wiki/Minitel
{{:recherche:residence_infra:caractere_minitel.png?direct&600|}}
* L'annuaire : http://3611.re/
* Autres services : https://3615co.de/
* http://www.3614hacker.fr/
* https://minitel.retrocampus.com/
* MiEdit, editeur videotex dans le navigateur : https://minitel.cquest.org/
* logiciels videotex :
* https://github.com/cquest/cristel
* https://github.com/cquest/dragster
* scanex est un composeur videotex / dragster (soft pour créer des serveurs minitel sur mac) contient un éditeur videotex
* https://www.minipavi.fr/
* https://cq94.medium.com/get-your-minitels-back-the-computel-videotex-bbs-is-back-1d8c42f1ea17
**Ressources** \\
! intéressant : https://forum.museeminitel.fr/t/le-retour-des-arts-en-mode-texte-mistigris-blippypixel-et-telepaint/695 \\
https://github.com/Zigazou
**JET7, Justine, Sophie Marin**
* http://www.le-tigre.net/IMG/pdf/TM_12284_FttTzg.pdf
* https://www.t-o-m-b-o-l-o.eu/flux/jet7-et-le-minitel/
* https://text-mode.tumblr.com/post/28414255130/justine-de-sade-minitel-adaptation-made-by-jet7
* (Les archives de Jet7 ont été entièrement récupérées)
police minitel : https://www.dafont.com/minitel.font
**Hardware**
* minitel 5 reverse enginnering : https://github.com/clxjaguar/minitel5
* http://hxc2001.free.fr/minitel/index.html + https://github.com/jfdelnero/minitel
Je redessine les caractères du Minitel (8x10 pixels) avec libresprite pour les utiliser avec Tiled :
{{:recherche:residence_infra:videotext_graphique.png?direct|}} {{:recherche:residence_infra:videotext_tout.png?direct|}}
===== Antiope =====
1979, CCETT’s Antiope
« Antiope est l'acronyme d'Acquisition numérique et télévisualisation d'images organisées en pages d'écriture. Système français de télétexte et Vidéotex utilisé en télédiffusion dans les années 1980. Ce système de transmission de données numériques exploite les lignes invisibles du signal de télévision retransmis en analogique. Il a principalement été associé au standard Sécam. » (wp)
https://web.archive.org/web/20080202150711/http://www.france2.fr/teletexte/historique/7370325-fr.php
[{{:recherche:residence_infra:antiope.png?direct&800|Source photo : [[https://16couleurs.wordpress.com/2020/12/07/le-graphisme-pour-teletexte/|https://16couleurs.wordpress.com/]]}}]
===== Ceefax / Teletext =====
{{:recherche:residence_infra:ceefax_1.jpg?direct&400|}} {{:recherche:residence_infra:ceefax_2.jpg?direct&400|}}
* 1974, BBC’s Ceefax : https://en.wikipedia.org/wiki/Ceefax
* https://teletext.mb21.co.uk/
* Un service qui fonctionne (en Suisse) : https://www.teletext.ch/RTSUn/326
* 2 Editeurs teletext en ligne:
* https://edit.tf
* https://zxnet.co.uk/teletext/editor/
* Voir ci-dessous pour un logiciel en ligne de commande pour convertir (image2mode7)
* Conversion d'images en ligne (sortie couleur) : **http://www.teletexttheworld.com/#** (pour accéder à toutes les fonctions, choisir la version EN) <- j'aime beaucoup celui-ci
* Conversion d'images en ligne (sortie 1-bits) : https://imagetoteletext.tech-and-software.ltd.uk/
* video to teletext : https://8bitkick.github.io/teletext-express/
* DOOM en teletext : https://github.com/lukneu/doom-teletext
* Formats de fichier du teletext
* EP1 : https://teletext.wiki.zxnet.co.uk/wiki/EP1_format
* TTI : https://teletext.wiki.zxnet.co.uk/wiki/MRG_TTI_format
==== edit.tf ====
éditeur télétexte en ligne, les écrans sont encodés dans l'URL
* https://edit.tf
* https://github.com/rawles/edit.tf
* https://edit.tf/doc/handy-howto.pdf
{{:recherche:residence_infra:screenshot_edit.tf.png?direct|}}
URL pour accéder à cette image : [[https://edit.tf/#0:J_zp44dOHTh0kW_HUCBASRazqBAgQIECAnoUPDqBAgQIECAmdQIECBAgQEvh0six8saNCgQMECBAgQICaRB7OoECBAgQICZ1AgQIECBAW9HSSjWkPIeD46WwcECBAgJ-Ph1AgQIECBAgJnUCBAgQIEBI6W0dGKFGr7IECBEhQIEBNEzQdDqBAgQIECAmdQIECBAgJMDx0svfoVqBIgQZMCBggQICfo6gQIECBAgQICZ1AgQHiSFKdJlv3zggQIECA-9f_9jwngTas51AgQIECBAgJr0eM8jQokZJevOlkKBAgQIODdxiXoUBNRizrzi9enRo0ZEuTX9EKBAgQIEBJSu3nUCBAgLIUSBAgQE9hzQgIqECBAgSMC6BAgQIECBAgQIECAlr_nTxw6cOnDpz6gQICaFAgQIECBAgJ-OjBAgQIECBAgQICSFfv_nTxw6cOnP_1ggQIECBAgQICOAnz-Hi3w6c2IECBAgJIkXv2dQIEBPR_Oe26BAgQIECBAgIqSf88SToUCBAgRIECAjgJazqAswQE_384jQIECBAgQIECBSuJo-Xgl8_nkqVQgQIEBPUdLav5L-hPkVR04gQICypakJ7PnQmiRnkCBAgQIECBAgQINR0si_kiZw6cIp0CBAgQIECBATRIyZH50YIECBAgQIEBbATxHUBbX_IkzxwiwSIEBbAgQEcB1AgJ_z3fmjRoUCBAS0dvh0mdPltX8iSJnjhLhwYIC6MmRRnSaon_PPCXTg04cPjw-dJ-P50iWPEnqBAgQIEX859YIECAiiznSZ08SQ69_84jQ8DpP_____5b-T0HUCBAgJIlf86c__ehP8RJnTxLQt_nPB0n-OoECBAgQFv5JigQIECBAgQIFZ1ATRKzqAmdQEsR0mwwfj386cOnDpw6XLEmCBAgQIECBAgQIESvehQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECA|lien edit.tf]]
**Comment utiliser edit.tf ?**
==== Utiliser teletexttheworld ====
Basculer en version EN, la version DE bugue, uploader l'image -> crop -> réglages brightness et saturation -> download
===== World System Teletext =====
«World System Teletext (WST) is the name of a standard for encoding and displaying teletext information, which is used as the standard for teletext throughout Europe today.»
https://en.wikipedia.org/wiki/World_System_Teletext
===== Systèmes semigraphiques =====
«Text-based semigraphics, pseudographics, or character graphics is a primitive method used in early text mode video hardware to emulate raster graphics without having to implement the logic for such a display mode.» (cf. https://en.wikipedia.org/wiki/Semigraphics )
Playscii Editeur : http://vectorpoem.com/playscii/ (multiple character sets)
{{:recherche:residence_infra:map_infra.png?direct|}}
==== PETSCII ====
Utilisé dans les ordi. Commodore depuis le PET de 1977 jusqu'au Commodore 128 (l'Amiga utilise un autre système)
* caractères de 8x8
* https://en.wikipedia.org/wiki/PETSCII
* Editeur en ligne : https://tic80.com/play?cart=732
* Editeur en ligne : http://petscii.krissz.hu/
* An overview of PETSCII editors : http://www.kameli.net/marq/?p=4365
* Un éditeur en Processing :http://www.kameli.net/marq/?page_id=2717
Jeu de tuile utilisable avec Tiled : \\
{{:recherche:residence_infra:character_set_petscii_sheet.png?direct|}}
==== ZX80, ZX81 ====
* https://en.wikipedia.org/wiki/ZX81_character_set
Jeux de tuile utilisable avec Tiled :
{{:recherche:residence_infra:character_set_zx80_x2.png?direct|}} {{:recherche:residence_infra:character_set_zx80.png?direct|}}
==== ATASCII ====
* https://en.wikipedia.org/wiki/Atari_ST_character_set
Jeux de tuiles utilisables avec Tiled : \\
{{:recherche:residence_infra:character_set_atascii.png?direct|}} {{:recherche:residence_infra:character_set_atascii_x2.png?direct|}}
==== MZ-700 ====
Jeu de caractères de l'ordinateur Sharp MZ-700 (Japon)
Jeu de tuiles utilisables avec Tiled : \\
{{:recherche:residence_infra:character_set_mz-700.png?direct|}}
===== image2mode7 =====
Programme pour transformer des images en graphisme teletext (mode7 sur ordinateur BBC), un .exe existe pour Windows, sur Linux on peut le compiler avec gcc (voir ci-dessous) :
«The MODE 7 display consists of 25 lines of 40 characters»
**Utilisation** \\
«//Sorry, the documentation isn't great. If you use the -h flag it lists all the options. By default it will spit out a .bin file which can be *LOADed at 7C00 in MODE 7 on a Beeb to view. To make this a tiny bit easier the -inf flag will spit out a .inf file that can be used with bbcim.exe or the other SSD file conversion tools to make a Beeb disk image ready for an emulator or transfer to device using MMC etc.
Other preview options include -url which will print out a http://edit.tf URL - just paste this directly into your browser of choice to view in the awesome edit.tf online Teletext editor//.»
Donc \\
''image2mode7 -i photo.jpg -url''\\
Copier l'url dans un navigateur pour l'afficher dans edit.tf, puis "export teletext" pour du .PNG\\
L'image PNG fait 480 x 500 (bizaremment étirée verticalement)\\
On peut aussi exporter pour l'éditeur teletext de zxnet et la récupérer de là, non étirée en 768x576 (avec un cadre noir autour...)
==== Compilation et installation (Debian 12) ====
Editer le fichier image2mode7.cpp et changer les lignes suivantes et enregistrer le fichier
#include "targetver.h"
#include "tchar.h" to read
// #include "targetver.h"
// #include "tchar.h"
sudo apt-get update
sudo apt-get install cimg-dev
sudo apt-get install git
sudo apt-get install build-essential
git pull https://github.com/kieranhj/image2mode7
cd image2mode7
gcc -c cencode.c
gcc -c cdecode.c
gcc -c image2mode7.cpp
gcc -Dcimg_use_jpeg -Dcimg_use_png -o image2mode7 image2mode7.o cencode.o cdecode.o -lpng -ljpeg -lm -lX11 -lpthread -lstdc++
**doc** ( ''image2mode7 -h'' )
image2mode7: MODE 7 image convertor.
Usage : image2mode7 [options] (Nov 10 2024, 15:21:32)
-i 0 Input filename
-o 0 Output filename
-sat 64 Saturation threshold (below this colour is considered grey)
-val 64 Value threshold (below this colour is considered black)
-black 64 Black threshold (grey below this considered pure black - above is colour brightness ramp)
-white 128 White threshold (grey above this considered pure white - below is colour brightness ramp)
-quant false Quantise the input image to 3-bit MODE 7 palette using HSV params above
-nohold false Disallow Hold Graphics control code
-nofill false Disallow New Background control code
-sep false *EXPERIMENTAL* Enable Separated Graphics control code
-fore 128 Contribution factor of foreground vs background colour for separated graphics
-noscale false Don't scale the image image to MODE 7 resolution
-test false Save test images (quantised / scaled) before Teletext conversion
-inf false Save inf file for output file
-v false Verbose output
-url false Spit out URL for edit.tf
-lookup false *EXPERIMENTAL* Use lookup table for colour error (default is geometric distance)
-slow false Calculate full line error for every possible graphics character (64x slower)
-dither 0 Enable ordered dithering (2=2x2 3=3x3 4=4x4 5=2x3 matrix)
-load false Load MODE 7 bin file not the image!
-decode 0 Decode edit.tf URL not the image!
**Liens**
* https://stardot.org.uk/forums/viewtopic.php?p=150874#p150874
* https://github.com/kieranhj/image2mode7
==== Une tripotée d'images teletext ====
Réalisées à partir d'images de films recadrées :
{{:recherche:residence_infra:teletext_01.png?direct&200|}} {{:recherche:residence_infra:teletext_02.png?direct&200|}} {{:recherche:residence_infra:teletext_03.png?direct&200|}} {{:recherche:residence_infra:teletext_04.png?direct&200|}}
{{:recherche:residence_infra:teletext_05.png?direct&200|}} {{:recherche:residence_infra:teletext_06.png?direct&200|}} {{:recherche:residence_infra:teletext_07.png?direct&200|}} {{:recherche:residence_infra:teletext_08.png?direct&200|}}
{{:recherche:residence_infra:teletext_09.png?direct&200|}} {{:recherche:residence_infra:teletext_10.png?direct&200|}} {{:recherche:residence_infra:teletext_11.png?direct&200|}} {{:recherche:residence_infra:teletext_12.png?direct&200|}} {{:recherche:residence_infra:teletext_13.png?direct&200|}} {{:recherche:residence_infra:teletext_14.png?direct&200|}} {{:recherche:residence_infra:teletext_15.png?direct&200|}} {{:recherche:residence_infra:teletext_16.png?direct&200|}}
{{:recherche:residence_infra:teletext_17.png?direct&200|}} {{:recherche:residence_infra:teletext_18.png?direct&200|}} {{:recherche:residence_infra:teletext_19.png?direct&200|}} {{:recherche:residence_infra:teletext_20.png?direct&200|}}
{{:recherche:residence_infra:teletext_21.png?direct&200|}} {{:recherche:residence_infra:teletext_22.png?direct&200|}} {{:recherche:residence_infra:teletext_23.png?direct&200|}} {{:recherche:residence_infra:teletext_24.png?direct&200|}}
{{:recherche:residence_infra:teletext_25.png?direct&200|}} {{:recherche:residence_infra:teletext_26.png?direct&200|}} {{:recherche:residence_infra:teletext_27.png?direct&200|}} {{:recherche:residence_infra:teletext_28.png?direct&200|}}
{{:recherche:residence_infra:teletext_29.png?direct&200|}} {{:recherche:residence_infra:teletext_30.png?direct&200|}} {{:recherche:residence_infra:teletext_31.png?direct&200|}} {{:recherche:residence_infra:teletext_32.png?direct&200|}}
{{:recherche:residence_infra:teletext_33.png?direct&200|}} {{:recherche:residence_infra:teletext_34.png?direct&200|}} {{:recherche:residence_infra:teletext_35.png?direct&200|}} {{:recherche:residence_infra:teletext_36.png?direct&200|}}
{{:recherche:residence_infra:teletext_37.png?direct&200|}} {{:recherche:residence_infra:teletext_38.png?direct&200|}} {{:recherche:residence_infra:teletext_39.png?direct&200|}} {{:recherche:residence_infra:teletext_40.png?direct&200|}}
{{:recherche:residence_infra:teletext_41.png?direct&200|}} {{:recherche:residence_infra:teletext_42.png?direct&200|}} {{:recherche:residence_infra:teletext_43.png?direct&200|}} {{:recherche:residence_infra:teletext_44.png?direct&200|}}
{{:recherche:residence_infra:teletext_45.png?direct&200|}} {{:recherche:residence_infra:teletext_46.png?direct&200|}} {{:recherche:residence_infra:teletext_47.png?direct&200|}} {{:recherche:residence_infra:teletext_48.png?direct&200|}}
===== Détection de scènes =====
détection de scène et extraction d'une image par scène avec ffmpeg : \\
''ffmpeg -i suspiria.mkv -filter_complex "select='gt(scene,0.3)'" -vsync vfr suspiria_%06d.png''\\
Le paramètre associé à gt(scene, ...) change le seuil de détection
Pour commencer à un instant précis de la vidéo on peut utiliser -ss \\
''ffmpeg -i ghostworld.avi -ss 00:40:00 -filter_complex "select='gt(scene,0.3)'" -vsync vfr ghost-world_%06d.png''
en python, il existe pySceneDetect
* https://www.scenedetect.com/
* https://github.com/Breakthrough/PySceneDetect
===== Game Boy =====
**découpage d'une sprite sheet avec imagemagick** \\
''convert petscii.png -crop 34x16-3-3@ +repage +adjoin petscii-%04d.png''
**assemblage d'une spritesheet avec imagemagick (avec des images se suivant en colonnes)** \\
''montage -mode concatenate -background transparent -tile 34x -geometry 8x8 petscii-*.png petscii_sheet.png''
faire des gif à partir d'émulateur gb ?
formats sonores de gbstudio ?
===== Labyrinthes génératifs =====
* liste d'articles par algo https://stackoverflow.com/a/23681987
* lib. python qui a l'air très complète : https://github.com/john-science/mazelib
* https://www.mazegenerator.net/
* https://en.wikipedia.org/wiki/Maze_generation_algorithm
* https://aryanab.medium.com/maze-generation-recursive-backtracking-5981bc5cc766
* https://healeycodes.com/generating-mazes
* https://github.com/hleonps/maze-generator (processing)
* https://graui.de/labyrinth.htm (processing JS)
===== Divers =====
quantization d'images en ligne : https://rilden.github.io/tiledpalettequant/ \\
appli de quantification qui a l'air très chouette : https://sdf.org/~lynx/projects/imagequantizer/
**Convertir en palette 8 couleurs fixe avec imagemagick**
convert xc:red xc:lime xc:blue xc:cyan xc:magenta xc:yellow xc:white xc:black -append palette.png
convert image.png -remap palette.png image_convertie.png
**(avec dithering)** \\
''convert image.png +dither -remap palette.png image_convertie_dither.png''
**(variante avec gamma)** \\
''convert i4.png -gamma 0.6 -ordered-dither o8x8 -remap palette.png png8:image_convertie_dither8x8gamma.png''
Résultat (extrait) :
{{:recherche:residence_infra:image_convertie_dither8x8gamma_extrait.png?direct|}}
**tous les modes de dithering ordonnés:** \\
''convert -list threshold''
Threshold Maps for Ordered Dither Operations
Path: /etc/ImageMagick-6/thresholds.xml
Map Alias Description
----------------------------------------------------
threshold 1x1 Threshold 1x1 (non-dither)
checks 2x1 Checkerboard 2x1 (dither)
o2x2 2x2 Ordered 2x2 (dispersed)
o3x3 3x3 Ordered 3x3 (dispersed)
o4x4 4x4 Ordered 4x4 (dispersed)
o8x8 8x8 Ordered 8x8 (dispersed)
h4x4a 4x1 Halftone 4x4 (angled)
h6x6a 6x1 Halftone 6x6 (angled)
h8x8a 8x1 Halftone 8x8 (angled)
h4x4o Halftone 4x4 (orthogonal)
h6x6o Halftone 6x6 (orthogonal)
h8x8o Halftone 8x8 (orthogonal)
h16x16o Halftone 16x16 (orthogonal)
c5x5b c5x5 Circles 5x5 (black)
c5x5w Circles 5x5 (white)
c6x6b c6x6 Circles 6x6 (black)
c6x6w Circles 6x6 (white)
c7x7b c7x7 Circles 7x7 (black)
c7x7w Circles 7x7 (white)
==== Sixel(s) ====
**libsixel** : https://saitoha.github.io/libsixel/ \\
**éditeur de sixel en ligne** : https://mokona.puupuu.org/daba/semi/semi_graph.html
===== Hors sujet plotters =====
* https://github.com/fogleman/ln
* https://github.com/abey79/vpype
Merci Laurent
===== Hors sujet =====
* https://fr.fakenamegenerator.com/