Vous n'êtes pas identifié.
tu vois kil ya une sacrée ambiguité la dedans alors je demande a Whyp de nous eclaircir un peu !
KTR: l'asm me sert a optimiser le code, tant que ça marche pas je n'optimise pas, tes pas daccord ?
Hors ligne
Bon mon gars je te fais ça et je te la met sur le forum d'ici ce soir, tinquiete
Hors ligne
Voila chose promie, chose due, mais pas testée, je te laisse les deboguer :
//Met un pixel noir sur les 3 pages void setpixblackDB(short x,short y,short page){short i; //page de 3072bytes short pg = 0x1A20+(page*0x80); //on definit l'addresse video for(i=0;i<0x80;i+=0x40){asm{ //pixel sur les 3 pages mov ax,pg add ax,i mov es,ax mov bx,x ; X représente l’abscisse mov si,y ; Y l’ordonnée shl si,4 mov cl,bl shr bl,3 and cl,7 add si,bx db 0x0F,0x14,0x0C7 ; set1 bh,cl or es:[si],bh ; On place bh en mémoire vidéo en prenant soin de ne pas effacé }}}; //met un pixel gris que sur la prems page void setpixgrayDB(short x,short y,short page){ short pg = 0x1A20+(page*0x40); //on definit l'addresse video asm{ //pixel sur la 1ere page mov ax,pg mov es,ax mov bx,x ; X représente l’abscisse mov si,y ; Y l’ordonnée shl si,4 mov cl,bl shr bl,3 and cl,7 add si,bx db 0x0F,0x14,0x0C7 ; set1 bh,cl or es:[si],bh ; On place bh en mémoire vidéo en prenant soin de ne pas effacé }}}; //Routines diverses void setgraymode(){ asm out 0x02,0xDB }; void setnormalmode(){ asm out 0x02,0xC3 };
La prems ecrit 1 bit au même endroit sur les 3 pages
la seconde ecrit ce bit que sur la premizere
Note que sur a prems, tu peut ne mettre que la prems et la derniere page
Voila, esaye, comprends et ça ira !!
(je me suis servit du tuto de whyp, il falleit juste mieux lire)
Hors ligne
cool !
Hors ligne
Zavé chronométré ?
En fait c le plus simple des modes gris, lisez attentivement le tuto de whyp !!
Hors ligne
je commence a croire ke jai vraiment la poisse avec ce niveau de gris moi!
jai essayé les premieres versions du gris sur Casio avec le mode CB, jai fait un simple petit^programme ke voici et rien , la caltos plante apres ke jai appuyé sur une touche, trouvez lerreur :
void clear(void) //Efface l'ecran { int i; for (i=0;i<=3072;i+=2) { _SI=i; _AX=0; asm mov es:[si],ax; } } void setgray(void) //Mise en marche du mode niveau de gris { outportb(0x02,0xCB); } void delgray(void) //quitte le mode niveau de gris { outportb(0x02,0xE3); } void gray_pixel(char X,int Y) //niveau de gris: pixel clair { asm { xor cl,cl mov ch,X mov bx,Y shr cx,3 //divise X par 8 reste dans cl shr cl,5 //met le reste de la division au bon format mov dl,ch //dl = quotient xor dh,dh //dx = dl shl dx,1 //| add dl,ch //| multiplie dx par 192 shl dx,6 //| mov si,dx add si,bx //si=dx+bx (colonne/16*192 + ligne) xor bl,bl db 0x0F,0x14,0x0C3 //set1 bl,cl (specifique au nec v20/30) or es:[si],bl //met le pixel } } void dark_pixel(char X,int Y) //niveau de gris: pixel foncé { asm { xor cl,cl mov ch,X mov bx,Y shr cx,3 //divise X par 8 reste dans cl shr cl,5 //met le reste de la division au bon format mov dl,ch //dl = quotient xor dh,dh //dx = dl shl dx,1 //| add dl,ch //| multiplie dx par 192 shl dx,6 //| mov si,dx add si,bx //si=dx+bx (colonne/16*192 + ligne) xor bl,bl db 0x0F,0x14,0x0C3 //set1 bl,cl (specifique au nec v20/30) or es:[si],bl //met le premier pixel add si,128 or es:[si],bl //met le second } } void white_pixel(char X,int Y) //niveau de gris: pixel blanc { asm { xor cl,cl mov ch,X mov bx,Y shr cx,3 //divise X par 8 reste dans cl shr cl,5 //met le reste de la division au bon format mov dl,ch //dl = quotient xor dh,dh //dx = dl shl dx,1 //| add dl,ch //| multiplie dx par 192 shl dx,6 //| mov si,dx add si,bx //si=dx+bx (colonne/16*192 + ligne) mov bx,0xFF db 0x0F,0x12,0x0C3 //clr1 bl,cl (specifique au nec v20/30) and es:[si],bl add si,128 and es:[si],bl //met le second } } void main(void) { int key; int x,y; clrscr(); cout << "Salut ca va !!" << endl; while (key !=28) key=getch(); key=0; setgray(); clear(); for (x=1;x<128;x++) for(y=1;y<20;y++) gray_pixel(x,y); while (key !=28) key=getch(); key=0; for (x=1;x<128;x++) for(y=44;y<64;y++) dark_pixel(x,y); while (key !=28) key=getch(); key=0; clear(); delgray(); }
c'est censé tracé deux barres horizontales, l'une en Gris clair, lautre en Foncé, mais ça plante apres le premier getch(), lecran se remplis de gribouillis !
Hors ligne
un effort les gars !
J'ai vraiment du mal avec ce truc (c bizarre), ya des jours ou je suis pas tres en forme, surtout apres une semaine d'exams !
Hors ligne
c bon je me suis debrouillé tout seul, en fait c la fonction de Whyp, clear() ki était buggé, fait ke jen ai fait une autre:
void clear(void) //Efface l'ecran { int i; for (i=0;i<3072;i++) { asm mov ax,0x1A20; asm mov es,ax; asm mov ax,0; asm mov si,i; asm mov es:[si],ax; } }
Thanx anyway !
Hors ligne
J'y suis, tavais oublié de metrte es avec l'adresse video !!
#include <stdio.h> void clear(void) //Efface l'ecran {int i;for (i=0;i<=3072;i+=2){ _SI=i; _AX=0; asm mov es:[si],ax; }} void setgray(void)//Mise en marche du mode niveau de gris { asm mov al,0xCB;asm out 0x02,al; } void delgray(void)//quitte le mode niveau de gris { asm mov al,0xE3;asm out 0x02,al; } void gray_pixel(char X,int Y)//niveau de gris: pixel clair { asm { xor cl,cl mov ch,X mov bx,Y shr cx,3 shr cl,5 mov dl,ch xor dh,dh shl dx,1 add dl,ch//| multiplie dx par 192 shl dx,6//| mov si,dx add si,bx//si=dx+bx (colonne/16*192 + ligne) xor bl,bl db 0x0F,0x14,0x0C3//set1 bl,cl (specifique au nec v20/30) or es:[si],bl } } void dark_pixel(char X,int Y)//niveau de gris: pixel fonce { asm { xor cl,cl mov ch,X mov bx,Y shr cx,3 shr cl,5 mov dl,ch xor dh,dh shl dx,1 add dl,ch shl dx,6 mov si,dx add si,bx xor bl,bl db 0x0F,0x14,0x0C3 or es:[si],bl add si,128 or es:[si],bl }} void white_pixel(char X,int Y)//niveau de gris: pixel blanc {asm { xor cl,cl mov ch,X mov bx,Y shr cx,3 shr cl,5 mov dl,ch xor dh,dh shl dx,1 add dl,ch shl dx,6 mov si,dx add si,bx mov bx,0xFF db 0x0F,0x12,0x0C3 and es:[si],bl add si,128 and es:[si],bl }} void main(void) {int key;int x,y;clrscr(); asm mov ax,0x1A20 //Et oui, il faut que es soit initialisÇ !! asm mov es,ax; //Sinon áa ecrit a es=0 soit les vecteurs d'int !! gotoxy(1,1); printf("Pressez une touche !"); while (key==0) key=getch();key=0; setgray();clear(); for (x=0;x<128;x++) for(y=0;y<20;y++) gray_pixel(x,y); for (x=0;x<128;x++) for(y=44;y<64;y++) dark_pixel(x,y); while (key==0) key=getch();key=0; clear();delgray(); gotoxy(1,1); printf("Pressez une touche !"); while (key==0) key=getch();key=0; }
Hors ligne
Bon c bien beau tout ca mais c kd ki en a un ki sort !!! Ca pourrais m'etre utile...... Please!
Hors ligne
ne desespere pas, le mien est a 75% pret fonctionnel avec son viewer,
en fait jai totalement changé de methode de chargement, puiske l'imag nest pas enregistree ds une matrice et compilée comme telle, dans ce cas le programme gonflerai et vous depasserez rapidement les 64Ko, dautant plus ke les images en nuances de gris pésent tres lourds 3072 Octets.
maintenant jai crée un nouveau format Image nommé: par ex Image.CSI (Casio Simple Image) ce format supporte les deeux types dimages: monochrome (noir et blanc) et Nuances de Gris (3 couleurs), il est parfaitement adapté a la mémoire video de la Casio.
En résumé, vous pourrez envoyer ttes les photos ke vous voulez ds les lecteurs, voici les tailles de chake type d'image:
- Gris: 3076 Octets
- Mono: 1028 Octets
on pourra donc les charger tt simplement grace a une ouverture des fichiers en binaire, lexemple du viewer est clair...
maintenant jajoute kelkes petites bidule ki permettent de convertir ttes les images en 256 Couleurs ( ttes les couleurs) et ki permettent de controler la kalité de la conversion de la photos en 3 couleurs.
that's it, la jai un exam Mercredi, par consequent le travail est un peu retardé.
@++
Hors ligne
yep ca a l'air d'etre pas mal du tout ca !
Hors ligne
Ok fais ce ke tu peut et si tu peu publie une version beta pour kon puisse tester...Bon courage..
Hors ligne
ça a l'air super.
Eske il y aura une possibilité de redimensionement comme le désirait Bébert?
Quoi que le mieux soit encore de redimensioner l'image direct avec l'éditeur d'image désiré...
Hors ligne
pas pour le moment, faut ke jy reflechisse, mais rien ninterdira a kiconke de creer son propre viewer (.exe) sur calculette ki se chargera de gerer laffichage de l'image, tant que le format CSI (header + config du data) est connu!
@++
Hors ligne
moi je suis pas contre ton nouveau format, mais ya un truc, c que supern@ a aussi crée un nouveau format, le csp, qui fais la meme choe, faudrais vous mettre d'accord, parce que 2 standard.. vaudrai mieux evité.
@+
Hors ligne
Ouais ! Tu m'as pa di 6 t'allai sortir une beta Yass???
Hors ligne
À Whyp:
jai jamais eu connaissance du fait ke Superna avait entrepris de créer un nouveau format d'images pour Casio, en tt cas c sur ke faire deux fois la meme chose c pas amusant, donc ce ke je propose a Superna c ke je termine le mien en integrant ses idées étant donné le fait k'il est occupé dans son projet de Communication entre calculettes, pis jespere kil maidera a sortir un bon produit!
À KTr:
la pour le moment le prog est en Stand Bye vu les exams et les projets d'info ke je dois rendre pour bientot, donc je pourrai faire un effort avec toi mais pas avant Jeudi Prochain et encore !
@+++
Hors ligne
Ok d'ici la j'espere ke j'aurai débugger mon tetrix3 !!! Je ve mettre des décors sur les cotés ca sera zoli !! Mais y me faut ton prog !
Hors ligne
j'attends donc une réponse de Superna !
j'ai pas l'impression kil est souvent la ces derniers temps ... :?
Hors ligne
faut etre compréhesnif ! tout le monde ou presque a des exams bientot, donc c normal que le forum soit de plus en plus désrté ! moi d'ailleurs je pense ne venir qu' 1 jour sur 2 et encore...
Hors ligne
Yep je suis la mais en coup de vent, yep, j'ai deja créé le csp quincontient l'image au format de l'ecrtan et j'ai dont prevu de faire ce format pour le n&b et gris, mais, mon proj est en cours, mail moi yass, je te repondrais, j'ai aps le temsp, @+
Hors ligne