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 25 Sep 2002 07:14:43

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

Remplacez vos routines!

Bon g trouvé que tt le monde utilisait la routine de whyp pour effacer l'écran en grayscale, et cette routine est excessivement lente! Elle efface trois pages, et en plus y'a une boucle for... Voici un peu de renouveau:

Code:

void clear(void)
{
asm mov i,0    
asm mov ax,0x1A20
asm mov es,ax
dboucle:
asm mov si,i
asm mov ax,0x0000
asm mov es:[si],ax
asm add i,2
asm cmp i,1024
asm jbe dboucle
asm mov i,2048
dboucle2:
asm mov si,i
asm mov ax,0x0000
asm mov es:[si],ax
asm add i,2
asm cmp i,3072
asm jbe dboucle2;
}

cette routine est encore optimisable, mais c'est déjà bcp mieux!
Elle n'efface que les plans VISIBLES et c des gotos à la place des for dc optimisation!

là g plus trop le tps dc d'autres routines à venir pê!


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

Statut: indéfini

Hors ligne

 

#2 27 Sep 2002 12:51:13

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

Re: Remplacez vos routines!

voila il me semble la routine de pix/pix la lus économique qiu soit!

Code:

void gpixel(int x,int y,int c)
{
asm{
    mov ax,0x1A20
    mov es,ax
    mov bx,x
    mov si,y
    shl si,4
    mov cl,bl
    shr bl,3
    and cl,7
    add si,bx
    cmp c,0
    je wpix
    cmp c,1
    je gpix
    cmp c,2
    je bpix
}

wpix:
asm {
    mov bh,0xFF
    db 0x0F,0x12,0x0C7
    and es:[si],bh
    add si,0x0800
    and es:[si],bh
    jmp end
}

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

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

end:return;
}

mais par contre celle là je sais pas si elle marche mais il me semble que oui!


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

Statut: indéfini

Hors ligne

 

#3 29 Sep 2002 08:28:08

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

Re: Remplacez vos routines!

voila une autre version de clear mais pour un seul buffer:

Code:

void clrbuf(unsigned int segmt)
{
asm mov ax,segmt
asm mov es,ax
dboucle:
asm mov si,i
asm mov ax,0x0000 
asm mov es:[si],ax 
asm add i,2 
asm cmp i,1024
asm jbe dboucle
}

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

Statut: indéfini

Hors ligne

 

#4 29 Sep 2002 15:11:39

KTr
Haut fonctionnaire graph100.com
Lieu: Saint Etienne
Date d'inscription: 19 Mar 2002
Messages: 1909
Site web

Re: Remplacez vos routines!

euhh... Je me pose des questions sur l'intéret de ces fonctions qd on efface l'écran on est po a la dixième de seconde près, non (C->ASM) et c ca tient plus de place l'asm pis pr la deuxieme fonx précise en kel mode c stp (G la flemme de vérifier..) M'enfin je di ca comme je dirai aut' chose prend le po mal et pis c bien ke kelkun optimise nos fonxions......


(¯`·.¸¸.·´¯`·.¸¸.-> www.ktr.fr.fm  ktr@fr.fm <-.¸¸.·´¯`·.¸¸.·´¯)

Hors ligne

 

#5 30 Sep 2002 06:36:01

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

Re: Remplacez vos routines!

ben c pr du Db!
ET puis j'en avais marre de voir tt le temps des boucles for qui te gachent tout, et 1/10e de seconde pr l'affichage ben c ENORME!!! fais des tests dans touche tu vas voir...

mais là c t les routines les plus grosses et les plus lentes que j'ai retranscrites en asm, pr accélérer un peu tt ça, cxar comme je l'ai dit ds mon premier post C TROP LENT!


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

Statut: indéfini

Hors ligne

 

#6 30 Sep 2002 15:32:49

KTr
Haut fonctionnaire graph100.com
Lieu: Saint Etienne
Date d'inscription: 19 Mar 2002
Messages: 1909
Site web

Re: Remplacez vos routines!

pr te rerépondre la fonx clear ne me sert personnellement qu'au début ou entre 2 menu et 1/10 de s ben voila koi !!


(¯`·.¸¸.·´¯`·.¸¸.-> www.ktr.fr.fm  ktr@fr.fm <-.¸¸.·´¯`·.¸¸.·´¯)

Hors ligne

 

#7 01 Oct 2002 06:31:56

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

Re: Remplacez vos routines!

Moi, ca me sert tout le temps, je la méterai pê, si ca se trouve, ca va charger plus vite certainne fenetre de TCX !


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#8 01 Oct 2002 12:32:39

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

Re: Remplacez vos routines!

ben déjà sans le double buffering y'avait bc moins de clignotement dans bomber! j'effaçais 2 couches au lieu de 3 avec cette routine, et en plus c plus rapide, donc déjà tu gagnes bcp de tps, surtout si tu fais des jeux "en boucle"  wink  wink


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

Statut: indéfini

Hors ligne

 

#9 01 Oct 2002 12:33:57

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

Re: Remplacez vos routines!

ARF !


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#10 04 Oct 2002 06:41:32

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

Re: Remplacez vos routines!

une routine pour le contraste, id donnée par swifter:

Code:

void contrast(int ses,int niv) 
{ 
int i; 
asm mov i,0 
debut: 
asm cmp ses,1 
asm je up 
asm mov ah,22h 
asm mov bl,0 
asm int 7CH 
asm jmp next 
up: 
asm mov ah,22h 
asm mov bl,1 
asm int 7CH 
next: 
asm cmp i,niv 
asm jbe debut 
} 

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

Statut: indéfini

Hors ligne

 

#11 05 Oct 2002 02:11:50

Swifter
Programmeur Graph100
Lieu: Niort (79)
Date d'inscription: 06 Aug 2002
Messages: 980
Site web

Re: Remplacez vos routines!

he j' en profites pour donner une petite fonction tres pratique puis qu'elle permet de regler le niveau de contrast ou on veut!!!

Code:

// a utiliser avec la fonction contrast() ci dessus
void init_contrast(char niv)
{ contrast(0,22); 
   contrast(1,niv);}

voila c'est tout simple rapide et pratique :P  :P
petite explication: il y a 23 contrastes sur la caltos
donc il suffit de le baisser au minimum puis de l'augmenter au niveau voulu... voilou...
par contre ca perd peut etre un peu de temps... c pour ca que j'ai demande la fonx contraste() tout en asm big_smile
C'est tout


Swifter, avec un T, n'attrapes pas la poussière mais toutes les remarques débiles :mrgreen:
              ** Swifter68@hotmail.com **

Hors ligne

 

#12 05 Oct 2002 03:12:26

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

Re: Remplacez vos routines!

Cool, moi j' utilise incontraste de KTR, je fait un 'for' et je l' augmente a 5 reprise !


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#13 05 Oct 2002 09:21:21

Swifter
Programmeur Graph100
Lieu: Niort (79)
Date d'inscription: 06 Aug 2002
Messages: 980
Site web

Re: Remplacez vos routines!

Ben maintenant t'auras qu'a utiliser ma fonction puisque quel que soit le niveau de contraste au lancement du programme le contraste se met au niveau voulu ( de 0 a 22 ). Et tu ecris q'1 ligne de code :P  big_smile  :P


Swifter, avec un T, n'attrapes pas la poussière mais toutes les remarques débiles :mrgreen:
              ** Swifter68@hotmail.com **

Hors ligne

 

#14 05 Oct 2002 10:29:39

KTr
Haut fonctionnaire graph100.com
Lieu: Saint Etienne
Date d'inscription: 19 Mar 2002
Messages: 1909
Site web

Re: Remplacez vos routines!

Ouai ms nous on se base sur le contraste initial......


(¯`·.¸¸.·´¯`·.¸¸.-> www.ktr.fr.fm  ktr@fr.fm <-.¸¸.·´¯`·.¸¸.·´¯)

Hors ligne

 

#15 05 Oct 2002 10:59:29

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

Re: Remplacez vos routines!

comme ca pr les gars kon pu de piles  :P  :P  :P


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#16 09 Oct 2002 02:24:14

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

Re: Remplacez vos routines!

Voila une routine qui efface l'écran plus vite que on ombre lol

mais g pas pu tester car g plus de cable et c du théorik

Code:

void clear (unsiged int segmt) 
{
asm{
       mov ax,segmt
       mov es,ax
       mov si,0x00       //mettez 0xFF pour rendre l'écran noir ou gris selon le mode
       xor di,di 
       mov cx,0x200 
       cld 
      rep movsw
}
} 

vala!
dites mi si ça marche mais normalement c le plus rapide possible ... et marche ds ts les modes


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

Statut: indéfini

Hors ligne

 

#17 09 Oct 2002 11:44:20

KTr
Haut fonctionnaire graph100.com
Lieu: Saint Etienne
Date d'inscription: 19 Mar 2002
Messages: 1909
Site web

Re: Remplacez vos routines!

La c déja mieux..... lol


(¯`·.¸¸.·´¯`·.¸¸.-> www.ktr.fr.fm  ktr@fr.fm <-.¸¸.·´¯`·.¸¸.·´¯)

Hors ligne

 

#18 10 Oct 2002 02:29:24

Swifter
Programmeur Graph100
Lieu: Niort (79)
Date d'inscription: 06 Aug 2002
Messages: 980
Site web

Re: Remplacez vos routines!

Ah o fait Casiomax...
La fonction de contraste que tu m'as filée marche pô...
Ou alors c Tc3 qui déconne!!


Swifter, avec un T, n'attrapes pas la poussière mais toutes les remarques débiles :mrgreen:
              ** Swifter68@hotmail.com **

Hors ligne

 

#19 10 Oct 2002 06:46:37

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

Re: Remplacez vos routines!

elle ne marche pas?
zarbi, je vais te la refaire!

mais svp testez ma ft pr effacer l'écran!

Code:

void clear (void) 
{ 
asm{ 
       mov si,0
       xor di,di 
       mov cx,0x200 
       cld 
       rep movsw 
} 
} 

celle là est un peu plus rapide, en fait g viré le mov es,segmt, dc à utiliser si vs êtes sûr d'être sur le bon buffer.

ps: dès que je peux je refais la routine pour le contraste!


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

Statut: indéfini

Hors ligne

 

#20 21 Oct 2002 09:28:56

casioworld
Programmeur Graph100
Lieu: Palaiseau (Essonne)
Date d'inscription: 08 Feb 2002
Messages: 1843
Site web

Re: Remplacez vos routines!

j'ai testé:

void clear (unsiged int segmt)
{
asm{
       mov ax,segmt
       mov es,ax
       mov si,0x00       //mettez 0xFF pour rendre l'écran noir ou gris selon le mode
       xor di,di
       mov cx,0x200
       cld
      rep movsw
}
}

elle incontestablement plus rapide que celle que j'utilisais:


void clear(void)
{int page;
for(page=0;page<=2;page+=2)
{
int i;

asm mov ax,page;
asm shl ax,6;
asm add ax,0x1A20;
asm mov es,ax;
asm xor ax,ax;

for (i=0;i<1024;i+=2)
    {
        _SI=i;
        asm mov es:[si],ax;
    }
}}

Je m'en rend compte dans mon jeu VirtualBoxe car j'efface en permanence l'ecran et le clignotement est presque imperceptible.
mais ta fonction m'affiche des trucs noir au début de mon jeu et à la fin. je sais pas pourquoi.


j'ai testé aussi:


void clear (void)
{
asm{   mov ax,0x1A20
       mov si,0
       xor di,di
       mov cx,0x200
       cld
       rep movsw
}
asm{   mov ax,0x1AA0
       mov si,0
       xor di,di
       mov cx,0x200
       cld
       rep movsw
}
}

tout aussi rapide que l'autre et j'ai les meme truc bizarre au début du jeu et à la fin.

pour les truc bizarre je vais essayer de cibler mieux le prob.


- http://www.casioworld.wb.st  --> plus grande base de données pour Graph100+
- http://efreidelirium.free.fr --> vive l'EFREI mdr

Hors ligne

 

#21 21 Oct 2002 09:30:29

casioworld
Programmeur Graph100
Lieu: Palaiseau (Essonne)
Date d'inscription: 08 Feb 2002
Messages: 1843
Site web

Re: Remplacez vos routines!

pour le mode N&B, le plus rapid ne serait pas le bon vieux:
clrscr();

???


- http://www.casioworld.wb.st  --> plus grande base de données pour Graph100+
- http://efreidelirium.free.fr --> vive l'EFREI mdr

Hors ligne

 

#22 21 Oct 2002 09:44:41

casioworld
Programmeur Graph100
Lieu: Palaiseau (Essonne)
Date d'inscription: 08 Feb 2002
Messages: 1843
Site web

Re: Remplacez vos routines!

les trucs bizarre dont je parlais apparaissent quand je passe d'un mode à un autre
au debut de mon jeu je fais:

setDB();      // mise en marche du mode DB
clear();      // ta fonction
contrast(1,5);

à la fin du jeu j'ai ca dans mon prog

clear();             // j'affec les deux buffers
contrast(0,5);
setC3();             // mode C3
clrscr();            // indispensable pour ne pas avoir des truc noir sur mon ecran avec ta fonction

@+ et repondez moi aussi pour la ofnction clrscr() SVP (c'est pour mon tuto, je voudrais mettre de bonnes routines)


- http://www.casioworld.wb.st  --> plus grande base de données pour Graph100+
- http://efreidelirium.free.fr --> vive l'EFREI mdr

Hors ligne

 

#23 23 Oct 2002 16:18:18

casioworld
Programmeur Graph100
Lieu: Palaiseau (Essonne)
Date d'inscription: 08 Feb 2002
Messages: 1843
Site web

Re: Remplacez vos routines!

casiomax >>> ca serait quand meme sympa que tu répondes ... c'est tout de meme ton post !!!


- http://www.casioworld.wb.st  --> plus grande base de données pour Graph100+
- http://efreidelirium.free.fr --> vive l'EFREI mdr

Hors ligne

 

#24 24 Oct 2002 03:25:56

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

Re: Remplacez vos routines!

vi, ms il est 'absent' aléatoirement !


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#25 24 Oct 2002 05:28:44

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

Re: Remplacez vos routines!

lol
excusez moi je croyais ke le post é t dead...

bon g lu vos ptits msgs et:

il faut d'abord effacer l'écran avec MON clear!!!!!! car clrscr c trop de la merde! ça efface pas tout l'écran en c3! donc forcément si tu passes en db sans effacer le seg entier ça te fera de la merde.

en gros tu dois avoir ça:

clear();
setDB();

{jeu}

clear();
setC3();

et c'est bon!

fais aussi attention aux buffers 0x1A60 et 0x1AE0, car ils sont utilisés pour le dbuf, donc peuvent contenir des images! à effacer si tu fais dou dbuf.

voila g tout dit, et est ce que l'autre ft clear marche? avec le rep ?[/code]


: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