Voir la version complète : [GBA][Aide] Tiles : saturation mémoire
Dr.Vince
31/12/2005, 17h21
Salut les codeurs GBA !!
bon voilà, j'ai un problème avec un de mes projets, à priori je sature la mémoire (VRAM ??) des tiles.
Je suis en mode 0, j'utilses les 4 BG en mode 256 couleurs et j'utilises la librairie HAM, ce qui veux dire que je n'ai pas forcément la main sur tout...<_<
J'aimerais donc avoir de plus ample informations sur la gestion de la mémoire VRAM
J'ai trouvé ce petit schéma là :
http://img391.imageshack.us/img391/6162/vram3ye.th.png (http://img391.imageshack.us/my.php?image=vram3ye.png)
Voilà quelques questions en vrac également :
- combien de ram je dispose pour mes tiles pour chaque BG ??
- quelle est la place occupée par une tile en mémoire ??
- à quoi sert exactement l'option CBB ??
Merci d'avance !
Je m'interresse a ton post!
J'utilise HAM et en mode 0 je n'arrive pas a afficher plus de 2 background sans une saturation de memoire...
Pourtant il me semblait que les palettes et les tiles étaient gérés chacune de leur coté pour chaque background...
Lorsque je lance l'emulation j'ai un message d'erreur de type "VRAM memory full"...
Je pense que c'est le même probleme que toi non?
Si toutes les tiles qui compose vos BG sont uniques c'est normal que ça sature...
Alekmaul
31/12/2005, 18h24
Comme le montre ton dessin Dr Vince, tu as au maxw 64Ko, auquel tu dois enlever tes BGs, donc effectivement, si tu as des tiles uniques pour chaque BG, tu dois certainement saturer la mémoire ...
Toutes les infos ici, sur un ch'tit site de rien du tout :whst: http://www.portabledev.com/pages/gba/tutoriels/le-mode-tile/organisation-mE9moire-vidE9o.php
Salut les codeurs GBA !!
avé :)
bon voilà, j'ai un problème avec un de mes projets, à priori je sature la mémoire (VRAM ??) des tiles.
Je suis en mode 0, j'utilses les 4 BG en mode 256 couleurs et j'utilises la librairie HAM, ce qui veux dire que je n'ai pas forcément la main sur tout...<_<
n'oublie pas que tu peut utiliser le meme charblock pour tes 4 bg ca a rien a voir avec le nombre de bg.
si tu copie ton tilset dans le chablock 0 tu peut deborder sur les autres sans probleme.
tu as 1024 tiles disponibles en mode 256 couleurs et 2048 tiles en mode 16 couleurs.
- combien de ram je dispose pour mes tiles pour chaque BG ??
la vram fait 64 ko et elle est divisée en 4 charblocks de 16 ko chacun pour tes tiles
- quelle est la place occupée par une tile en mémoire ??
chaque pixel de tile en mode 256 couleurs fait 1 octet et en mode 16 couleurs il fait 4 bits
donc :
8*8*1 = 64 octet par tile en mode 256 couleurs
8*8*0,5 = 32 octet par tile en mode 16 couleurs
- à quoi sert exactement l'option CCB ??
je sais pas desolé :(
[edit] et sachant qu'un ecran entierrement composé de tiles differants te prend 600 tiles tu sais que tu peut carrement remplir 3 ecrans si tu est en mode 16 couleurs ;) alors que tu peut meme pes en remplir 2 en mode 256 couleurs :(
Dr.Vince
31/12/2005, 18h26
Je m'interresse a ton post!
J'utilise HAM et en mode 0 je n'arrive pas a afficher plus de 2 background sans une saturation de memoire...
Pourtant il me semblait que les palettes et les tiles étaient gérés chacune de leur coté pour chaque background...
Lorsque je lance l'emulation j'ai un message d'erreur de type "VRAM memory full"...
Je pense que c'est le même probleme que toi non?
Avec 2 BG faut le faire quand même !!!
La piste émise par Phantom doit être la bonne.
Par contre omg, il n'y a qu'une seule palette pour tout tes BG.
Si toutes les tiles qui compose vos BG sont uniques c'est normal que ça sature...
bien sur que nan Phantom !! tu m'as pris pour un newb ?? :hum:
Mais tu n'est pas loin, car en fait j'ai besoin de réquisitionner un BG avec que des tiles uniques car je dessine dynamiquement mes tiles dessus.
C'est pour cette raison que je veux connaître les contraintes hardware de la GBA pour savoir si ce que je veux faire est possible, en essayant d'optimiser ce qui peut l'ête
Dr.Vince
31/12/2005, 19h49
avé :)
tu as 1024 tiles disponibles en mode 256 couleurs et 2048 tiles en mode 16 couleurs.
la vram fait 64 ko et elle est divisée en 4 charblocks de 16 ko chacun pour tes tiles
En fait, il faut pas retirer 2 Ko par MAP de taille 256*256 ??? ce qui fait que je n'ai pas tout à fait 1024 tiles nan ??
ce qui veut dire que j'ai que 56 Ko pour mes tiles soit :
(56*1024)/64 = 896 TILES ???
Avec 2 BG faut le faire quand même !!!
La piste émise par Phantom doit être la bonne.
Par contre omg, il n'y a qu'une seule palette pour tout tes BG.exact!
Me suis trompé![edit] et sachant qu'un ecran entierrement composé de tiles differants te prend 600 tiles tu sais que tu peut carrement remplir 3 ecrans si tu est en mode 16 couleurs alors que tu peut meme pes en remplir 2 en mode 256 couleurs Ok je comprends mieux! vais devoir bosser en 16 couleurs moi!
En fait, il faut pas retirer 2 Ko par MAP de taille 256*256 ??? ce qui fait que je n'ai pas tout à fait 1024 tiles nan ??
ce qui veut dire que j'ai que 56 Ko pour mes tiles soit :
(56*1024)/64 = 896 TILES ???
si excuse moi il y a les maps a retirer, selon la taille de la map et le nombre de bits des tiles, 2ko en 256x256 ou 4 en 512x512 ou 512x256.
Peut-on utiliser une palette pour chaque background?
(si les palettes sont en 16 couleurs evidement...)
Il me semble que oui?
Dr.Vince
31/12/2005, 20h45
bien sur que tu peux !!!
la palette utilisée est renseignée lors de la génération des fichiers C depuis tes images.
Tu peux donc même utiliser plusieur palettes de 16 couleurs par BG, l'info étant indiquée par le pixel
[EDIT] l'option CBB dans HAM permet de charger les tiles à la suite les unes des autres.
Si on positionne cette option à 1 alors les tiles de chaque BG seront alignés avec les Base Block. On perd donc de la place et cela limite le nombre de Tiles par BG surtout si on utilise tous les BG
[EDIT2] en tout cas merci Nes et Alek pour toutes ces infos. J'ai résolu (enfin plutôt contourné :p ) mon problème grace à ça !!!!
sur ce, je m'en vais réveilloner moi ;)
BON REVEILLON A TOUS !!!!!!!!
[EDIT3] ça fait plaisir de reparler prog GBA, ça faisait longtemps !! :)
en mode 0, on a pas seulement 512 tiles au lieu de 1024 ? C'est ce que j'avais appris dans les tuto que j'avais lu (je vérifierais). ou ptet que c'etait 512 par BG donc en mode 0 ça fait 4*512 et en mode 1 et 2 2*1024.
en mode 0, on a pas seulement 512 tiles au lieu de 1024 ? C'est ce que j'avais appris dans les tuto que j'avais lu (je vérifierais). ou ptet que c'etait 512 par BG donc en mode 0 ça fait 4*512 et en mode 1 et 2 2*1024.
ola ola japi, tu t'emporte la :)
les tiles n'ont rien a voir avec les bg mais quand tu definit un bg il doit savoir ou aller chercher les tiles en memoire video.
enfin tout ca c'est ecrit dans les posts un peu plus haut ;)
d'ailleur ca me rappel que edorul avais dit une connerie dans sont tuto a ce propos (ché pas si c'est celui la que tu as lu)
edit: oui voila j'ai retrouvé le texte
4) Le Mode 0
Le Mode 0 utilise des "Tiles" pour l'affichage de l'image. Le principe des "Tiles" est que l'écran est découpé en carrés de 8x8 pixels qui sont assemblés pour former l'écran. Ce qui signifie que l'on doit, au préalable, placer des bouts d'images de 8x8 pixels (les "Tiles") en mémoire vidéo. Alors, on met un tableau (la "Map") contenant les numéros des "Tiles" dans l'ordre d'affichage pour composer l'image en mémoire vidéo. Le processeur graphique utilise ce tableau pour "construire" l'affichage en fonctions des "Tiles" à afficher.
On peut avoir jusqu'à 1024 "Tiles" en 16 couleurs et jusqu'à 512 en 256 couleurs.
L'affichage peut être d'une des quatre dimensions suivantes: 256x256 pixels, 256x512 pixels, 512x256 pixels et 512x512 pixels.
Dans ce mode, la GBA peut superposer jusqu'à 4 de ces écrans composés de "Tiles": les "Background" numéros 0 à 3. La couleur 0 des "Tiles" est toujours transparente ce qui permet de voir les "Background" de dessous lors de superpositions. Par défaut, la GBA affiche au dessus le "Background" 3, puis le 2, le 1 et au dessus le 0. Mais, celà peut être changé facilement.
Chaque "Background" peut être controlé indépendamment: utiliser différentes "Maps" avec des "Tiles" différentes, être "Scollés" (horizontalement et verticalement), être affichés sous forme de mosaïque, disparaître ou apparaître progressivement ("Fading"),être semi-transparents ("Alpha Blended") et les "Tiles" peuvent être inversées (horizontalement et verticalement = "H&V Flipping of Tiles").
ah ouais, j'ai confondu avec les resolutions des GB en pixel, autant pour moi.
Et sinon non, c'est pas celui là que j'ai lu mais :
Programming The Nintendo Game Boy Advance: The Unofficial Guide by Jonathan S. Harbour et TONC si certains cherchent des tutos.
vBulletin® v.3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org