1

(je pars du principe qu'on est en affichage par défaut, cad 4 bits de profondeur)
Les sprites proposent deux modes d'affichage : Litéral (c'est à dire un beau tableau de pixels) ou Normal (combinaison de mode compact et de litéral), on le définit dans le bit n°7 de SPRCTL1

Le mode compact se base sur la répététion de pixels à l'horizontal. Si vous avez une ligne horizontale de 5 pixels, en litéral, vous allez utiliser 5x4bits = 20 bits alors qu'en compact, ça sera 4 bits de longueur et 4bits de couleur, 8bits.

Donc, prenons un sprite "simple" (un smiley en 7x7 pixels) :
0011100
0122210
1222221
1212121
1222221
0122210
0011100
(et la palette est simple : 0 pour le gris, 1 pour le noir et 2 pour le jaune mais on restera sur du 4 bits de couleurs)

En mode litéral, on aura ceci :
5,0x00,0x11,0x10,0x03,
5,0x01,0x22,0x21,0x03,
5,0x12,0x22,0x22,0x13,
5,0x12,0x12,0x12,0x13,
5,0x12,0x22,0x22,0x13,
5,0x01,0x22,0x21,0x03,
5,0x00,0x11,0x10,0x03,
0
à chaque ligne, on commence par l'offset de la ligne suivante (soit le nombre de paire de pixels + 1) suivi des paires de pixel et on termine par un 0 pour dire qu'il n'y a plus d'autres lignes. L'inconvénient, c'est qu'il faut des paires de pixel, donc comme notre sprite fait 7 pixels de large, j'ai du compléter avec la couleur n°3 qu'on supposera être la couleur de fond.

En mode normal on aura ça :
5,0x08,0x08,0x42,0x00,
6,0x88,0x08,0x8A,0x22,0x00,
5,0x80,0x90,0xA0,0x20,
6,0xB0,0x90,0x90,0x90,0x80,
5,0x80,0x90,0xA0,0x20,
6,0x88,0x08,0x8A,0x22,0x00,
5,0x08,0x08,0x42,0x00,
0
Le principe est le même, chaque ligne commence par l'offset de la suivante suivi des données "codées". Le format est disponible dans la doc fr/en
ligne1, on a mode compact+répété 1 fois+couleur 0+mode compact+répété 2 fois+couleur 1
ligne2, on a mode litéral+répété 1 fois+couleur 0+couleur 1+mode compact+répété 2 fois+couleur 2+mode litéral+répété 1 fois+couleur 1+couleur 0
ligne3, on a mode litéral+répété 0 fois+couleur 1+mode compact+répété 4 fois+couleur 2+mode litéral+répété 0 fois+couleur 1
ligne4, on a mode litéral+répété 6 fois+couleur 1+couleur 2+couleur 1+couleur 2+couleur 1+couleur 2+couleur 1
ligne5, on a mode litéral+répété 0 fois+couleur 1+mode compact+répété 4 fois+couleur 2+mode litéral+répété 0 fois+couleur 1
ligne6, on a mode litéral+répété 1 fois+couleur 0+couleur 1+mode compact+répété 2 fois+couleur 2+mode litéral+répété 1 fois+couleur 1+couleur 0
ligne7, on a mode compact+répété 1 fois+couleur 0+mode compact+répété 2 fois+couleur 1
(et on complète avec des bits à 0)
ligne 1
MRRR RCCC CMRR RRCC CCMR RRRC CCC* ****
0000 1000 0000 1000 0100 0010 0000 0000
hex0 hex8 hex0 hex8 hex4 hex2 hex0 hex0
ligne 2
MRRR RCCC CCCC CMRR RRCC CCMR RRRC CCCC CCC*
1000 1000 0000 1000 1000 1010 0010 0010 0000
hex8 hex8 hex0 hex8 hex8 hexA hex2 hex2 hex0
ligne 3
MRRR RCCC CMRR RRCC CCMR RRRC CCC* ****
1000 0000 1001 0000 1010 0000 0010 0000
hex8 hex0 hex9 hex0 hexA hex0 hex2 hex0
ligne 4
MRRR RCCC CCCC CCCC CCCC CCCC CCCC CCCC C*** ****
1011 0000 1001 0000 1001 0000 1001 0000 1000 0000
hexB hex0 hex9 hex0 hex9 hex0 hex9 hex0 hex8 hex0
ligne 5
MRRR RCCC CMRR RRCC CCMR RRRC CCC* ****
1000 0000 1001 0000 1010 0000 0010 0000
hex8 hex0 hex9 hex0 hexA hex0 hex2 hex0
ligne 6
MRRR RCCC CCCC CMRR RRCC CCMR RRRC CCCC CCC*
1000 1000 0000 1000 1000 1010 0010 0010 0000
hex8 hex8 hex0 hex8 hex8 hexA hex2 hex2 hex0
ligne 7
MRRR RCCC CMRR RRCC CCMR RRRC CCC* ****
0000 1000 0000 1000 0100 0010 0000 0000
hex0 hex8 hex0 hex8 hex4 hex2 hex0 hex0

M pour Mode (un bit)
R pour répétition (4 bits)
C pour couleur (4 bits)
* pour les bits de complétion

Pour votre code, dans le cas du mode normal, SPRCTL1 vaudra 0x10 (mode normal+redimensionnement de type ajout+rechargement Hsize&Vsize+rechargement palette+utiliser ce sprite+dessin vers le bas+dessin vers la droite) et en mode litéral il vaudra 0x90 (mode litéral+redimensionnement de type ajout+rechargement Hsize&Vsize+rechargement palette+utiliser ce sprite+dessin vers le bas+dessin vers la droite)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

2

Excellente explication ! embarrassed
Merci ! wink
avatar
Matmook -- http://www.barreteau.org
Twitter : @matmookJagware

3

De rien, j'en ai fait un topic parce que j'ai galéré à faire trente six mille tests pour voir comment combiner les infos (en fait c'est surtout où caser les * qui m'a posé le plus de soucis).
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

4

Rien à voir mais je tenais à dire que j'adore les fenêtres des news de ton site et principalement les boutons on off et backlight smile
Ça c'est du détail ultime wink
Mon site sur la LYNX :ZoneLynx

5

Le bouton pause fonctionne aussi normalement
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

6

Par contre sur une vrai Lynx si tu fais dans l'ordre "on" - "backlight" - "off" et "on" à nouveau, à ce moment précis l'écran doit être allumé tongue
Mon site sur la LYNX :ZoneLynx

7

Ho, sérieux ? Quand on est en backlight ON rallume l'écran ?

(si tu confirmes je modifie)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

8

Je voulais dire que sur tes fenêtre si tu fais un backlight off puis un off et enfin un on il faut à nouveau appuyer sur backlight pour que l'écran s'allume. Sur une Lynx hors tension le on rallume toujours l'écran même si le backlight était sur off quand tu as éteint la console.

(Tu m'as mis le doute avec ta question du coup j'ai testé et non ça marche pas wink )
Mon site sur la LYNX :ZoneLynx

9

Vu que mon principal (unique ?) visiteur me le demande, j'ai modifié ça pour que ça soit plus réaliste grin
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

10

(et oui, j'avoue, j'ai moi aussi sorti la lynx pour vérifier le comportement)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

11

vince (./10) :
(et oui, j'avoue, j'ai moi aussi sorti la lynx pour vérifier le comportement)


grin

(Par contre y a plus rien qui marche sur les consoles de ton site. Impossible de rallumer l'écran après un off ou un backlight)
Mon site sur la LYNX :ZoneLynx

12

chez moi ça marche pourtant neutral


edit : corrigé, syntaxe qui plaisait pas à FF
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca