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 21 Jun 2002 04:18:51

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

2072: a propos des sprites

tu as deja posté un message sur une facon de reduire considerablement la place que prennet les sprites dans un programme. Mais je n'ai rien compris. pourrait expliquer comment faire ???
en fait j'essaie de reduire au max scorch pour le faire fonctionner sur graph100+. quelle est la taille max sur graph100+ pour un exe ?


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

Hors ligne

 

#2 21 Jun 2002 04:34:40

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

Re: 2072: a propos des sprites

sans modifier l'histoire des sprites ont peut faire tomber le prog à49142 octets au lieu de 52356 octets. Mais le probleme c'est que dans les sources de duobab y a une "erreur synthax" et c'est un truc en ASM donc je n'y comprend rien. est ce que quelqu'un pourrait prendre les sources de duobab et corriger l'erreur pour que je continue d'essayer de reduire l'exe.


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

Hors ligne

 

#3 21 Jun 2002 04:53:25

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

Re: 2072: a propos des sprites

je te repond .

en fait les sprites sur scorch sont en fait un tableau comme ca:

0 0 0 0 0 0 0 0
0 1 1 1 0 0 0 0
1 1 1 1 1 0 0 0

pour dessinner le tank .

Seulement ce sont du type char .

Masi on peut économiser de la plce en réflechissant.

regarde :

0 0 0 0 0 0 0 0 est un chiffre binaire de 8 digits et un char est un octet .
Vu que 1 octets  est en fait un nombre binaire de 8 digits , on peut economiser de la plca comme ceci .
1-on se fait une table comme celle plus haut.
2- sachant que la conversion en décimal se fait comme ceci:

unsigned char =1ligne=1octet=a*128+b*64+c*32+d*16+e*8+f*4+g*2+h*1
Les lettres sont dans l'ordres des pixel.

(j' ai fait un exe visaul qui permet de dessinner un sprite et de le convertir en 8 octets si tu veux !)

Ensuite pour le dessiner faut faire une routine comme celle-ci :

unsigned char sprite[8]={0,0,0,0,0,0,0,0}
//met po des zero mais ce que t'as trouvé par ligne .


void drawsprite(x,y)
   {unsigned char octetlu, i;
     for[i=0;i<8;i++]
      {
        octetlu=sprite[i];
        if(octetlu-128>=0) {octetlu=octetlu-128;pixelnoir(x,y+i);}
        if(octetlu-64>=0) {octetlu=octetlu-64;pixelnoir(x+1,y+i);}
        if(octetlu-32>=0) {octetlu=octetlu-32;pixelnoir(x+2,y+i);}
        if(octetlu-16>=0) {octetlu=octetlu-16;pixelnoir(x+3,y+i);}
        if(octetlu-8>=0) {octetlu=octetlu-8;pixelnoir(x+4,y+i);}
        if(octetlu-4>=0) {octetlu=octetlu-4;pixelnoir(x+5,y+i);}
        if(octetlu-2>=0) {octetlu=octetlu-2;pixelnoir(x+6,y+i);}
        if(octetlu-1>=0) {octetlu=octetlu-1;pixelnoir(x+7,y+i);}
      }
    }

Normallement ça marche .


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#4 21 Jun 2002 04:56:48

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

Re: 2072: a propos des sprites

si tu reduis la taille des sprite alors ça fonctionera sur sur la G100+.


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#5 21 Jun 2002 06:49:52

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

Re: 2072: a propos des sprites

je te remercie enormement mais pour l'instant je ne peux rien puisqu'il y a un bug "synthax error" que je ne sais pas resoudre car c'est de l'asm!


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

Hors ligne

 

#6 21 Jun 2002 07:21:17

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

Re: 2072: a propos des sprites

sur scorch.c ?

Je vais essayer de trouver.

Au pire maille Duobab.


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#7 21 Jun 2002 08:51:30

nykosledieu
Team G100
Lieu: Strasbourg
Date d'inscription: 29 Jan 2002
Messages: 3028
Site web

Re: 2072: a propos des sprites

son email : lionel.baboud@wanadoo.fr
c la seul ke g trouvé en 1 mois !


Nykosledieu
nykosJEMMERDELESPAM@graph100.com - http://team.graph100.com
Venez sur le chat !!

Hors ligne

 

#8 21 Jun 2002 18:08:11

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

Re: 2072: a propos des sprites

Mail moi le bug ou/et passe moi les sources je verrai ce ke je peux faire (Avec mes povres connaissances  wink  wink )


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

Hors ligne

 

#9 23 Jun 2002 04:29:25

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

Re: 2072: a propos des sprites

Excusez moi je m'y connais pas bien (du tout ) en C mais bien plus en routines...

Alors juste comme ca, j'ai vu ca:

Code:

for[i=0;i<8;i++] 
{ 
octetlu=sprite[i]; 
if(octetlu-128>=0) {octetlu=octetlu-128;pixelnoir(x,y+i);} 
if(octetlu-64>=0) {octetlu=octetlu-64;pixelnoir(x+1,y+i);} 
if(octetlu-32>=0) {octetlu=octetlu-32;pixelnoir(x+2,y+i);} 
if(octetlu-16>=0) {octetlu=octetlu-16;pixelnoir(x+3,y+i);} 
if(octetlu-8>=0) {octetlu=octetlu-8;pixelnoir(x+4,y+i);} 
if(octetlu-4>=0) {octetlu=octetlu-4;pixelnoir(x+5,y+i);} 
if(octetlu-2>=0) {octetlu=octetlu-2;pixelnoir(x+6,y+i);} 
if(octetlu-1>=0) {octetlu=octetlu-1;pixelnoir(x+7,y+i);} 
} 

On pourrait pas faire ceci ou un truc du genre? (y'a surement des erreurs de syntaxe, et il fut déclarer j)

Code:

for[i=0;i<8;i++] 
{ 
octetlu=sprite[i]; 
for [j=7;j>-1;j--]
{
if(octetlu-2^j>=0) {octetlu=octetlu-2^j;pixelnoir(x+7-j,y+i);} 
}} 

Evidemment je ne sais pas si on peut mettre 2 exposant qq chose comme ca... mais si vous cherchez a gagner de la place, ca devrait vous aider non?  smile


Pensez à surveiller mes releases wink

Hors ligne

 

#10 23 Jun 2002 11:27:28

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

Re: 2072: a propos des sprites

ouais ça pourrait aller mais mon code doit etre sensiblement plus rapide, et comme il n'y a que 8 digits ...


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#11 23 Jun 2002 12:27:35

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: 2072: a propos des sprites

non "^" en C ne corespond pas a puissance mais au ou exclusif XOR


ton code devrait plutôt ressembler à ça :

Code:

for[i=0;i<8;i++] 
{ 
      octetlu=sprite[i]; 
      for [j=0;j<8;j++] 
     { 
          if(octetlu-(1 << j)>=0)
          {
               octetlu = octetlu - (1 << j); pixelnoir(x + 7 - j, y + i);
          } 
     }
} 

en C << et >> servent a décaller de tant de bits vers la droite ou vers la gauche, ça correspond à shl et shr en assembleur.


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#12 23 Jun 2002 12:34:53

L@rk
Programmeur Graph100
Lieu: Saumur (49)
Date d'inscription: 30 Jan 2002
Messages: 742
Site web

Re: 2072: a propos des sprites

Je me permet de faire 1 petite remarque:
C'est cette méthode de "compression" (entre "" car c pô ce qu'on peut appeler 1 vrai compression, just 1 type économique de codage) que jutilise dans MK.
Et donc, selon mon expérience personnelle, les routines d'affichage que vous proposez + haut sont bien trop lentes pour 1 jeu qui doit remplir l'ecran de sprites à chaque frame et en + le faire défiler (comme MK; donc.) Dc pour l'affichage, si vous utilisez cette méthose de stockage des données ( 8 pts/bit), je vous conseille d'ecrire directement ces octets dans la mémoire vidéo comme ca vs affichez les pts 8 par 8 et dc c bcp + rapide !

Voila ;-)


L@rk @ FGPstudios

Hors ligne

 

#13 23 Jun 2002 12:39:21

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: 2072: a propos des sprites

Oui en effet au fait 'j'ai implémenté cette méthode dans TOUCHE, les sprite sont codés en en ascci dans le fichiers .dat et sont décodé en live.

Le problème pour afficher directement dans la mem vidéo 8 / 8 c'est que ça dépend où t'affiche sur l'écran, t'as trouvé une parade ?


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#14 23 Jun 2002 12:45:25

L@rk
Programmeur Graph100
Lieu: Saumur (49)
Date d'inscription: 30 Jan 2002
Messages: 742
Site web

Re: 2072: a propos des sprites

Je comprend pas trop ce que tu veix dire.
Mais ce que je fais, (comme l'écran défile point par point et non pas 8pts par 8 pts), je décale en live chaque rangée de 8 vers la gauche en fonction de la position de l'acran par rapport aux sprites, et comme ca je px faire défiler l'écran pt par pt. et tt ca en ASM bien sur.
Et je fais en sorte que les sprites en haut a gauche et en bas à droite ne sortent pas de la mémoire vidéo.
Et la g une routine parfaitement fiable et tres rapide (~12 fps).


L@rk @ FGPstudios

Hors ligne

 

#15 23 Jun 2002 12:53:37

2072
Programmeur Graph100
Lieu: Somewherebourg
Date d'inscription: 29 Jan 2002
Messages: 2056
Site web

Re: 2072: a propos des sprites

En fait mon pb c que l'écran est organisé par colonne de 8 pixels de large en partant d'en bas à droite donc si on veux écrir directement un sprite de de largeur <= 8 pixels dans une de ces colonnes, pas de problème mais quand c'est à cheval sur deux colonnes on ne peux plus utiliser cette méthode.


-~2072~-
Paid Emails
[URL=http://www.2072productions.com]2072productions.com[/URL]
[URL=http://www.casiocalc.org]casiocalc.org[/URL]

Hors ligne

 

#16 23 Jun 2002 14:02:38

L@rk
Programmeur Graph100
Lieu: Saumur (49)
Date d'inscription: 30 Jan 2002
Messages: 742
Site web

Re: 2072: a propos des sprites

sauf si tu passe en mode D3 qui est codé par lignes !!!
Mais de tt facons, même en C3 ma methode marche: au début je codais dans ce mode et pis g changé. En fait je fessais comme je t espliké : en calculant 1 décalage blablabla ...

voilou !


L@rk @ FGPstudios

Hors ligne

 

#17 24 Jun 2002 03:50:27

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

Re: 2072: a propos des sprites

essayez de faire cette méthode pour scorch, je voudrais po regarder le résultat ...

d' autre part c vrai que pour faire un remplissage d' éecran c la mellieure methode.

A rpopos de mode video ,vous avez déjà essayer d' eteinder la caltos dans 3Dtest.exe et Cube.exe ? le gars a du utiliser le mode D3 ou une conneri comme ça ...


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

Pied de page des forums

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