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

Messages - ccc

#16
:'( J'y arrive toujours pas. Je suis un boulet je crois bien  :-[
Voil? ce que je fais :
u16 adrenvramcopie=0x4000;
unsigned char palEntry;
WaitForVBlank();
setBrightness(0);
dmaCopyVram(&gfxpsrite, adrenvramcopie, sizeof(gfxpsrite));
dmaCopyVram(&gfxpours, adrenvramcopie+sizeof(gfxpsrite),sizeof(gfxpours));
dmaCopyVram(&gfxpboulette, adrenvramcopie+sizeof(gfxpsrite)+sizeof(gfxpours),sizeof(gfxpboulette));
palEntry = (128+0*16);
dmaCopyCGram(&palsprite, palEntry, OBJ_SIZE16);
palEntry = (128+1*16);
dmaCopyCGram(&palours, palEntry, OBJ_SIZE16);
palEntry = (128+2*16);
dmaCopyCGram(&palboulette, palEntry, OBJ_SIZE16);


Il n'y a plus d'oamInitGfxSet.
Maintenant mes sprites sont remplacés par des polices de caract?res  ;D
Par contre les palettes des sprites sont bien initilialisées je les retrouve dans no$sns.
Je garde bon espoir de comprendre un jour ceci dit  :)
#17
Merci pour ton aide ! Mais j'ai peur d'avoir encore plein de questions  :-[

Si oamInitGfxSet n'est appelé qu'une seule fois je dois mettre tous mes sprites dans la m?me image j'imagine. Est-ce qu'il y une r?gle particuli?re pour construire cette image ?

En fait je peux peut-?tre m'inspirer du code de likemario.c pour le découpage :
// Init Map to address 0x1000 and Copy Map to VRAM
    bgSetMapPtr(1, 0x1000, SC_64x32);
    for (i=0;i<31;i++) { // 128 pixel height -> 128/8 = 16 2400 / 8 = 300
        u8 *ptrMap  = &map + 300*i*2; // 300 = map size x *2 because each entry is 16bits length
        if (i>=16) ptrMap  = &map + 300*5*2; // Init anything else with white line
        u16 ptrVRAM = 0x1000+i*32; // screen begin to 0x1000
        dmaCopyVram(ptrMap, ptrVRAM, 32*2); // copy row to VRAM
        dmaCopyVram((ptrMap+32*2), (ptrVRAM+32*32), 32*2); // copy row to VRAM
    }

La c'est pour la map mais le m?me principe doit ?tre le m?me non ?

Bon je vais essayer de digérer tout ça  ;)
#18
Le forum m'en veut ça fait 4 fois que j'essaye de taper ma réponse :-(
Et ? chaque fois je raccourcis la taille de celle-ci.
Les infos sur les registres sont l? http://nocash.emubase.de/fullsnes.htm#snescontrollersmultiplayer5mp5fiveplayeradaptor
Pour faire vraiment court j'arrive pas ? tout saisir, j'esp?re que pour toi ça sera plus clair.

En tout cas il semble exister 4 registres de manettes (JOY1 ? JOY4) et ? priori tu n'en utilises que 2. A voir si une simple augmentation de la taille du tableau et de nombre de fois o? on parcourt la boucle suffirai (mais pas sur vu ce qu'il y a écrit dans la doc de nocash)

PS: il manque un "k" ? alekmaul dans le fichier pads.c
#19
Le probl?me ? mon avis de 0x4000 c'est que tu as déj? les Tiles ? cette adresse !
Pour le 0x8000 par contre l? je n'ai pas d'idée, je suis pas encore parfaitement au point avec la mémoire de la snes  :-[
#20
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 !
#21
Salut Juef,

bgInitTileSet(1, &patterns, &palette, 0, (&patterns_end - &patterns), (&palette_end - &palette), BG_16COLORS, 0x4000);
bgInitMapSet(1, &map, (&map_end - &map), SC_32x32, 0x0000); // J'ai essayé de changer 0x0000 par 0x4000 ou 0x8000 mais ce n'est gu?re mieux..


Ici tu initialises la Map en 0x0000. Ca ne doit pas ?tre bon car comme le disait alekmaul en 0x0000 c'est l'adresse o? sont stockées les caract?res. Reprend plutôt comme base, au moins pour les adresses, celle donnée dans l'exemple que j'ai cité :0x1000.

Pour les couleurs du texte je n'ai pas encore essayé mais en faisait quelque chose comme ça :
consoleSetTextCol(RGB15(0,0,0), RGB15(31,31,31));
On devrait réussir ? obtenir quelque chose.
#22
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  ::)?
#23
Juef en prenant comme base l'example Mode 1 Scroll http://www.portabledev.com/media/SNES/PVSnesLib/doc/a00003.html#a2 j'ai réussi ? coller du texte par dessus une image.
Il me reste des petites difficultées vis-?-vis de la couleur de celui ci (mon texte tout blanc est devenu noir puis vert apr?s bidouillage de la palette).
Il faut faire attention ? ne pas mettre le texte sur le m?me BG (0 pour le texte et 1 pour le fond/map dans l'exemple) et comme le dit alekmaul ? ne pas réécrire sur des choses déj? existantes en mémoire.
#24
PVSnesLib section Française / Re : Merci! :D
13 Août 2012 à 22:19:27
Je me joins ? Juef pour les remerciements !
Merci alekmaul ! J'ai déj? un embryon de jeu que j'esp?re faire grandir dans les prochains mois ;-)
J'ai aussi plein de questions d'ordre technique mais je vais créer des posts pour chacune pour plus de lisibilité (si je me pose la question sans doute que d'autres aussi !)