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 29 Aug 2002 08:54:18

SisQo
Programmeur Graph100
Lieu: Paris 12
Date d'inscription: 14 May 2002
Messages: 294
Site web

Sprite, c est plus fort que moi...

Question conne:Une Sprite est elle oblig. en 8*8??Parce que j ai besoin d un plus gros objet pr mon jeu!!Le 16*16 n est pas envisageable??Pr Bomberman, est ce que le perso est un sprite??? :?:  :?:  :?:


-------------------------------
http://b.attal.free.fr/banniere.gif

Hors ligne

 

#2 29 Aug 2002 09:04:24

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

Re: Sprite, c est plus fort que moi...

un sprite ca peut etre de la taille que l'on veut.
si tu regarde mes sources, je l'ai affiche pixel par pixel parceque ca me suffit je n'ai pas besoin que ce soit hyper rapide.
l'interet de faire des sprites 8*8 est de les afficher octets par octet (un procedé que je ne maitrise mais qui est rapide ), 16*16 ca permet de les afficher mots par mots ! (c'est ultra rapide et c'est ce que tuilise casiomax).
bomberman est meme composé de deux sprites (trop fort ce casiomax) de 16*16, un pour la tete et un pour le reste du corps.


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

Hors ligne

 

#3 29 Aug 2002 09:31:55

SisQo
Programmeur Graph100
Lieu: Paris 12
Date d'inscription: 14 May 2002
Messages: 294
Site web

Re: Sprite, c est plus fort que moi...

Donc pr faire un sprite:jele dessine, j utilise bmp2c,et je copie la source??C com ca que tu fais.


-------------------------------
http://b.attal.free.fr/banniere.gif

Hors ligne

 

#4 29 Aug 2002 10:11:10

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

Re: Sprite, c est plus fort que moi...

le plus simple c de dessiner tous les sprites sur une même image (cote à cote par exemple), d'enregistrer en .bmp et apres ds ton prog sur G100, tu lis le bmp et tu charge les sprites ds un tab.
Ou alors si tes sprites sont peu nombreux ou tres petits ( 4*4 p.ex) , ben t peux les "programmer" directement en codant le tableau ds ton code.


L@rk @ FGPstudios

Hors ligne

 

#5 29 Aug 2002 12:23:04

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

Re: Sprite, c est plus fort que moi...

"tu charge les sprites ds un tab." tu fais comment et ensuite pour les dessiner tu fais comment ???

exemple d'un sprite avec un tableau (mais c'est relativment lent, c'est que j'uitlise pour mes jeux )

char punch[1][7][7] =
{1,1,1,1,1,1,1,
1,0,0,0,0,0,1,
1,0,1,1,1,0,1,
1,0,0,0,0,0,1,
1,0,1,1,1,1,1,
1,0,1,0,0,0,0,
1,1,1,0,0,0,0};

"punch" c'est le nom du tableau. le premier chiffre c'est le nombre de sprite qu'il y a dans le tableau. on peut en mettre en effet plusieurs dans un tableau:

char curseur[2][5][6] ={
{
1,1,1,1,0,0,
0,1,1,1,1,0,
0,0,1,1,1,1,
0,1,1,1,1,0,
1,1,1,1,0,0,},

{
0,0,1,1,1,1,
0,1,1,1,1,0,
1,1,1,1,0,0,
0,1,1,1,1,0,
0,0,1,1,1,1,}};

le deuxieme chiffre, c'est le nombre de lignes et le troisieme  c'est le nombre du colonnes.
ensuite il te faut une fonction qui lise le tableau et affiche un pixel dès qu'il y a un "1" dans le tableau.
voici la fonction:

/*affiche punch */
void drawpunch(unsigned char x, unsigned char y, unsigned char nb)
{int C,D;
for(C=0;C<7;C++){
for(D=0;D<7;D++){
if(punch[nb][D][C]==1) inv_pixel(x + C,y + D);}}}

inv_pixel c'est la fonction que j'utilise pour afficher un pixel.
punch[nb][D][C]: on retrouve le nom du tableau ou il y a le sprite.

dans drawpunch(unsigned char x, unsigned char y, unsigned char nb):
"x" et "y" sont les coordonnées du sprites et "nb" et le numero du sprites dans le tableau. Attention, on commence à 0. donc le premier sprites dans le tableau "punch" et le sprite de numero "0". mais le deuxieme sprite du tableau "curseur" à le numero "1".

Faire un tableau avec plusieurs sprites est utile quand il ya plusieurs sprites qui ont les meme dimmensions.
[D] est le nombre de ligne == le nombre pixel en hauteur du sprite
[C] est le nombre de colonne == le nombre de pixel en largeur.
si je veux adapter la fonction d'affichage pour le tableau "curseur", la fonction devient:

drawcurseur(unsigned char x, unsigned char y, unsigned char nb)
{int C,D;
for(C=0;E<6;C++){
for(D=0;F<5;D++){
if(punch[nb][D][C]==1) inv_pixel(x + C,y + D);}}}

si dans mon prog je veux afficher le deuxieme sprite du tableau "curseur" je fais texto:

drawcurseur(30,33,1);

j'espere que ca t'a aidé.


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

Hors ligne

 

#6 29 Aug 2002 14:40:44

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

Re: Sprite, c est plus fort que moi...


drawcurseur(unsigned char x, unsigned char y, unsigned char nb)
{int C,D;
for(C=0;E<6;C++){
for(D=0;F<5;D++){
if(punch[nb][D][C]==1) inv_pixel(x + C,y + D);}}}

Super tes infos, mais c'ets pas

if(curseur[nb][D][C]==1)

plutot?
wink


Pensez à surveiller mes releases wink

Hors ligne

 

#7 29 Aug 2002 14:59:46

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

Re: Sprite, c est plus fort que moi...

c'est meme:
drawcurseur(unsigned char x, unsigned char y, unsigned char nb)
{int C,D;
for(C=0;C<6;C++){
for(D=0;D<5;D++){
if(curseur[nb][D][C]==1) inv_pixel(x + C,y + D);}}}

j'espere que ca aidera !


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

Hors ligne

 

#8 30 Aug 2002 04:40:41

SisQo
Programmeur Graph100
Lieu: Paris 12
Date d'inscription: 14 May 2002
Messages: 294
Site web

Re: Sprite, c est plus fort que moi...

Merci bcp, je vais essayer ca


-------------------------------
http://b.attal.free.fr/banniere.gif

Hors ligne

 

#9 30 Aug 2002 04:41:59

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

Re: Sprite, c est plus fort que moi...

@ mastermage: la facon dont tu stocke tes sprites est très peu économe en place, c pour ca que je te conseille (à toi et à tous) de les stocker bit par bit :

char punch[1][7][7] =
{1,1,1,1,1,1,1,
1,0,0,0,0,0,1,
1,0,1,1,1,0,1,
1,0,0,0,0,0,1,
1,0,1,1,1,1,1,
1,0,1,0,0,0,0,
1,1,1,0,0,0,0};

devient :

char punch[][7] = {127,65,93,65,95,80,112};

la place occupée est divisée par 7 !!!


L@rk @ FGPstudios

Hors ligne

 

#10 30 Aug 2002 08:13:07

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

Re: Sprite, c est plus fort que moi...

mastermage ????? ca doit etre une erreur.
t'aurais une fonction pour les afficher quand ils sont codés quand ca ?


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

Hors ligne

 

#11 31 Aug 2002 13:32:16

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

Re: Sprite, c est plus fort que moi...

le @ mastermage est une erreur : c t adressé à toi.

Et pis oui g une fonction puisque c ce type de stockage que jutilise dans MarioKart.


L@rk @ FGPstudios

Hors ligne

 

#12 01 Sep 2002 03:40:08

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

Re: Sprite, c est plus fort que moi...

le fait que la place est divisé par 7 rendra les choses plus rapide ???
si c'est le cas je vais faire une fonction, mais malheureusement en C.


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

Hors ligne

 

#13 01 Sep 2002 03:41:55

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

Re: Sprite, c est plus fort que moi...

Les fonctions de mastermage permettent d'afficher octet par octet! Il s'est cassé la tête à les faire, et moi j'en ai fait une librairie: Mx-Draw.h

Va la télécharger sur le site de L@rk (www.fgpstudios.fr.st) si tu veux utiliser ces fonctions. Il y a un exemple de code avec.


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

Statut: indéfini

Hors ligne

 

#14 01 Sep 2002 04:44:36

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

Re: Sprite, c est plus fort que moi...

à casioworld: non ca rend pas les choses plus rapides (je suppose que même avec ta méthose de stockage, tu affiche par octets) mais par contre ca libère pas mal de RAM surtout quant le nombre total de sprites s'éleve à 256 !

Mes fonctions d'affichage de MarioKart (1 pour les 8*8 par octet et une pour les 16*16 par mot) sont écrites en C et la rapidité est suffisante. Donc je pense que ca suffira pour toi aussi en C ! :-)


L@rk @ FGPstudios

Hors ligne

 

#15 01 Sep 2002 10:23:16

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

Re: Sprite, c est plus fort que moi...

Au fait en C il faut penser à utiliser les fonctions movemem et movedata qui utilisent (très probablement) l'instruction asm REP, ça va quand même plus vite que de faire une boucle for.


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

Hors ligne

 

#16 01 Sep 2002 11:41:01

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

Re: Sprite, c est plus fort que moi...

disp_bmp c pareil. SInon pour copier un écran vous pouvez utiliser movedata, quiest tout aussi rapide! (movedata la ft en C de mxdraw)


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

Statut: indéfini

Hors ligne

 

#17 01 Sep 2002 11:48:55

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

Re: Sprite, c est plus fort que moi...

movedata existe dans TC (string.h mem.h)

Code:

void movedata(unsigned srcseg, unsigned srcoff,
  unsigned destseg,  unsigned destoff, size_t n);

exemple:

Code:

#include <mem.h>

#define MONO_BASE 0xB000

char buf[80*25*2];

/* saves the contents of the monochrome screen in buffer */
void save_mono_screen(char near *buffer)
{
   movedata(MONO_BASE, 0, _DS, (unsigned)buffer, 80*25*2);
}


int main(void)
{
   save_mono_screen(buf);
   return 0;
}

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

Hors ligne

 

#18 02 Sep 2002 03:09:46

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

Re: Sprite, c est plus fort que moi...

En fait on peut copier n'importe quel type de données d'une adresse  une autre smile

Mais sinon je voulais savoir quel était l'instruction la plus rapide:

faire une boucle for (certainement pas)
faire une boucle qui fait la même chose mais en utilisant while
ou encore faire pareil mais avec des goto

??


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

Statut: indéfini

Hors ligne

 

#19 02 Sep 2002 10:03:41

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

Re: Sprite, c est plus fort que moi...

sans aucun conteste je pense que le goto est le plus rapide. Mais bon dans le genre compliqué ya pas mieux depuis l'invention de l'ASM


L@rk @ FGPstudios

Hors ligne

 

#20 02 Sep 2002 11:24:42

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

Re: Sprite, c est plus fort que moi...

C'est une bonne idée ça, mais fodre aussi mettre des heures le matin si c possible smile

Et pis chake modo a sa plage horaire ou un utilisateur que l'ondésignera, enfin bon, à ça devient compliké.


: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