Vous n'êtes pas identifié.
setgray(void) { outportb(0x02,0xDB); } delgray(void) { outportb(0x02,0xE3); } invgpix(unsigned int X,unsigned int Y) //niveau de gris: pixel clair { X=127-X; Y=63-Y; asm { mov ax,0x1A20 mov es,ax mov cx,X mov si,Y shl si,4 mov ch,cl shr cx,3 shr cl,5 xor bx,bx mov bl,ch add si,bx xor bl,bl db 0x0F,0x14,0xC3 xor es:[si],bl mov ax,0x1AA0 mov es,ax xor bl,bl db 0x0F,0x14,0XC3 xor es:[si],bl } return 0; } invgRect(int x1,int y1,int x2,int y2) {int i,j; for(i=x1;i<=x2;i++) for(j=y1;j<=y2;j++) invgpix(i,j); return 0; } black_pixel(unsigned int X,unsigned int Y) { X=127-X; Y=63-Y; asm { mov ax,0x1A20 mov es,ax mov cx,X mov si,Y shl si,4 mov ch,cl shr cx,3 shr cl,5 xor bx,bx mov bl,ch add si,bx xor bl,bl db 0x0F,0x14,0xC3 or es:[si],bl mov ax,0x1AA0 mov es,ax xor bl,bl db 0x0F,0x14,0xC3 or es:[si],bl } return 0; } dark_pixel(unsigned int X,unsigned int Y) //niveau de gris: pixel foncé { X=127-X; Y=63-Y; asm { mov ax,0x1A20 mov es,ax mov cx,X mov si,Y shl si,4 mov ch,cl shr cx,3 shr cl,5 xor bx,bx mov bl,ch add si,bx xor bl,bl db 0x0F,0x14,0xC3 or es:[si],bl } return 0; } gray_pixel(unsigned int X,unsigned int Y) //niveau de gris: pixel clair { X=127-X; Y=63-Y; asm { mov ax,0x1A20 mov es,ax mov cx,X mov si,Y shl si,4 mov ch,cl shr cx,3 shr cl,5 xor bx,bx mov bl,ch add si,bx xor bl,bl db 0x0F,0x14,0xC3 or es:[si],bl mov ax,0x1AA0 mov es,ax xor bl,bl db 0x0F,0x14,0XC3 and bl,es:[si] xor es:[si],bl } return 0; } light_pixel(unsigned int X,unsigned int Y) { return 0; } white_pixel(unsigned int X,unsigned int Y) //niveau de gris: pixel blanc { X=127-X; Y=63-Y; asm { mov ax,0x1A20 mov es,ax mov cx,X mov si,Y shl si,4 mov ch,cl shr cx,3 shr cl,5 xor bx,bx mov bl,ch add si,bx xor bl,bl db 0x0F,0x14,0XC3 and bl,es:[si] xor es:[si],bl mov ax,0x1AA0 mov es,ax xor bl,bl db 0x0F,0x14,0XC3 and bl,es:[si] xor es:[si],bl } return 0; } gpixel(unsigned char X,unsigned char Y,unsigned char coul) { if (coul==0) white_pixel(X,Y); if (coul==1) light_pixel(X,Y); if (coul==2) gray_pixel(X,Y); if (coul==3) dark_pixel(X,Y); if (coul==4) black_pixel(X,Y); return 0; } gline(int Xd,int Yd, int Xf,int Yf,char couleur) { short avX,avY,X,Y,dX,dY,cpt,i; dX=abs(Xf-Xd); dY=abs(Yf-Yd); if (Xd<Xf) avX=1; else avX=-1; if (Yd<Yf) avY=1; else avY=-1; X=Xd; Y=Yd; gpixel(X,Y,couleur); if (dX>dY) { cpt=dX/2; for (i=1;i<=dX;i++) { X=X+avX; cpt=cpt+dY; if (cpt>dX) { Y=Y+avY; cpt=cpt-dX; } gpixel(X,Y,couleur); } } else { cpt=dY/2; for (i=1;i<=dY;i++) { Y=Y+avY; cpt=cpt+dX; if (cpt>dY) { X=X+avX; cpt=cpt-dY; } gpixel(X,Y,couleur); } } return 0; } ghline(int x1,int x2,int y,char couleur) //Affiche une ligne horizontale (duobab) { int i; for(i=x1;i<=x2;i++) gpixel(i,y,couleur); return 0; } gvline(int x,int y1,int y2,char couleur) //Affiche une ligne verticale (duobab) { int i; for(i=y1;i<=y2;i++) gpixel(x,i,couleur); return 0; } gcercle(int X, int Y,int r, char c1) { int x=0,y,d; y = r; d = 1 - r; gpixel(x+X,y+Y,c1); gpixel(-x+X,y+Y,c1); gpixel(x+X,-y+Y,c1); gpixel(-x+X,-y+Y,c1); gpixel(y+X,x+Y,c1); gpixel(-y+X,x+Y,c1); gpixel(y+X,-x+Y,c1); gpixel(-y+X,-x+Y,c1); while ( y > x ) { if ( d < 0 ) d+=2*x+3; else { d+=2*(x-y)+5; y--; } x++; gpixel(y+X,x+Y,c1); gpixel(-y+X,x+Y,c1); gpixel(y+X,-x+Y,c1); gpixel(-y+X,-x+Y,c1); gpixel(x+X,y+Y,c1); gpixel(x+X,-y+Y,c1); gpixel(-x+X,y+Y,c1); gpixel(-x+X,-y+Y,c1); } return 0; } void fillgRect(int x1,int y1,int x2,int y2,char state) {int i,j; for(i=x1;i<=x2;i++) for(j=y1;j<=y2;j++) gpixel(i,j,state); } void grect(int x1,int y1,int x2,int y2,unsigned char c) { ghline(x1,x2,y1,c); ghline(x1,x2,y2,c); gvline(x1,y1,y2,c); gvline(x2,y1,y2,c); } presskey() { while (!bioskey(1)) outportb(0x02,0xDB); }
pour gpixel(x,y,c);
0=pixel blanc opaque
1=pixel blanc transparent
2=pixel gris opaque
3=pixel gris transparent
4=pixel noir opaque
utilisez les correctement !
@+
Hors ligne
Excuse moi, mais quesque tu entend par transparent?
Hors ligne
ouai c'est vrai j'ai oublier de presiser pour transparant :
BUF1 BUF2
0=pixel blanc opaque pix0 pix0
1=pixel blanc transparent pix0 pix inchanger
2=pixel gris opaque pix1 pix0
3=pixel gris transparent pix1 pix inchanger
4=pixel noir opaque pix1 pix1
BUF1=0x1A20
BUF2=0x1AA0
pix0=pixel eteint(blanc)
pix1=pixel allumer(noir)
pix inchanger =pixel ou l'etat ne change pas
d'autre :?:
Hors ligne
Heu tu sors d'ou ?
On ta jamais vu !
Hors ligne
normal il est inscrit ke depuis 5 jours !
Hors ligne
clair, le mec y débarque, il nous refait toutes nos routines, et il découvre une bete de manip :!:
Chapeau!
Hors ligne
?? Ceci s'apparente drôlement aux routines de KTr... surtout les pixels transparents. Mais bon, je voudrais savoir un truc, sont-elles plus rapides que le mode CB (je dsi bien CB)??
Hors ligne
Yep c les routines de Ktr en + rapides
Hors ligne
Et ouais c moi le + rapide !! :arrow: :arrow: :arrow: :arrow: :arrow: :diablotin:
Parceke en général le DB est + rapide que le CB (Moins de calcul) et qu'en plus mes routinnes sont les plus simples possibles....
Hors ligne
Je veut pas te contrarier mais tu t'es un pezu beaucoup servit des routines de whyp pour l'autre nivre de N&B ....
Hors ligne
Je suis aller un peu trop vite :oops: . j'aurai pas du les mettres aussi vite en ligne. sa s'apparente un peu au source de KTR c'est vrai mais bon...
Hors ligne
Je evut pas te contrarier mais tu as utilisé les routines whyp quabnd m^me, je les reconnais, je les ai faites avec lui, et d'aiileur, alle ne sont pas optimisées.
Tu pourais au moins expliquer, non, quand je modifie des routines, je marque qui les a faites en 1er
Hors ligne
Désolé ms je savai pa ke t'avai bossé dessus, d'autre part j'ai jamais dit ke c moi k'il les avaient faites EX-NIHILO... L st pa optimisées ?? Moi je trouve ke si...
Hors ligne
Heu Ktr, on parle pas de toi mais de Job :P
Hors ligne
:x :rocket:
C mon 4è craquage aujourd'hui vous pouvez pas savoir comme j'en ai marre (Si vous me revoyez pas c ke je suis allé me suicider :P )
Hors ligne
Pour programmer des jeux, ce genre de outine n'est absolument pas utile pour la bonne raison que pour que l'affichage (la rapiditéé) soit optimisé, il ne faut en aucun cas écrire ds la mém vidéo point par point (bit par bit) mais octet par octet (8 pts par 8 pts).
En résumé, comme le moteur d'affichage de tt jeu est a chaque fois différent, il faut reprogrammer une routine d'affichage différente à chaque fois, adaptée au mieux à ce que l'on veut faire.
Ce genre de routine "passe partout" est bien sur utilisable pour beaucoup de choses (ex: traitement des touches, communication par le port, etc...) mais en aucun cas pour l'affichage, partie du programme qui demande 100% d'optimisation et donc un code 100% adapté aux besoins.
Cependant, si ca vous amuse de programmer des routines, fautes donc gentes dames lol !!
Voila c ce que j'en pense.
Hors ligne
Ben franchement c grace au routines toutes faites ke j'ai commencé à programmer sans ca j'y serai jamais arrivé !! (enfin je crois )
Hors ligne
C sur, moa aussi, g fait mes routines byte par byte grace a des routines de whyp, mais bon faut pas exagerer non plus !
Je vais faire une lib hyper partique pour els logs (pas jeux) qui affiche un pix sur l'ecran das n'importe kel mode, cad que je vais faire des routines pareille et aussi rapides pour les modes C3,D3,CB,DB
Cadf que si tu fait setpix(x,y,page) et que t sur le mode C3, ça va utiliser la routine C3, ainsi de suite mais faut que je trouve un moyen de trouver une routine pour trouver le mode video courant !
Voila
(ça sera utilise pour les prog universels !)
Hors ligne
utilise un peek non ?
Hors ligne
8O je croyais que mon post était mort 8O
Hors ligne
ben non je l'ai détérré .... :P
Hors ligne