30

IroS : non. Il faut faire 3 Calque[cptr].planX= malloc(LCD_SIZE);
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

31

voilà ma structure:
// Calques
typedef struct 
	{ 
		char nom[16]; 
		short actif; 
		int plan;
		void *V_SCR; 
	} CALQUE;


elle contient le nom du calque, un pointeur vers l'écran virtuel associé, un int plan qui indique la "couleur" du calque, et un short disant si le calque est visible ou non

32

Thibaut> c peut-être une regrettable méprise, si ça se trouve calque.plan est juste un flag, et les données sont stockées dans un tableau classique... si c ça il ne faut rien changer smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

33

IroS : haaaaaa d'accord !! ben tout est bon alors top

Pollux : erf trop fort grin
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

34

pour créer un nouveau calque je fais
	Calque = (CALQUE *)realloc(Calque, (++NB_CAL) * sizeof(CALQUE));
	Calque[NB_CAL-1].V_SCR = malloc(LCD_SIZE);

mon écran virtuel fait donc bien LCD_SIZE soit 2 ou 3ko selon la calc et pas 30ko

35

j'avais pas vu le post de IroS smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

36

donc pour afficher en NDG à partir de ce que Thibaut à mis en #13 je fais comment?
avec GetPlane(DARK_PLANE) et GetPlane(LIGHT_PLANE)?

37

IroS #33 : oui oui j'avais compris wink

Bon en fait il y a quand même un pb. Tu n'as pas besoin de troisième calque (BLACK), LIGHT et DARK suffisent !
En effet, un pixel foncé superposé à un pixel clair donne un pixel noir, donc pour afficher un pixel noir on affiche un pixel dans les deux plans.
C'est ça le format "standard" smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

38

donc en mettant
      if (Calque[cptr].plan == 2)
      	{
      		SetPlane(LIGHT_PLANE);
      		while (compteur_long--) *dst++ |= *src++;
      		SetPlane(DARK_PLANE);
      		while (compteur_long--) *dst++ |= *src++;
      	}
      if (Calque[cptr].plan == 1)
      	{
      		SetPlane(DARK_PLANE);
      		while (compteur_long--) *dst++ |= *src++;
      	}
      if (Calque[cptr].plan == 0)
      	{
      		SetPlane(LIGHT_PLANE);
      		while (compteur_long--) *dst++ |= *src++;
      	}


ca devrait marcher non?

39

Presque. Oublie le troisième plan ! c'est un gaspillage de mémoire.
Il y a une erreur dans le bloc if (Calque[cptr].plan == 2) mais on s'en fout puisque tu vas jarter les troisièmes plans smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

40

exactsick. mettre
      		while (compteur_long--)
      			{
      				SetPlane(LIGHT_PLANE);
      				*dst++ |= *src++;
      				SetPlane(DARK_PLANE);
      				*dst |= *src;
      			}


donnera de meilleurs résultats je pense!

41

Encore moins gringrin

Mais pourquoi tu t'obstines ?????? tu perds de la mémoire pour RIEN avec 3 plans !
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

42

pourquoi 3 plans?
je dessine sur mon écran virtuel seulement en noir & blanc et lorsque j'affiche tous mes calques c'est le .plan qui détermine le NDG donc s'il vaut 2 je doit bien afficher mon écran virtuel sur le LIGHT_PLAN et le DARK_PLAN

43

Ok je viens de comprendre exactement le fonctionnement de ton prog.

Bon, la solution est :
  short cptr;
  
  for (cptr= 0; cptr<NB_CAL; cptr++)
    if (Calque[cptr].actif)
    {
      short compteur_long= LCD_SIZE/4;
      long *src= (long *)Calque[cptr].V_SCR,
           *dst= GetPlane(LIGHT_PLANE);
      
      switch (Calque[cptr].plan)
      {
        case 2 : while (compteur_long--) *dst++ |= *src++;
                 src-= LCD_SIZE/4;
                 compteur_long= LCD_SIZE/4;
        case 1 : dst= GetPlane(DARK_PLANE);
      }
      while (compteur_long--) *dst++ |= *src++;
    }
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

44

pourquoi tu déclares compteur_long en short ?

45

LCD_SIZE égale 3840.
Donc compteur_long égale 960.
Donc sa valeur ne tient pas sur un char.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

46

ah oui, merde.
J'étais complètement ailleurs, je ne pensais pas du tout à ça...

47

ca marchait pas pour case 2 donc j'ai un peu modifié
        case 2 : while (compteur_long--) *dst++ |= *src++;
                 compteur_long= LCD_SIZE/4;
                 src= (long *)Calque[cptr].V_SCR;
                 dst= GetPlane(DARK_PLANE);


maintenant y a plus de problèmes!
merci vous êtes top

48

Quoi ????????
Ha non ! rééssaie avec mon code, ça doit marcher. Tu avais dû essayer avant que je l'édite à 19h11.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

49

Non, il me semble qu'il a raison, tu as oublié de rediriger dest vers le dark_plane, dans le cas où la couleur est noire (plane=2).

50

je n'avais pas vu la modif. ca marche aussi!
zêtes vraiment des génie où koi?

51

jackiechan91 : Mais non ! y'a pas de break entre les deux cases ! J'en étais sûr que certains tomberaient dans le piège smile

A force de foutre break systématiquement on oublie les optimisations possibles sans roll
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

52

Ah merde, excuse moi.
Tu as raison, je n'ai pas fait gaffe qu'il n'y avait pas de break.

53

Heu, je me souviens pas avoir vu qu'on ne pouvait pas mettre de "break;" après un "case" dans mon livre de C ..

Ca change quoi de pas en mettre thibaut ? ou plutôt ça change quoi d'en mettre un (un break) ?
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

54

pfiou c'est quoi ton livre eek ??

Sans break tous les case suivant sont exécutés. Tu aurais pu le deviner d'après le code que j'ai donné à IroS, il est très clair wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

55

> Heu, je me souviens pas avoir vu qu'on ne pouvait pas mettre de "break;" après un "case" dans mon livre de C ..

c pas qu' "on ne peut pas", c'est qu' "on peut ne pas" smile


> Ca change quoi de pas en mettre thibaut ? ou plutôt ça change quoi d'en mettre un (un break) ?

Si tu mets un break le programme saute à l'accolade suivante, sinon il continue au case suivant (ce qui peut être une sympathique source de bugs si on pas l'habitude grin)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

56

Pollux, ou l'art d'arriver après la guerre triso
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

57

bah une minute de diff sur une heure ça fait moins de 2% de différence gol

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

58

Pollux >> oui, je me suis mal exprimé, merci smile

Sinon si je me souviens bien, j'ai lu sur le livre :

"La syntaxe a utiliser avec switch() est :

switch(var)
{
case num:
...
break;

...
}"

enfin un truc du genre, je suis passé un peu vite sur ça, peut-être que c t indiqué ensuite, mais je ne crois pas wink
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

59

Si, il me semble que sur ton livre c'était précisé, Pim89.
Mais j'avoue que moi aussi, je n'y avais pas trop prêté attention.

60

ok smile j'irais revoir ça smile
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^