Discussion: [NDS] probleme de sprite
Afficher un message
Vieux 26/09/2006, 19h07   #3
zeb
 
Messages: n/a
Par défaut

Citation:
Envoyé par Pitt
Je pense que ton problème vient du fait que tu écrases ta 1ère palette avec la 2ème ; donne-nous le code complet pour qu'on y voit plus clair.
oui je pense aussi que ca l'ecrase c'est pour ca que j'avais essayer d'ecrire :

for(i = 0; i < 256; i++)
SPRITE_PALETTE_SUB[i+256] = img1.palette[i];

En faisant ca, ca n'ecrasais pas la palette de la premiere image (sprite[0]) qui s'affichait donc correctement mais je ne sais pas comment "dire" a la 2e image (sprite[1]) qu'il faut utiliser la palette allant de SPRITE_PALETTE_SUB[256] a SPRITE_PALETTE_SUB[256*2].
(a moins qu'il faille faire autrement)

Citation:
Envoyé par Pitt
dans le code qui est au dessus, tu as utilisé des "sprite [0]" !? Il faut utiliser un autre sprite sinon ça va pas fonctionner ...
Non jme suis trompé, pour aller plus vite j'ai fait un copier/coller a partir du 1er exemple et puis j'ai oublié de changer le nom du sprite. Donc en fait pour "img1" il faut mettre sprite[1] a la place de sprite[0].

Bref ca donne sans erreur (pour y voir plus clair) :

-------------------------------
SpriteEntry sprite[128];

sImage img;
loadPCX((u8*)img_pcx, &img);
imageTileData(&img);

int i;
for(i = 0; i < 32*64; i++)
SPRITE_GFX_SUB[i] = img.data16[i];
for(i = 0; i < 256; i++)
SPRITE_PALETTE_SUB[i] = img.palette[i];

sprite[0].attribute[0] = ATTR0_COLOR_256 | ATTR0_SQUARE | 0;
sprite[0].attribute[1] = ATTR1_SIZE_64 | 0;
sprite[0].attribute[2] = 0;
sprite[0].attribute[3] = 0;

sImage img1;
loadPCX((u8*)img1_pcx, &img1);
imageTileData(&img1);

int i;
for(i = 0; i < 32*64; i++)
SPRITE_GFX_SUB[i+32*64] = img1.data16[i];
for(i = 0; i < 256; i++)
SPRITE_PALETTE_SUB[i] = img1.palette[i]; // -> avec ca:c'est la 1ere image qui foire
/* ou bien SPRITE_PALETTE_SUB[i+256] = ... -> avec ca:c'est la 2e*/

sprite[1].attribute[0] = ATTR0_COLOR_256 | ATTR0_SQUARE | 100; //changement de valeur pour y
sprite[1].attribute[1] = ATTR1_SIZE_64 | 0;
sprite[1].attribute[2] = 128;
sprite[1].attribute[3] = 0;
-------------------------------
  Réponse avec citation