|
LUCE est un acronyme pour L'Unité de Calcul et Effets |
Cette unité va nous permettre d'effectuer les effets suivants |
- Recopie de zone mémoire selon les modes suivants :
- Zone linéaire à zone linéaire,
- Zone linéaire à zone rectangulaire,
- Zone rectangulaire à zone linéaire.
- Les opérations possibles sont :
- Recopie de zone,
- ET entre la zone source et la zone de destination,
- OU entre la zone source et la zone de destination,
- XOR entre la zone source et la zone de destination,
- NOT entre la zone source et la zone de destination,
- Remplissage de la zone de destination avec une couleur,
- Remplissage de la zone de source avec une couleur,
- ....
|
LES PRINCIPALES DIFFICULTEES |
|
Le principal problème provient des effets de bords induits par l'ULA. |
Si nous voulons dessiner par exemple un carré de 100 pixels de côté, nous nous heurtons au
problème de l'attribut.
|
EXEMPLE :
L'écran en haute résolution se divise en 40 blocs de 6 pixels par ligne.
Nous voulons remplir une zone carrée de 100 pixels de côté. Il faut donc :
- Ecrire l'octet d'attribut qui coloriera 6 pixels,
- Ecrire (100 modulo 6) - 1 octets de couleur,
- Puis 1 octet pour le reste de 100 divisé par 6 c'est à dire 4 pixels,
- Et enfin 1 octet d'attribut pour éviter que la zone qui suit le carré prenne sa couleur
si cela n'est pas désiré.
|
|
Est-ce necessaire ? Comment accomplir l'affichage d'un sprite ? |
Caractéristique d'un sprite
- Taille : 16 pixels de largeur sur 16 pixels de hauteur,
- 4 couleurs dont une transparente,
- Précision : pixel près,
- Affichage indépendant du fond : pas de conflit de couleur.
|
Caractéristiques techniques |
|
Les sprites sont définis dans une matrice de 16 colonnes sur 16 lignes.
Chaque élément de cette matrice est défini par deux bits.
Ainsi pour chaque ligne constituant ce sprite, nous aurons :
AABBCCDDEEFFGGHH | où AA, BB .. HH représentent l'index dans la palette de couleur associée au sprite. |
Bits | Signification |
00 | Transparence |
01 | Ink 1 |
10 | Ink 2 |
11 | Ink 3 |
|
Ce qui nous donne 4 couleurs pour le sprite.
Le codage un peu particulier du sprite provient du fait de la sérialisation des codes couleurs dans
l'ULA.
Nous allons utiliser une des particularités de l'attribut dans un écran haute résolution de
l'oric ATMOS.
En effet lorsqu'on défini un attribut, le bit n°5 de celui-ci n'a aucune signification.
Ce qui veut dire que nous allons l'utiliser pour définir une palette de couleur pour les sprites.
BITS | SIGNIFICATION |
7 | Non significatif |
6 | =1 Attribut, = 0 Pixel écran |
5 | =1 Palette Sprite, =0 Palette écran |
4 - 3 | =00 INK 1 |
| =01 INK 2 |
| =10 INK 3 |
| =11 RIEN |
2 - 0 | couleur RGB, 1 bit par composante |
AVANTAGE :
- Il n'y a pas de conflit de proximité pour les couleurs lorsque le sprite est affiché,
INCONVENIENTS :
- Nombre de couleurs limité,
- Les sprites à la même position verticale ont la même palette de couleur dans le cas
où on ne veut pas de conflit de couleur.
Certes, nous sommes limités à quatre couleurs mais cela dans une zone d'affichage bien précise.
C'est à dire que pour une autre zone, les couleurs vont être différentes.
MAIS
Les couleurs ne sont pas remises à leur état initial à chaque changement de ligne.
Ce qui induit que nous définissons un endroit "non stratégique" pour que les changements de
couleurs n'influent pas sur le reste de l'écran.
|