Communauté PortableDev

Développement SNES => PVSnesLib section Française => Discussion démarrée par: juef le 03 Août 2012 à 16:48:12

Titre: Texte sur image de fond
Posté par: juef le 03 Août 2012 à 16:48:12
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.
Je peux évidemment attendre la suite des tutoriels sur le Wiki, j'ai l'impression que j'en ai encore beeeeeeeaucoup ? apprendre :)
Merci beaucoup!
Titre: Re : Texte sur image de fond
Posté par: alekmaul le 04 Août 2012 à 11:00:15
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.
Titre: Re : Texte sur image de fond
Posté par: ccc le 13 Août 2012 à 22:26:08
Juef en prenant comme base l'example Mode 1 Scroll http://www.portabledev.com/media/SNES/PVSnesLib/doc/a00003.html#a2 (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.
Titre: Re : Texte sur image de fond
Posté par: juef le 14 Août 2012 à 02:14:01
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) Sélectionner
#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;
}


Code (data.asm) Sélectionner
.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
Titre: Re : Texte sur image de fond
Posté par: ccc le 15 Août 2012 à 21:58:12
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.
Titre: Re : Texte sur image de fond
Posté par: juef le 15 Août 2012 à 22:17:20
Merci ccc pour ta réponse :)

J'aurais juré avoir essayé 0x1000 mais il semblerait bien que non, puisqu'effectivement, ça marche! Mais je suis un peu m?lé alors; j'avais essayé 0x4000 et 0x8000 car dans certains modes, ça doit ?tre aligné au 0x4000 pr?s. Mais dans ce cas-ci, 0x4000 et 0x8000 affichent aussi du garbage; pourtant, je suis bien loin de l'adresse de la police de caract?res, non?
Titre: Re : Texte sur image de fond
Posté par: ccc le 15 Août 2012 à 22:33:36
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  :-[
Titre: Re : Texte sur image de fond
Posté par: alekmaul le 17 Août 2012 à 06:41:08
0x8000 depasse le max autorisé. On peut pas aller au dela de 0x7fff.

Pour info, une nouvelle version de PVSnesLib est en approche, mais juste des bugs fixs, pas de nouveautés ( pas eu trop le temps avec le real staff et la neocompo ces derniers temps)