je ne comprend pas , y'a toujours un decalage de 1 ou +sieurs octets vers la droite, meme si xb et xo sont nuls....
voila mon code :
short x=0,y=10; short xo=(short)(x/8),xb=x%8; unsigned char sprite2[8]={0b11111111,0b10001000,0b01110111,0b01110111,0b10001000,0b11111111,0b00000000,0b00000000}; x=0; void * offset = LCD_MEM+y*30+xo; clrscr(); if(xo%2!=0) { xo--; xb+=8; *(unsigned long*)offset=((unsigned long)(sprite2[x++])>>xb);offset+=30; *(unsigned long*)offset=((unsigned long)(sprite2[x++])>>xb);offset+=30; *(unsigned long*)offset=((unsigned long)(sprite2[x++])>>xb);offset+=30; *(unsigned long*)offset=((unsigned long)(sprite2[x++])>>xb);offset+=30; *(unsigned long*)offset=((unsigned long)(sprite2[x++])>>xb);offset+=30; *(unsigned long*)offset=((unsigned long)(sprite2[x++])>>xb);offset+=30; *(unsigned long*)offset=((unsigned long)(sprite2[x++])>>xb);offset+=30; *(unsigned long*)offset=((unsigned long)(sprite2[x++])>>xb); } else { *(unsigned short*)offset=((unsigned short)(sprite2[x++])>>xb);offset+=30; *(unsigned short*)offset=((unsigned short)(sprite2[x++])>>xb);offset+=30; *(unsigned short*)offset=((unsigned short)(sprite2[x++])>>xb);offset+=30; *(unsigned short*)offset=((unsigned short)(sprite2[x++])>>xb);offset+=30; *(unsigned short*)offset=((unsigned short)(sprite2[x++])>>xb);offset+=30; *(unsigned short*)offset=((unsigned short)(sprite2[x++])>>xb);offset+=30; *(unsigned short*)offset=((unsigned short)(sprite2[x++])>>xb);offset+=30; *(unsigned short*)offset=((unsigned short)(sprite2[x++])>>xb); } ngetchx();
ensuite , j'ai une deuxieme question, comment est ce que l'on peut faire du 3 niveau de gris?
et d'ailleurs, comment est ce que ca marche le 2 niveau de gris ?