Comment réaliser dans un programme en C, une sauvegarde de l'écran entier de la TI89, en vue d'un réaffichage ultétieur de cette sauvegarde. Quelles sont les fonctions que je doit utiliser, si il en existe des toutes faites ?
Tu peux utiliser LCD_save, LCD_restore
Avec un LCD_BUFFER en argument.

Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?
Jyaif Le 13/12/2005 à 22:47 Perso j'utilise memcpy; ça fait toujours 2 fonctions en moins à retenir.
J'y arrive pas : je dois taper quoi exactement svp ? LCD_save(LCD_BUFFER); ça fait une erreur.
Ouais c'est sur la pile que ca se passe.

Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?
La mémoire accessible au travers de HeapAlloc, etc...

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
("heap" = tas en anglais...)
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Le LCD_save tu n'as qu'à le faire avant le GrayOn et le restore après le GrayOff.
Mais si c'est pour scroller tu peux faire avec les fonctions de scroll graph.h.
Sinon tu peux te le faire avec memcpy/memmove.

Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?
Jyaif Le 18/01/2006 à 10:11 Au fait, j'ai une fois lu que 2 memcpy étaient plus rapide qu'un memmove. C'est vrai?
oui, mais le mieux étant quand même de reprogrammer un memmove() qui gérerait uniquement le cas où toutes les adresses sont paires ^^ (si c'est bien fait ça va à peu près aussi vite qu'un seul memcpy())
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Non, mais dans graph.h, c'est quoi les fonctions de scroll ?
Moi je pensais faire un BitmapGet, puis un BitmapPut à des coordonnées différentes de celles de BitmapGet. On calcule la partie qui manque et on l'affiche. Et ça fait une sorte de scroll non ? A moins que ça soit pas assez rapide.
L'idée des memmove est meilleure.

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
Oulala, là je suis encore plus pommé. Donc sasume, tu me dis qu'il faut utiliser les memmove.
Je lis "Copies a block of len bytes from src to dest, with possibility of overlaping of source and destination block. " C'est un peu du chinois ça pour moi. Mais d'après ce que j'ai compris, ça copie une série de bits (il y en a en tout len) de src dans dest. Ok, mais comment "capter" les bits affichés par l'écran ?
Prenons un exemple concret. J'ai mon écran qui affiche des pixels, assimilables à des bits. Si je veux tous les décaler de deux bits vers la droite, il faut d'abord stoker ces bits quelque part. Avec quelles fonction ?
Ensuite, il faut les traiter : avec quelle fonction.
Puis il faut les afficher : avec quelle fonction ?
Jyaif Le 19/01/2006 à 16:03 Il ne faut pas parler en "bits", il faut parler en "octets".
Avec memmove, tu ne peux pas décaller de 1 bit, tu peux juste décaller de 1 octet (ou 2, ou 3, ou x...)
exemple:
memmove(LCD_MEM,LCD_MEM+1,LCD_SIZE-1); //j'ai peut etre inversé les 2 premiers arguments...