Forum Graph100

Forum Graph100

Vous n'êtes pas identifié.

Annonce

Bonjour et bienvenue sur le nouveau Forum Graph100 !
L'intégralité des données a été transférée sur un forum PunBB et tout les comptes sont fonctionnels avec le même nom d'utilisateur et mot de passe.
Un wiki est aussi disponible avec le même compte ! N'oubliez pas de remettre votre avatar, bon surf !
Pour plus d'informations, consultez ce post.

#1 14 Jul 2002 16:33:53

gathering
Programmeur Graph100
Lieu: Belgique - Liège
Date d'inscription: 29 Jan 2002
Messages: 133

Vu que je ne suis pas expert en asm ...

je suis pas un spécialiste en asm. alors est-ce que qqun pourrait me convertir cette fonction pour quel fonctionne sous l'adresse video 0x1A60 et non pas sous l'adresse 0x1A20 (qui s'affiche a l'écran). merci de m'aider car je pige RIEN (je sais je devraii me mettre a l'asm mais bon...)

Code:

void setPix(int x,int y,char couleur)
 {
 if (couleur==0 || couleur==1)
  {
  asm
   {
    mov cx,x
    mov dx,y
    mov al,couleur
    mov si,0x003f
    sub si,dx
    sub cx,0x80
    not cx
    push cx
    and cl,0xf8
    shl cx,0x03
    add si,cx
    pop cx
    and cl,0x07
    mov ah,0xfe
    rol ah,cl
    and es:[si],ah
    mov ah,al
    rol ah,cl
    or es:[si],ah
   }
  }
 }

lol Julien Ghaye, Alias Gathering lol

gathering@gathex.net

Hors ligne

 

#2 15 Jul 2002 03:41:46

C@siomax
Programmeur Graph100
Lieu: Grenoble, au QG de fmw-product
Date d'inscription: 03 Feb 2002
Messages: 3042
Site web

Re: Vu que je ne suis pas expert en asm ...

Essaye plutot celle-ci:

Code:

void setPix(unsigned short int x, unsigned short int y,unsigned int segm,char state)
    {asm push ax;
    asm push cx;
    asm push dx;
    asm mov cx,x;
    asm mov dx,y;
    asm mov es,segm;
    asm mov al,state;
    asm mov si,0x003f;
    asm sub si,dx;
    asm sub cx,0x80;
    asm not cx;
    asm push cx;
    asm and cl,0xf8;
    asm shl cx,0x03;
    asm add si,cx;
    asm pop cx;
    asm and cl,0x07;
    asm mov ah,0xfe;
    asm rol ah,cl;
    asm and es:[si],ah;
    asm mov ah,al;
    asm rol ah,cl;
    asm or es:[si],ah;
    asm pop dx;
    asm pop cx;
    asm pop ax;}

setPix(x,y,0x1A60,couleur);
arès ben tu px enlever le int segm et remplacer le segm de la routine par l'adresse du buffer que tu veux.


:mrd: :mrd:
.·´¯`·.¸.-> Casiomax <-·´¯`·.¸.·

Statut: indéfini

Hors ligne

 

#3 15 Jul 2002 06:42:10

gathering
Programmeur Graph100
Lieu: Belgique - Liège
Date d'inscription: 29 Jan 2002
Messages: 133

Re: Vu que je ne suis pas expert en asm ...

Merci Casiomax
Enfin. 1 mois et demi plus tard, le "moteur graphique" de Cyclo II avance.
Pour ceux qui se posent la question, Non il n'y aura pas de niveau de gris (je verrai pour dans le future)


lol Julien Ghaye, Alias Gathering lol

gathering@gathex.net

Hors ligne

 

#4 21 Jul 2002 12:26:03

C@siomax
Programmeur Graph100
Lieu: Grenoble, au QG de fmw-product
Date d'inscription: 03 Feb 2002
Messages: 3042
Site web

Re: Vu que je ne suis pas expert en asm ...

Mais tout comptes faits ta routine est bcp plus optimisée, donc essaye ça: (g pas testé):

Code:

void setPix(int x,int y,char couleur,.../*int segm*/)) 
{ 
if (couleur==0 || couleur==1) 
  { 
  asm { 
    mov ax,segm   //ici l'adresse du buffer video
    mov es,ax    //on met dans es la valeur de ax, soit le buffer voulu
    mov cx,x 
    mov dx,y 
    mov al,couleur 
    mov si,0x003f 
    sub si,dx 
    sub cx,0x80 
    not cx 
    push cx 
    and cl,0xf8 
    shl cx,0x03 
    add si,cx 
    pop cx 
    and cl,0x07 
    mov ah,0xfe 
    rol ah,cl 
    and es:[si],ah 
    mov ah,al 
    rol ah,cl 
    or es:[si],ah 
   } 
  } 
} 

Les "..." après la virgule c un truc pr dire au compilateur ke ta ft peut contenir plus d'arguments, donc à toi de voir.

Sinon les grayscale c très simple:

que ce soit en mode CB (3*C3) ou DB (3*D3) c le même principe!

1pixel dans le buf 1 allumé et 1 pixel dans le buf3 allumé->Noir
1pixel dans le buf 1 éteint et 1 pixel dans le buf3 allumé-> Gris
Rien d'allumé->blanc

VOilà, et je crois que les adresses des buffers c:

0x1A20
0x1A60 (le buf 2 sert à rien pas de chgmt perceptible->cf tuto de Whyp)
0x1AA0 ou 0x1A80 je sais pus

Voilou! Je crois que je ne me suis pas trompé!


:mrd: :mrd:
.·´¯`·.¸.-> Casiomax <-·´¯`·.¸.·

Statut: indéfini

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr