J'ai fait quelques tests avec OR, enfaite je trouve ça plutot simple (du moins le concept, mais après pour mettre en pratique
) :
OR
---------
1 1 -> 1 Le bit résultant est égal
1 0 -> 1 à 1 quand au moins un
0 1 -> 1 des deux bits est égal à 1
0 0 -> 0
Enfaite, si on définit la première colonne comme l'image à afficher et la seconde par le 'fond', on ce rend compte que le résultat est bien celui voulut :
-Si les deux bits valent 1, le résultat vaut 1;
-Si le bit de l'image vaut 1 mais que celui du 'fond' vaut 0, le résultat est 1;
-Si le bit de l'image vaut 0 mais que celui du 'fond' vaut 1, le résultat est 1;
-Si les deux bits valent 0, le résultat est 0.
Ce qui donne bien l'impression de transparence (en principe).
Voilà un code que j'ai fait pour tester tout ça :
.nolist
#include "ion.inc"
.list
#ifdef TI83P
.org ProgStart-2
.db $bb,$6d
#else
.org ProgStart
#endif
ret
jr nc,Start
.db "Test - Deeph",0
Start:
bcall(_ClrScrnFull)
bcall(_grbufclr)
bcall(_homeUp)
ld a,%1100 ;ce qui vaut 12 en décimal (la première colone)
or %1010 ;ce qui vaut 10 en décimal (la seconde colone)
ld h,0
ld l,a
bcall(_disphl)
bcall(_getKey)
ret
.end
END
Le résultat est 14, soit en binaire :
14/2 → 2*7 +
0
7/2 → 2*3 +
1
3/2 → 2*1 +
1
2/2 → 1*1 +
1
Ce qui donne à l'envers 1110, qui est bien le résultat (la dernière colone du tableau)
.