bylos Le 30/01/2003 à 21:51 Juste pour tester une idée que j'ai lue dans un des derniers topics,
je voulais essayer d'utiliser un écran virtuel plus grand que 3840 pour clipper les sprites
et essayer en meme temps le scrolling, mais quand j'ajoute 1 à l'adresse de mon buffer
ça me décale de 8 pixels au lieu d'un...Je comprends pourkoi(un octet code pour 8 pixels) mais j'arrive pas à décaler d'un seul...
void *v_screen = NULL;
void _main(void)
{
v_screen = malloc(4352);
memset(v_screen,0,4352);
PortSet(v_screen,255,135);
static unsigned short sprt[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
Sprite16(0,0,16,sprt,v_screen,SPRT_XOR);
memcpy(LCD_MEM, v_screen+0x01, 3840); // ça décale de 8 bits ???
ngetchx();
free(v_screen);
}
Et oui, pour décaler d'un pixel, il faut utiliser les fonctions << et >>.
Mais c'est plus compliqué que ça...
Si tu fais seulement des décalages, tu auras des trous blancs :
Imagine la suite de deux octets : 00000001 10000000, si tu les décales vers la gauche tous les deux, tu obtiendras : 00000010 00000000 alors que tu aurais voulu 00000011 00000000. Il faut donc penser à récupérer le bit de poids fort de l'octet suivant (quand scrolle vers la gauche).
Mais oublie tout ça car tu n'en as pas besoin si tu utilises des sprites : la fonction de sprite fait toute seule le bon décalage.
Il faut juste que tu affiches ton sprite dans ton écran virtuel plus large et que tu ne recopies à l'écran réel que la partie "visible" de ton écran virtuel plus large.
Sauf que les fonctions de sprites sont faites pour un écran 240×128 (avec éventuellement les 80 pixels en bas et les 28 pixels à droite non affichés).
Oui, mais il suffit de modifier les fonctions d'extgraph pour que ça fonctionne.
Et la fonction sera même plus rapide ! (au lieu de multiplier par 30, on multiplie par 32 pour une fonction 8x8, donc un seul décalage suffit pour calculer l'offset. Enfin, ça reste vraiment très négligeable...)
Attention, tu devras adapter les fonctions de scrolling de ExtGraph si tu utilises un écran virtuel plus grand que 240×128, et je t'avertis tout de suite: c'est de l'assembleur.
Non, parce que les fonctions de ExtGraph, comme celles des autres librairies graphiques pour TI-89/92+/V200 d'ailleurs, sont codées exclusivement pour un buffer 240×128.
PpHd Le 11/02/2003 à 16:24 Utilises AMS. C'est clippe et tu peux redefinir la taille du buffer.
<Cette blague vous a ete genereusement offerte par PpHd>
Kevin Kofler Le 14/02/2003 à 13:34Edité par Kevin Kofler le 14/02/2003 à 13:35 Détaille, parce que je ne comprends pas ta solution, et donc je doûte que Bylos et alndbx comprennent. Et surtout j'ai l'impression que ta solution n'en soit pas une, mais sans les détails, je ne peux pas le dire.
Et d'ailleurs, si vous êtes patients, vous n'avez qu'à attendre la prochaine version de ExtGraph, qui intègrera des routines clippées.
PpHd Le 14/02/2003 à 17:24 Je croyais qu'elle n'offrait que le support asm ?
Vu qu'il utilises les fonctions les fonctions de scroll, je pense qu'il devrait scroller normalement (sans clipping) puis qu'il applique son clipping sur le buffer qui sert de scroll avant d'afficher.
C'est ce dont on parle dès le début, et ça présuppose des routines de scrolling adaptées au nouvel écran virtuel. Celle de ExtGraph ne marchent qu'en 240×128.
Heurf, désolé, je ne savait pas, je pensais que c'était comme la plupart des ecrans virtuel pour le scroll ...
Vous voulez que ça se finisse comme GTC (repoussé en permanence)?
jackiechan Le 17/02/2003 à 12:58Edité par jackiechan le 17/02/2003 à 13:02 Une date de sortie, personnellement, je ne sais pas du tout.
Il nous reste encore pas mal de fonctions à écrire (surtout qu'il faut après réécrire toutes les fonctions n&b pour les nvg).
En blanc et noir, OR == transparence.
Mias pour une lib graphique, le noir et blanc, ne doit pas être une priorité, et donc, bien entendu, dans mon propos, je parlais en niveaux de gris ...