Bonjour,
Je vous soumets un nouveau probl?me sur lequel je bute en ce moment.
J'ai 3 sprites pour l'instant, un monstre, un ours et une "boulette". Je charge donc 3 images bmp, chacune des images contenant 9 étapes d'animation différentes (exactement comme dans l'exemple AnimatedSprite).
Donc pour charger mes sprites je fais la chose suivante
Je fais donc 3 oamInitGfxSet, chacun ? son propre id de palette, et je commence ? les rentrer en 0x4000 puis le prochain sera en 0x4000+la taille des précédent sprites.
Et ensuite pour les afficher je fais :
Je décale donc de 64 pour le 2eme sprite, et de 128 pour le 3eme. Ce qui fait que la quatri?me étape d'animation du 1er sprite sera en 6, en 70 pour le 2?me et en 134 pour le 3?me.
Ca fonctionne au poil sous zsnes, sous bsnes j'ai un carré zébré ? la place de mon sprite de boulette, et sous no$snes le sprite de la boulette ne s'affiche pas du tout. 3 émulateurs différents et 3 rendus différents, je dois faire quelque chose de mal :(
Sous les 3 émulateurs par contre les 2 permiers sprites s'affichent sans probl?me.
Je s?che complétement, j'ai relu 15 fois la partie "Sprite un vram" du wiki (http://www.portabledev.com/wiki/doku.php?id=sprites_en#sprites_in_vram) et il y a quelque chose qui m'échappe c'est certain ???
Avec mes sprites de 16*16 je devrais ?tre dans ce cas l? :
char sprTiles[9]={0,2,4, 6,8,10, 12,14,32};
J'ai essayé avec des tas d'offset différents, avec des adresses mémoires différentes, et le meilleur rendu que j'ai obtenu c'est avec le code indiqué plus haut, malheureusement il n'y a que zsnes qui semble en vouloir :-\
Merci d'avance pour votre aide !
Je vous soumets un nouveau probl?me sur lequel je bute en ce moment.
J'ai 3 sprites pour l'instant, un monstre, un ours et une "boulette". Je charge donc 3 images bmp, chacune des images contenant 9 étapes d'animation différentes (exactement comme dans l'exemple AnimatedSprite).
Donc pour charger mes sprites je fais la chose suivante
Code Sélectionner
char sprTiles[9]={0,2,4, 6,8,10, 12,14,32}; // Remeber that sprites are interleave with 128 pix width,
oamInitGfxSet(&gfxpsrite, (&gfxpsrite_end-&gfxpsrite), &palsprite, 0, 0x4000, OBJ_SIZE16);
oamInitGfxSet(&gfxpours, (&gfxpours_end-&gfxpours), &palours, 1, 0x4000+(&gfxpsrite_end-&gfxpsrite), OBJ_SIZE16);
oamInitGfxSet(&gfxpboulette, (&gfxpboulette_end-&gfxpboulette), &palboulette, 2, 0x4000+(&gfxpsrite_end-&gfxpsrite)+(&gfxpours_end-&gfxpours), OBJ_SIZE16);
Je fais donc 3 oamInitGfxSet, chacun ? son propre id de palette, et je commence ? les rentrer en 0x4000 puis le prochain sera en 0x4000+la taille des précédent sprites.
Et ensuite pour les afficher je fais :
Code Sélectionner
monster.gfx_frame = sprTiles[monster.anim_frame + monster.state*FRAMES_PER_ANIMATION ];
monster2.gfx_frame = 64+sprTiles[monster2.anim_frame + monster2.state*FRAMES_PER_ANIMATION ];
boulette.gfx_frame = 128+sprTiles[boulette.anim_frame + boulette.state*FRAMES_PER_ANIMATION ];
oamSet(0, monster.x, monster.y, 3, monster.flipx, 0, monster.gfx_frame, 0);
oamSet(4, monster2.x, monster2.y, 3, monster2.flipx, 0, monster2.gfx_frame, 1);
oamSet(8, boulette.x, boulette.y, 3, boulette.flipx, 0, boulette.gfx_frame, 2);
Je décale donc de 64 pour le 2eme sprite, et de 128 pour le 3eme. Ce qui fait que la quatri?me étape d'animation du 1er sprite sera en 6, en 70 pour le 2?me et en 134 pour le 3?me.
Ca fonctionne au poil sous zsnes, sous bsnes j'ai un carré zébré ? la place de mon sprite de boulette, et sous no$snes le sprite de la boulette ne s'affiche pas du tout. 3 émulateurs différents et 3 rendus différents, je dois faire quelque chose de mal :(
Sous les 3 émulateurs par contre les 2 permiers sprites s'affichent sans probl?me.
Je s?che complétement, j'ai relu 15 fois la partie "Sprite un vram" du wiki (http://www.portabledev.com/wiki/doku.php?id=sprites_en#sprites_in_vram) et il y a quelque chose qui m'échappe c'est certain ???
Avec mes sprites de 16*16 je devrais ?tre dans ce cas l? :
CitationSimilarly, when using 16×16 sprites, there will be 8 sprites interleaved, and the ninth sprite will have to start after them at offset 1024C'est pour ça qu'on passe de 14 ? 32 dans le tableau des offset j'imagine :
char sprTiles[9]={0,2,4, 6,8,10, 12,14,32};
J'ai essayé avec des tas d'offset différents, avec des adresses mémoires différentes, et le meilleur rendu que j'ai obtenu c'est avec le code indiqué plus haut, malheureusement il n'y a que zsnes qui semble en vouloir :-\
Merci d'avance pour votre aide !