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 28 Feb 2004 18:37:48

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

Hello...

Salut à tous....
comment ca va tous?
je reviens de vacances...lol...avec une entorce du pouce lol...
Des bonnes nouvelles :
- j'ai de nouveau internet donc je vais pouvoir revenir de temps en temps lors de mes peu de temps libre...
- j'ai retrouvé les sources imprimées de mon 1er programme basic...et je suis en train de le retaper...je devrais le sortir...
- la programmation de Chess est toujours en cours (je n'ai pas abandonné) et j'ai finis le mode editeur de partie...

voila ca fait plaisir de revenir...


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

Hors ligne

 

#2 28 Feb 2004 20:00:29

Huji
tekistekeus
Lieu: Paris
Date d'inscription: 30 Jan 2002
Messages: 1533
Site web

Re: Hello...

re a toi ! ca fe plaisir ke tu revienne !
pour le pouce... ben fallai te trouver une nana ! remarque t a bien fai : c le plu gro doi ! lol


Huji http://casiounivers.free.fr/Smileys_Or/smokin.gif
No noise, Nothing but my dreams...

Hors ligne

 

#3 29 Feb 2004 02:30:23

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

Re: Hello...

t'as trop joué avec ta caltos !!!
étais tu en manque ??? :ptdr:
re-bienvenue...


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

Hors ligne

 

#4 29 Feb 2004 03:47:28

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

Re: Hello...

lool...
non c juste une mauvaise chute au ski....


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

Hors ligne

 

#5 29 Feb 2004 04:28:59

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

Re: Hello...

c'est cool que tu reviennes big_smile


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

Statut: indéfini

Hors ligne

 

#6 29 Feb 2004 04:46:37

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

Re: Hello...

tiens ça tombe bien swifter j' avais 2-3 choses à te dire pour certaines de tes routines dans ta librairies DB-lib que j' ai eu du mal à comprendre pour l' utiliser... notemment le manque de commentaire et de #define lol


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#7 29 Feb 2004 05:17:35

mastermage
Magicien G100
Lieu: Charleville-Mézières,Compiègne
Date d'inscription: 31 Jan 2002
Messages: 1008

Re: Hello...

salut again smile

Hors ligne

 

#8 29 Feb 2004 17:59:12

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

Re: Hello...

lol vous avez pris des avatars sur le meme site...
va y xth exprime toi..."manque de commentaires"? hum... j'ai pourtant fais une page html avec des explications pour chaque fonctions...


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

Hors ligne

 

#9 29 Feb 2004 19:06:56

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

Re: Hello...

ta page html explique les effets et l' utilité de ta fonction, mais pas du tout comment elle fonctionne, embétant pour quelqu' un qui cherche à comprendre....

Donc manque de commentaires sur le code sources, par exemple la fonction d8clip_or. j' ai du retraduire l' asm en un dérivé du C puis faire les commentaires moi meme pour comprendre comment ça fonctionnait, et encore, ya encore un truc que j' ai pas pigé mais bon...

Le truc, c' était de transformer la fonction de telle maniere qu' elle fonctionne en linéaire 32 ( au lieu du 16 habituel) et de trafiquer le clipping aussi... et le seul commentaire présent sur le code sources était 'Ici on commence les tests du clipping...' alors qu' en fait 3 ou 4 instructions plus haut y' avait un label [clipping]... commentaire vachement utile lol

Mais sinon pour le clipping, fallait faire des #define pour les valeurs min et max, car par exemple, si on utilise un écran qui fait 96x64 (pour utiliser les 32 pixels restants pour l' interface par exemple), bah faut trouver pour le clipping!!

Sinon comme j' ai compris l' essentiel de la routine ( pas encore l' offset que tu emploie), jte dit bravo pour cette méthode ingénieuse par masquage  wink simplement plus d' explication sur le fonctionnement de la routine aurait été plus cool, après tout, certaines personnes veulent comprendre pourquoi et comment ça fonctionne avant d' utiliser ces fonctions...

Maintenant, l' application d' une telle modification dans mon cas:

D' abbord, comment j' ai structuré les données d' une carte:

En gros, vous prenez l' écran de la G100 en mode DB, vous multipliez la hauteur et largeur par 2, et vous obtenez mon format de carte.
Du coup, on n' a plus 16 octets par ligne, mais 32!

Maintenant, si ça en interresse, les raisons de ce format.

En fait c' est simple, c' est pour effectuer la copie sans trop de prise de tète:

une ligne en mode DB:

XXXXXXXXXXXXXXXX

une ligne de mon format de carte:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

En fait, il faut copier, pour afficher la carte, 16 octets par 16 octets. Pour cela, le mode vidéo virtuel que j' ai nommé le Linéaire 32 utilise la meme structure que le Linéaire 16, et il suffit alors juste de déplacer de 1 octet la copie pour se décaler de 8 pixel vers la gauche, et 32 pour monter d' un cran.

Maintenant les cartes sont de 256 x 128 et c' est parfait  :mrgreen: ( à part 2 - 3 bug dûs aux unsigned char ( comme les tirs qui sortent d' un coté et rerentre de l' autre mdr))

Mais sinon, ça serait bien, à l' avenir, de mettre des commentaires valables... au passage, j' ai, par le biais de cet évenement, apris 2-3 choses en asm lol


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#10 02 Mar 2004 09:17:24

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

Re: Hello...

bon ca y est ....
g fait des commentaires ; suffisait de demander lol... :mrgreen:
j'ai fait que ceux de d16clip...car si vous comprenez celui la vous comprendrez aisément d8clip...

Code:

// Affiche un sprite 16*16 pour mode D3 ou DB
// avec OR avec clipping, au buffer voulu.
void d16clip_or(int x,int y,void* spr,unsigned int segm)
{
  unsigned char el=0xFF; // On commence par creer une variable de 8 bits,
  asm{               // car je n'aurai pas assez de registre.
       mov cx,x      // On met x dans CX.
       mov si,spr    // On place l'adresse du sprite dans SI.
       mov di,0x3FE  // On place l'offset vidéo sur le dernier mot, en haut a gauche de l'ecran.
       mov ax,segm   // On charge dans AX le segment video voulu par l'utilisateur,
       sub ax,y      // auquel on soustrait y pour pointer sur le bon mot.
       mov es,ax     // On peut alors placer AX dans ES.
       mov ax,cx     // On copie x dans AX.
       cmp ax,0      // On compare x a 0 pour savoir s'il y a un clipping gauche.
       jge clipping  // Si x est plus grand ou egal, on commence les tests de clipping.
       add ax,0x80   // Sinon, et c'est tres important, on positionne le pointeur video
       add di,0x10   // sur l'octet suivant. Cela va permettre d'eviter le bug classique
     }               // des nombres negatifs, et donc de ne pas ecrire n'importe
  clipping:          // ou dans la memoire video.
  asm{
       shr ax,0x3    // On effectue quelques calculs pour faire pointer
       sub di,ax     // DI sur l'octet correct en abscisse.
       or bx,0xFFFF  // On cree un masque (qui est pour l'instant transparent) dans BX et aussi dans EL.
       cmp cx,0x70   // On commence par le clipping droit.
       jle leftclip  // S'il n'y en a pas, on teste le clipping gauche.
       cmp cx,0x7F   // On teste si le sprite est positionne dans l'ecran.
       jg end        // Si ce n'est pas le cas, on n'affiche rien et on quitte directement.
       xor el,bl     // Le clipping droit : on annule tous les bits de EL, ce qui va
       cmp cx,0x78   // effacer la partie droite du sprite a afficher lors de l'application du masque.
       jl downclip   // On teste si on a besoin d'effacer l'octet au centre du sprite.
       xor bl,bl     // Si c'est le cas on le fait, puis on va directement tester
       jmp downclip  // le clipping bas, puisque qu'il est impossible d'avoir
     }               // en meme temps un clipping gauche et droit.
  leftclip:
  asm{
       cmp cx,0      // S'il n'y a pas eu de clipping droit, on reteste le gauche (on peut pas plus optimiser)
       jge downclip  // Si ce n'est pas le cas, on teste le clipping bas.
       cmp cx,-15    // S'il n'y a pas de sprite a afficher (qu'il sort completement de l'ecran)
       jl end        // On quitte directement sans rien afficher.
       xor bh,bh     // Le clipping gauche : on annule tous les bits de BH, ce qui va
       cmp cx,-8     // effacer la partie gauche du sprite a afficher lors de l'application du masque.
       jge downclip  // On teste si on a besoin d'effacer l'octet au centre du sprite.
       xor bl,bl     // Dans ce cas, on annule BL (le masque de l'octet du centre)
     }
  downclip:
  asm{
       and cl,0x7    // On calcule le decalage a appliquer au sprite pour qu'il soit positionne correctement en abscisse.
       mov ch,0x10   // On place dans CH le nombre de ligne a afficher (ici 16).
       mov ax,y      // On charge y dans AX,
       cmp ax,0x30   // et on teste si le sprite deborde en bas de l'ecran.
       jle upclip    // Si ce n'est pas le cas, on file au clipping haut.
       cmp ax,0x3F   // Sinon on teste s'il y a quelque chose a afficher.
       jg end        // S'il n'y a rien on quitte directement.
       shl ch,0x2    // Le clipping bas : on place 64 dans CH
       sub ch,al     // puis on soustrait le nombre de ligne a afficher
       jmp loop      // en soustrayant y (64-y = nombre de ligne a afficher)
     }               // Puis on commence a afficher le sprite.
  upclip:
  asm{
       cmp ax,0      // On teste s'il y a besoin ou non d'un clipping haut.
       jge loop      // Si non, on commence a afficher.
       cmp ax,-15    // On teste s'il faut afficher quelque chose.
       jl end        // Si non, on quitte directement (je l'ai pas deja dis ca?)
       mov dx,ax     // Le clipping haut : d'abord on copie y dans DX
       shl ax,0x1    // Ensuite on va repositionner le pointeur de donnees :
       sub si,ax     // on ne doit pas afficher la premiere ligne du sprite etant donne qu'elle n'apparait pas a l'ecran.
       neg dx        // On prend la valeur absolue de y,
       sub ch,dl     // que l'on soustrait au nombre de ligne a afficher. (16+y = nombre de ligne a afficher)
       mov ax,segm   // On repositionne le segment video a l'adresse voulue.
       mov es,ax
     }
  loop:
  asm{               // Apres tous ces tests, onaffiche enfin le sprite.
       xor dl,dl     // On efface le contenu de DL.
       mov ax,ds:[si] // On charge une des lignes du sprite a afficher dans AX.
       mov dh,al     // On copie la partie basse de AX dans la partie haute de DX.
       shr dx,cl     // Ce qui permet de decaler DX, pour recuperer la partie manquante du sprite a afficher.
       shr ax,cl     // On decale aussi AX.
       and ax,bx     // On pose les masques prepares auparavant. Ainsi, si le masque est completement
       and dl,el     // nul, alors il efface la partie qu'il ne faut pas afficher ; sinon, il conserve le sprite tel quel.
       or es:[di],ax // On pose la partie gauche du sprite,
       or es:[di-1],dl // puis la droite.
       sub di,0x10   // On fait pointer DI sur la ligne inferieure de la memoire video.
       add si,0x2    // On fait pointer SI sur la prochaine ligne du sprite.
       dec ch        // On decremente le nombre de ligne a afficher.
       jne loop      // Tant qu'il n'est pas nul, on continue la boucle.
     }
  end:
}

Sinon pour le "debut des tests de clipping" mal positionné, ca date de l'époque où j'avais toujours pas réglé les problème de clipping gauche lié aux nombres négatifs...lol


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

Hors ligne

 

#11 02 Mar 2004 13:47:19

Fantasy
Membre
Lieu: S.U.A Agen rugby (Lot et Garon
Date d'inscription: 15 Jun 2003
Messages: 295
Site web

Re: Hello...

je suis a la bourre mais re bienvenue !
c'est moi qui dit ça ?!


Linksoft (Fantasy and Spank)
le site: www.membres.lycos.fr/linksoft

Hors ligne

 

#12 04 Mar 2004 07:57:32

Cnn
Membre Communauté Graph100
Lieu: Nord (62)
Date d'inscription: 28 Jan 2003
Messages: 1471

Re: Hello...

Reuhhh Swifter !!
Tu vois Fantasy, y'a pire que toi lol wink
Content que tu es récup internenette !!


Même les chemins de milles lieues commençent par un pas, pour cela, ne craint pas d'avancer lentement, craint juste de t'arrêter.

Hors ligne

 

#13 04 Mar 2004 12:48:37

Huji
tekistekeus
Lieu: Paris
Date d'inscription: 30 Jan 2002
Messages: 1533
Site web

Re: Hello...

vi toi on c deja cnn lol


Huji http://casiounivers.free.fr/Smileys_Or/smokin.gif
No noise, Nothing but my dreams...

Hors ligne

 

#14 06 Mar 2004 03:09:21

blip
Membre
Lieu: angers
Date d'inscription: 18 Feb 2004
Messages: 15
Site web

Re: Hello...

Sinon à propos de chess est ce qu'une version avec le mode link va bientot sortir parce qu'à deux sur la même calto on se fait griller quand on se la passe sur la table et elle fini par tomber quand c'est en dessous...

Hors ligne

 

#15 06 Mar 2004 05:28:08

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

Re: Hello...

c'zest que tu n'est pas doué !!!
l'année dernière, on a été jusqu'é six à faire une partie de scorch de 21 rounds ( on avait deux heures ) sans ce faire griller, et sans la faire tombé.
Par contre, ne surtoutpas mettre la caltos dans un puull qui serait sur la table, car pour peut que la prof soit un peu venere et te repere, il tire le pull un grand coup, et la G100 vol !!! et s'écrase lamentablement sur le sol ( et elle fonctionne toujours smile )
sinson, bioen venue  oti !!!


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

Hors ligne

 

#16 06 Mar 2004 06:06:56

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

Re: Hello...

Ah cool Swifffffffeeeeeerrrrrrrrrrr   lol  ( fallait bien faire cette plaisanterie pour ton retour ) est de retour !


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

Hors ligne

 

#17 01 Apr 2004 15:38:18

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

Re: Hello...

hum une version link...
ce devrait peut etre venir pdt les vacances de paques...
faut que je retrouve mes fonction de link...et que je me remette a programmer...y faut que je change de compilateur...tc3 m'ennerve trop
enfin un tas de truc qui pourrait empecher une sortie rapide d'une nouvelle version...a oui pi ya le bac a commencer a réviser lol
mais g plein de changement important a refaire tel que le moteur graphique...
sinon g fini (depuis un bout de temps) le mode editeur de parties.


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

Hors ligne

 

Pied de page des forums

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