Menu

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.

Voir les contributions Menu

Sujets - ccc

#1
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
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 :


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 1024
C'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 !
#2
PVSnesLib section Française / Muti-Multitap ?
13 Août 2012 à 22:35:38
J'ai une petite question par rapport ? la gestion de plus de deux manettes via un multitap: dans a doc il est indiqué qu'on peut monter en gros jusqu'? 4 pads (cf http://www.portabledev.com/media/SNES/PVSnesLib/doc/a00023.html).
Je n'ai pas encore essayé mais comme je n'ai pas de probl?me avec 2 j'imagine que ça ne doit pas poser de probl?mes.
Mais voil?, serait-possible de gérer plus de 4 pads ? Certains jeux officiels permettent de jouer ? 5, et des hombrew permettent m?me de jouer ? 8 (http://arstechnica.com/gaming/2008/10/8-player-snes-game-load-up-on-spells-bring-your-friends/).
Le jeu que j'ai en t?te devrait permettre de jouer ? 16 en m?me (deux par manette !) mais pour ça il me faudrait pouvoir gérer 8 pads...

Serait-ce possible avec PVSnesLib ? Ou avec une future évolution de celle-ci  ::)?