Vous n'êtes pas identifié.
Ok chef !!!
je vais l'inclure à mon tuto
Hors ligne
Ouais c la fête, Ouais c la fête, Ouais c la fête, Ouais c la fête.... Sinon g essayer ton prog bon c moins bien ke celui de BitWhise ms c déja po mal..
A améliorer (Arréter le pix/pix par ex. !!)
Hors ligne
moins bien? ca tient pas la comparaison oui
Tu veux dire quoi par "arreter le pix/pix"??
Hors ligne
A tout ceux qui font des routines, mettez des #ifdef et #ifndef de maniere a faire :
si on met #define fonctionX ca la compile, sinon, rien !!
surtout pour les gros regrouppement de fonctions genre casio2.h !!!!
Hors ligne
pour répondre à Julien:
bah oui le pixel par pixel y'a rien de plus lent!
ou au pire prends les fonctions n&b C3 les plus optimisées, ça fera déjà ça de gagné!
va zieuter le post "tuto sur la prog" de casioworld pour choper ces routines! et ce ke voulait dire 2072, c'est de ne pas appeller la fonX pixel (ou ja sais po comment tu l'appelles) dans ta fonX line! mais de l'écrire en inline! ça ira plus vite!
et si ça te dérange po 2072, c'est possible ke je mette ta routine pr effacer l'écran dans bomberman?
Hors ligne
Mais non vas-y !
Hors ligne
ok merci!
et sinon une kestion, ce ne serait pas plutot mov es:[di],ax dans la première routine?
Hors ligne
pour répondre à Julien:
bah oui le pixel par pixel y'a rien de plus lent!
ou au pire prends les fonctions n&b C3 les plus optimisées, ça fera déjà ça de gagné!
va zieuter le post "tuto sur la prog" de casioworld pour choper ces routines! et ce ke voulait dire 2072, c'est de ne pas appeller la fonX pixel (ou ja sais po comment tu l'appelles) dans ta fonX line! mais de l'écrire en inline! ça ira plus vite!
Oui, j'avais compris, ce que je comprenais pas, c'est comment le faire...
Allez KTr et Casiomax, une ptite routine pour afficher une ligne droite allant de n'importe quel point a n'importe quel point de l'écran en une seule fois svp
a mon avis c'est un peu chaud non?
Hors ligne
pour répondre à Julien:
bah oui le pixel par pixel y'a rien de plus lent!
ou au pire prends les fonctions n&b C3 les plus optimisées, ça fera déjà ça de gagné!
va zieuter le post "tuto sur la prog" de casioworld pour choper ces routines! et ce ke voulait dire 2072, c'est de ne pas appeller la fonX pixel (ou ja sais po comment tu l'appelles) dans ta fonX line! mais de l'écrire en inline! ça ira plus vite!Oui, j'avais compris, ce que je comprenais pas, c'est comment le faire...
Allez KTr et Casiomax, une ptite routine pour afficher une ligne droite allant de n'importe quel point a n'importe quel point de l'écran en une seule fois svp![]()
a mon avis c'est un peu chaud non?
dsl, ms Casiomax et KTr n' ont po tout programmé !!
c po eux qui ont fait toutes les routines, meme asm !!!
Justement, pour ceux qui veulent apprendre l' asm genre MOI , c un bon défi, non ???
Ceci a pars, je capte po ce que du desire !
Hors ligne
en effet g pas tout fait!
et moi aussi je veux bien essayer de faire un algo de ce tuype! je ne m'y suis jamais essayé!
Hors ligne
en effet g pas tout fait!
et moi aussi je veux bien essayer de faire un algo de ce tuype! je ne m'y suis jamais essayé!
Hors ligne
je sais bien que c'est pas eux qui ont tout fait, mais c'ets eux qui me disent de pas faire du pix par pix: alors excusez moi mais afficher une ligne sans définir l'un apres l'autre chaque pixel de l'écran qui doit etre affiché, c'est a dire en faisant apparaitre tous ces pixels simultanément sans les précalculer, ben si vous y arrivez moi je dis RESPECT!
Hors ligne
ok merci!
et sinon une kestion, ce ne serait pas plutot mov es:[di],ax dans la première routine?
Ooooh non sûrement pas, c'est 8 bits que je veux écrire pas 16, al est un registre de 8 bits qui est en fait les 8 lower bits de ax (qui fait 16 bits et qui est donc divisé en ah et al).
Hors ligne
haaaa!
je vais pouvoir optimiser mes routines en utilisant ah et al dans ce cas!
car g mis des unsigned char pour gagner un peu de place à la place des int...
mais après avoir traduit mes routines, ben "invalid combination of opcode and operands..." normal vu ke j'utilisais _AX....
cool ça maintenant je le sais!
Hors ligne
hihi meme moi je savais ca :twisted:
Hors ligne
bravo!
figure toi ke moi à mes débuts en prog je ne savais même pas ce k'était un registre!
Hors ligne
Ben au début moi non plus, mais ca s'apprend tout ca
Hors ligne
haaaa!
je vais pouvoir optimiser mes routines en utilisant ah et al dans ce cas!
car g mis des unsigned char pour gagner un peu de place à la place des int...
mais après avoir traduit mes routines, ben "invalid combination of opcode and operands..." normal vu ke j'utilisais _AX....
cool ça maintenant je le sais!
Atend tu veus dire que tu ignorais l' existance de AL et AH ???
bin la vache, comment tu réussi a prog des routines pour afficher des sprites binaire de 8*8 en ignorant ceci ???
8O
Hors ligne
tu parles de mxdraw?
ben o début moi g fait ke débugguer!
ms c après ke g compris! toutes les histoires de décalage de sprites et tout ça je n'y captais rien! ce n'est que mntnt que j'y comprends un peu plus!
Hors ligne
Bon sinon je me posait une question (conne) :
S ke ce serai plus rapide ke du pix/pix, d'écrire danc un tableau 128*64 des 0 et des 1 (ce k'on veu afficher), le convertir en hexa, puis tout afficher en meme temps... (fin en word/word) ??? Mais je pense ke non car pour traduire le tableau ca prends du temps.....
Hors ligne
sur le site de Whyp g mis mes routines de dessin dans graphic.h
les fonctions ne fonctionne que sous du N&B en mode C3 (le mode par défaut)
quand je dessine une ligne horizontale ca va de 8 pixels par pixels au maximun
pour ce qui est des lignes verticales il y aussi une optimisation mais c pas pareil.
c ce que j'utilise pour le tarot donc ca marche.
regarde ca Julien pt que ca va te permettre d'optimiser ton programme
/*Dessine une ligne verticale
Diffère de l'ancienne méthode
Localise le premier pixel et ensuite décrémente l'indice (si).
*/
void vLigne(unsigned short int x,unsigned short int y1,unsigned short int y2,char state)
{
asm mov cx, x;
asm and cl, 0x7;
asm mov si, 0x3ff;
asm sub si, y1;
asm and x, 0xfff8;
asm shl x, 0x3;
asm sub si, x;
asm mov es, SEG1;
if(state)
{
asm mov ah, 0x80;
asm shr ah, cl;
for(;y1<=y2;y1++)
{
asm or es:[si], ah; //Allume un pixel
asm dec si; //Décrémente 'si'
}
}
else
{
asm mov ah, 0x7f;
asm shr ah, cl;
for(;y1<=y2;y1++)
{
asm and es:[si], ah; //Eteint 1 pixel
asm dec si;
}
}
}
/*Dessine une ligne horizontale
Procédure un peu plus complexe
Localise le premier pixel et ensuite se déplace de 8 pixels (car 1 octect fait 8 pixels)
*/
void hLigne(unsigned short int x1,unsigned short int y,unsigned short int x2,char state)
{
asm mov cx, x1;
asm and cl, 0x7;
asm mov si, 0x3ff;
asm sub si, y;
asm and x1, 0xfff8;
asm shl x1, 0x3;
asm sub si, x1;
asm mov es, SEG1;
asm shr x1, 0x3;
if(state)
{
asm mov ah, 0xff;
asm shr ah, cl;//Recherche du masque pour le premier pixel du premier octect
asm mov bx, x1;
asm mov cx, x2;
boucle: asm add bl, 0x8;
asm cmp cl, bl;
asm jb fin;
asm or es:[si], ah;
asm mov ah, 0xff;//Met 255 dans l'octect pour allumer 8 pixels d'un coup
asm sub si, 0x40; // Se déplace de 64 (car 64 octects par colonne)
asm jmp boucle;
fin: asm mov bl, 0x7f;
asm and cl, 0x7;
asm shr bl, cl;//Recherche du masque pour le dernier pixel
asm not bl;
asm and ah, bl;
asm or es:[si], ah;
}
else
{
asm mov ah, 0xff;
asm shr ah, cl;//Recherche du masque pour le premier pixel du premier octect
asm not ah;
asm mov bx, x1;
asm mov cx, x2;
boucle2:asm add bl, 0x8;
asm cmp cl, bl;
asm jb fin2;
asm and es:[si], ah;
asm mov ah, 0x0;//Met 0 dans l'octect pour éteindre 8 pixels d'un coup
asm sub si, 0x40;// Se déplace de 64 (car 64 octects par colonne)
asm jmp boucle2;
fin2: asm mov bl, 0x7f;
asm and cl, 0x7;
asm shr bl, cl;//Recherche du masque pour le dernier pixel
asm or ah, bl;
asm and es:[si], ah;
}
}
[/list]
Hors ligne
Merci mais je sais rien en faire: il me faut une fonction Line universelle capable de tracer une ligne entre n'importe quels points de l'écran sans forcément etre verticale ou horizontale...
C'est bien pour ca que je pense qu'il est impossible d'en faire une autrement qu'avec le pix/pix!
Hors ligne
ben je sais pas, fodrait un algo qui divise une ligne unvierselle en fragments de lignes horizontales et/ou verticale et on affiche ça ac les lignes de dada66!
Hors ligne
Lol oui, mais pour savoir si une ligne forme des segments verticaux ou horizontaux, il faut quand meme utiliser le pix/pix pour les déterminer...
Hors ligne
alors personne ne me répond ?? G posé une question existentielle...
Hors ligne