Développement SNES > PVSnesLib section Française

Texte sur image de fond

(1/2) > >>

juef:
Bonjour!
Je n'arrive pas ? mettre du texte par-dessus un background en mode 1 contenant une image, et j'apprécierais beaucoup un peu d'aide.

* Si je mets mon image de fond et mon texte sur le m?me background (0), alors je ne vois pas le texte, m?me si j'appelle consoleDrawText apr?s bgInitTileSet et bgInitMapSet.
* Si je mets mon image de fond sur BG0 et mon texte sur BG1, je peux discerner mon texte mais il y a beaucoup de garbage. En fait, il y en a d?s que je ne désactive pas BG1, m?me si je ne mets pas de texte. Est-ce que je dois "vider" la VRAM ou un truc du genre?Je peux évidemment attendre la suite des tutoriels sur le Wiki, j'ai l'impression que j'en ai encore beeeeeeeaucoup ? apprendre :)
Merci beaucoup!

alekmaul:
Les fonts pour les textes sont chargées sur le début de la mémoire VRAM, donc en 0x0000. Ton pb de garbage vient peut ?tre de l? .
Pour pouvoir t'aider, il me faudrait un extrait de ton code source, ça serait plus simple.

ccc:
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.

juef:
Merci ? vous deux pour vos réponses!

ccc: j'ai aussi des difficultés avec la palette et la couleur du texte. Si tu trouves quelque chose, je te prie de m'en faire part :)

alekmaul: c'est vrai que ça irait mieux! Si ça peut aider, je remarque que si je change mon image de fond (par exemple par celle de tes exemples en Mode 1), ça fonctionne. Mon image .bmp est en 8 bpp et board.pic fait 24 ko.


--- Code: (test.c) ---#include <snes.h>

extern char patterns, patterns_end;
extern char palette, palette_end;
extern char map, map_end;
extern char snesfont;

int main(void)
{
consoleInit();
consoleInitText(0, 0, &snesfont);

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...
consoleDrawText(10, 26, "This is a test!");

setMode(BG_MODE1,0);
bgSetDisable(2);

setBrightness(0xF);
while(1)
{
WaitForVBlank();
}
return 0;
}
--- Fin du code ---


--- Code: (data.asm) ---.include "hdr.asm"

.section ".rodata2" superfree

patterns:
.incbin "board.pic"
patterns_end:

.ends

.section ".rodata3" superfree

map:
.incbin "board.map"
map_end:

palette:
.incbin "board.pal"
palette_end:

snesfont:
.incbin "pvsneslibfont.pic"
snesfont_end:

.ends

--- Fin du code ---

ccc:
Salut Juef,


--- Code: ---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..
--- Fin du code ---

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 :

--- Code: ---consoleSetTextCol(RGB15(0,0,0), RGB15(31,31,31));
--- Fin du code ---
On devrait réussir ? obtenir quelque chose.

Navigation

[0] Index des messages

[#] Page suivante

Sortir du mode mobile