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.

#26 10 May 2003 15:13:08

scq
IsCachE Pour vous ServiR
Lieu: Gièvres (41 / Tours (37)
Date d'inscription: 25 Mar 2002
Messages: 2846

Re: aide à un débutant svp !!!

donc voila, je ne suis pas le seul à avoir des pb avec setpixel


la naissance, la jouissance et la mort sont les moments les plus courts de la vie, mieux vaut ne pas les rater.

Hors ligne

 

#27 10 Aug 2003 14:22:04

scq
IsCachE Pour vous ServiR
Lieu: Gièvres (41 / Tours (37)
Date d'inscription: 25 Mar 2002
Messages: 2846

Re: aide à un débutant svp !!!

en parlant d'apprendre à lire, sur la même version, t'avais mis contrat() avec un "e" ( contraste() mais c fini ca )

Bon, sinon, j'ai un pb, y a moyen d'afficher du gris par dessus du noir, sans tout effacer ?
J'ai bien essayer de modifier prgnuls.h, mais suis pas un pro en ASM, t la seule chose que j'ai réussi à faire, c'est d'afficher du gris lorsque le fond est noir, mais lmorsqu'il est blancca reste blanc ( en fait, j'ai regarrdé le tuto de whyp, et j'ai changer qq petit truc
voila la fonction originel :

Code:

gpix: 
asm { 
   mov al,1 
   shl al,cl 
   add si,0x800 
   or es:[si],al 
   jmp end 
} 

et que j'ai modifié :

Code:

asm {
   mov bh,0xFF
   db 0x0F,0x12,0x0C7
   and es:[si],bh
   add si,0x0800
//   and es:[si],bh
   mov al,1
   shl al,cl
   add si,0x800
   or es:[si],al
   jmp end
} 

siuplè, édè moa...


la naissance, la jouissance et la mort sont les moments les plus courts de la vie, mieux vaut ne pas les rater.

Hors ligne

 

#28 11 Aug 2003 05:40:14

Azor
Le Coté Obscur De La G100
Lieu: glop glop!
Date d'inscription: 04 May 2002
Messages: 5479
Site web

Re: aide à un débutant svp !!!

"t'avais mis contrat() avec un "e""
MOI CA ME GONFLE LES GENS QUI BALANCENT DU CODE SANS LE TESTER!!!!
(pr casioworld et certains autres)
Iscache> changer quelque chose en gris, suffit de mettre une couche a 1 et l' autre a 0! cad tu doi modifier 2 octets


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#29 11 Aug 2003 06:02:26

scq
IsCachE Pour vous ServiR
Lieu: Gièvres (41 / Tours (37)
Date d'inscription: 25 Mar 2002
Messages: 2846

Re: aide à un débutant svp !!!

??? j'e'spère que tu vas faire de la com l'an prochain X-thunder28, pour être plus explicite, parceque là ?!?!?
"il suffit de mettre une couchea1  et l'autre a 0! " c'est quoi une couche ?
" cad tu doi modifier 2 octets " je les modifie où ?


la naissance, la jouissance et la mort sont les moments les plus courts de la vie, mieux vaut ne pas les rater.

Hors ligne

 

#30 11 Aug 2003 06:33:06

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: aide à un débutant svp !!!

en mode DB, tu utilises 2 couches... si le bit d'un pixel sur la premiere couche est 1 et aussi 1 sur la 2eme couche, le pixel correspondant paraitra noir; si un seul des 2 bits est à 1 et l'autre à 0, ton pixel sera gris.
Ce qu'il a voulu dire, c qu'il suffit de mettre à 0 un des bits correspondant au pixels sur une des 2 couches au choix (généralement la premiere).

en fait tu peux bricoler une fonction du genre:

Code:

void setpix_eclair(char x,char y)
{
// ne modifie que les pixels noirs et les transforme en pixels gris

asm {
    pusha
    
    mov ax,0x1A60
    mov es,ax
    xor ax,ax
    mov al,127
    sub al,x        // al = 127-x
    mov cl,al        // sauvegarde de al
    shr ax,3        // divise x par 8
    mov di,ax        // di pointe sur l'octet en bas de l'ecran dans la bonne colonne
    and cl,7        // cl garde x%8
    mov bl,63
    sub bl,y
    mov ax,16
    mul bl            // ax = (63-y)*16
    add di,ax        // di pointe sur le bon octet dans le buffer 0x1AE0

    mov dx,1        // dl sera l'octet avec le pixel a afficher
    shl dx,cl        // on decale dx

    mov al,es:[di]
    and al,es:[di+0x800]    // seuls les pixels noirs du bon octet sont gardes sans al
    and dl,al    
    
    not dl
    and es:[di],dl    // eteind le pixel sur 0x1A60 si necessaire

    popa
    }
}

Attention, je n'ai pas testé, mais ca devrait aller.
De plus le calcul de di dans la premiere partie de la fonction n'est pas optimal, on peut faire plus rapide que ca, mais j'ai pas envie de refaire des calculs maintenant tongue
Note aussi que cette fonction ne fonctionne que qd tu utilises le double buffering, donc qd tu n'affiches pas directement a l'ecran. je suppose donc que tu as tous tes dessins dans un buffer en dehors de l'ecran (segments 0x1A60 et 0x1AE0), et que tu fais un refresh pour actualiser tout en un coup...Si toutefois ce n'est pas le cas et que tu preferes afficher directement a l'ecran sans passer par un buffer, modifie la premiere ligne

Code:

mov ax,0x1A60

par

Code:

mov ax,0x1A20

wink


Pensez à surveiller mes releases wink

Hors ligne

 

#31 11 Aug 2003 07:56:29

scq
IsCachE Pour vous ServiR
Lieu: Gièvres (41 / Tours (37)
Date d'inscription: 25 Mar 2002
Messages: 2846

Re: aide à un débutant svp !!!

merci,
bon, maintenant que j'ai des bases en C, va falloir que je me construise celle de l'ASM, ou du chinoi, comme on veut


la naissance, la jouissance et la mort sont les moments les plus courts de la vie, mieux vaut ne pas les rater.

Hors ligne

 

Pied de page des forums

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