:: PlayerAdvance.org ::  

Précédent   :: PlayerAdvance.org :: > :: Développement Amateur :: > Aide au développement

Publicité

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 25/01/2012, 01h04   #1
Tannis Dragon
Membre
 
Date d'inscription: 04/07/2006
Messages: 25
Par défaut multi Map nds

Bonjour,
J'ai commencé a créer un jeu type RPG.
Sa entraîne donc à faire plusieurs Maps.
Mon perso pouvant aller et venir d'une map à une autre j'ai décidé de faire une structure Map avec dedans : le numéros de ma Map ainsi que l'image de la Map à afficher.
De la je fais un tableau de ma structure Map.
Au départ j'ai fais un pointeur dans cette structure sur la structure donné par PAGFX : PAGFX_STRUCT

Code:
typedef struct {
int NumMap;
PAGfx_struct *PCarteBG01;
...
}Struct_Map;
Puis j'initialise en mettant :
Code:
Struct_Map TableauMap[50];
...
TableauMap [0].PCarteBG01 = &CarteBG01;
...
Code:
PA_LoadPal(PAL_BG0, carte.PCarteBG01->Palette)
PA_LoadBg(0, 0, carte.PCarteBG01->Tiles, 14208, carte.PCarteBG01->Map, BG_512X512, 0, 1)
que j'ai déchanté... Car sa ne marche.

Sa ne marchait pas avec PA_LoadTiledBg, je suis passé par les sous programmes.

Sachant qu'en mettant directement les données ca marche.
il m'affiche bien ma map dans les conditions ci-dessous :
Code:
PA_LoadPal(PAL_BG0, CarteBG01_Pal)
PA_LoadBg(0, 0, CarteBG01_Tiles, 14208, CarteBG01_Map, BG_512X512, 0, 1)
Les données passées en argument sont celle présente dans la structure dans all_gfx.c
Code:
PAGfx_struct CarteBG01 = {(void*)CarteBG01_Map, 4096, (void*)CarteBG01_Tiles, 14208, (void*)CarteBG01_Pal, (int*)CarteBG01_Info };
Mon erreur de compilation me donne : Pa_BgTiles.h:24: undefined reference to 'CarteBG01'
Cette erreur provient de l'initialisation de mon pointeur PAgfx_struct. Car si je l'initialise et que je met le code qui fonctionne pour afficher ma carte, l'erreur est la même.

Comment je peu le définir dans ma structure pour ensuite pouvoir mettre les cartes que je veux ?
(je compte faire un sous programme et passer le tableau par pointeur de ma structure, ainsi que le numéros de ma Map à afficher)

Ma deuxième question serait : (autant en glisser une autre au passage )
y a t'il moyen de mettre un tableau d'objet (de type class) dans la ROM (dans la µSD) plutot que dans la RAM ?
(y a bien l'idée de créer un fichier à part et d'ouvrir celui ci pour récupérer par pointeur les infos, mais sa va ramer je pense et par exemple dans zelda on a pas de fichier en plus à mettre avec le .nds donc il dois y avoir un moyen )

Apparement je dois créer mon tableau d'objet, puis le remplir entièrement (donc initialisé mon tableau), mais le simple fait de faire sa me met surement en pile mon tableau et donc je prend beaucoup de place pour rien... Je veux créer une 20 ene de coffre dans mon jeu, coffre fixe sur chaque carte, pour cela je vais créé un tableau d'objet.
Et donc quand je suis sur une carte pas besoin d'avoir en RAM tout les coffres du jeu, celui de la carte (si il y a) me suffira amplement.
Bien entendu j'ai des constantes, comme mes coffres ne bougent pas leurs coordonnées sont fixes. d'ou l'idée de l'implanter en ROM.

Merci

Post réédité le 25/01/2012 : avancé sur la question en utilisant les sous programmes de PA_LoadTiledBg. Mais toujours un problème sur l'implantation dans l'argument des fonctions à l'aide de ma structure Map.

Dernière modification par Tannis Dragon ; 25/01/2012 à 15h36.
Tannis Dragon est déconnecté   Réponse avec citation

Publicité

Vieux 12/02/2012, 15h57   #2
Tannis Dragon
Membre
 
Date d'inscription: 04/07/2006
Messages: 25
Par défaut

Bonjour,

Je vais garder ma solution intermédiaire, n'ayant pas de réponse pour mon sujet.

Il aurait été naturelle que je mette ici cette solution intermédiaire mais comme personne n'est intéréssé par le sujet pour surement divers motif qui leurs est propre, je vais donc m'épargner cette peine de l'écrire.

Je vais donc cloturer ici même ce topic.

Cordialement.
Tannis Dragon est déconnecté   Réponse avec citation
Vieux 13/02/2012, 02h00   #3
t4ils
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Morangis ( 91 )
Messages: 2 752
Voir les codes amis Wii
Par défaut

Apparemment, il y a tout de même eu 155 lecture à ton sujet (au moment où je rédige).
Je suis désolé que nous n'ayons pu t'apporter de solution, moi même j'avoue sécher sur ce sujet, je ne pratique plus PaLib depuis plusieurs année maintenant, et encore moins le C
__________________
Un renard, en plus de voler, ca code !

t4ils est déconnecté   Réponse avec citation
Vieux 13/02/2012, 13h41   #4
Cid2Mizard
Membre confirmé
 
Date d'inscription: 20/11/2007
Localisation: Maubeuge (59)
Messages: 223
Par défaut

Moi j'aurai utilisé PA_LoadBackground(ecran, bg, &MA_MAP);, il te suffit d'initialiser ta plus grosse map au chargement (celle qui a le plus de tiles) et ensuite tu charges n'importe laquelle dessus.
__________________
www.nintendomax.com
Nintendomax.com 100% hack - 0% warez
Cid2Mizard est déconnecté   Réponse avec citation
Vieux 14/02/2012, 22h50   #5
Tannis Dragon
Membre
 
Date d'inscription: 04/07/2006
Messages: 25
Par défaut

Citation:
Envoyé par Cid2Mizard Voir le message
Moi j'aurai utilisé PA_LoadBackground(ecran, bg, &MA_MAP);, il te suffit d'initialiser ta plus grosse map au chargement (celle qui a le plus de tiles) et ensuite tu charges n'importe laquelle dessus.
Je vois, idée intéressante, cela implique que je puisse faire un pointeur sur mon tableau et que PA_LoadBackground le prenne. J'essayerai

Actuellement j'ai fait par switch (num_carte) et dans le switch j'utilise PA_LoadTiledBg. Mes cartes sont assez grosse dans l'ensemble. plusieurs de 512x512. Mais j'ai un problème avec mon système qui n'est surement pas dû au switch....

J'ai fait 2 MAP de 512x512 de 4 background (BG0 à BG3) chacunes. La première s'affiche bien au démarage du jeu. Mais quand je passe sur ma 2 eme MAP de 512x512 (toujours chargé avec PA_LoadTiledBg dans mon switch) j'ai un écran noir, mon sprite plante et sur l'écran du haut il me marque qu'il me manque 9 block. Problème que je n'ai plus quand je supprime le chargement des BackGrounds BG0 de mes Maps.

Pourtant, normalement je ne fais que réécrire dans la Vram de nouvelle carte, il ne devrait pas y avoir un problème de block (que je pense du à un manque de mémoire VRAM).

Où j'ai abusé du Tas... je créer des tableaux dans le tas d'objets, que je détruis pour en refaire d'autre de taille différentes (c'est mon tableau d'objet gérant les coffres et objet bloquant certain chemin). Je charge ces tableaux (ainsi que leur destruction avec delete [ ] )dans mon switch après le chargement de mes background.

Si quelqu'un a une idée ou a déja eu le tour

Merci t4ils, je n'en veux à personne en particulier tu sais. J'ai même pensé que le site étais abandonné

Moi même j'ai commencé avec des bases du c++ et j'utilise le tutaux de palib pour m'aider et j'attaque un RPG (je ne peu pas dire que je prend le plus facile). Mais tant que j'ai la motivation j'avance

Finalement je vais continuer a le consulter si d'autre réponses viendraient s'ajouter. Merci de m'avoir répondu.
Tannis Dragon est déconnecté   Réponse avec citation
Vieux 14/02/2012, 23h20   #6
Dr.Vince
Administrateur
 
Date d'inscription: 10/11/2005
Messages: 4 939
Voir les codes amis Nintendo DS Voir les codes amis Wii
Par défaut

bah comme l'a dit t4ils le dev NDS est plus trop d'actualité, le dev tout court d'ailleurs sur PA....

sinon tu peux t'abonner à la discussion pour recevoir des notifications par mails en cas de nouvelles réponses
__________________
Projets Abandonnés: [Arcomage Advance] [Puzznic] [PA Card Games] [Blob Runner]
Projet en cours: [Ne plus abandonner de projet...]
Dr.Vince est déconnecté   Réponse avec citation
Vieux 14/02/2012, 23h24   #7
jujurackham
Membre confirmé
 
Date d'inscription: 26/11/2005
Localisation: Rouen, France
Messages: 798
Par défaut

Citation:
Envoyé par Tannis Dragon Voir le message
Merci t4ils, je n'en veux à personne en particulier tu sais. J'ai même pensé que le site étais abandonné
Je ne vois pas pourquoi

Edit:
Mince, 4 min entre deux posts consécutifs, l'activité vient d'augmenter drastiquement!
__________________
[Projet GBA] Don't Erase Me !
jujurackham est déconnecté   Réponse avec citation
Vieux 15/02/2012, 17h07   #8
Cid2Mizard
Membre confirmé
 
Date d'inscription: 20/11/2007
Localisation: Maubeuge (59)
Messages: 223
Par défaut

Citation:
Envoyé par Tannis Dragon Voir le message
Je vois, idée intéressante, cela implique que je puisse faire un pointeur sur mon tableau et que PA_LoadBackground le prenne. J'essayerai

Actuellement j'ai fait par switch (num_carte) et dans le switch j'utilise PA_LoadTiledBg. Mes cartes sont assez grosse dans l'ensemble. plusieurs de 512x512. Mais j'ai un problème avec mon système qui n'est surement pas dû au switch....

J'ai fait 2 MAP de 512x512 de 4 background (BG0 à BG3) chacunes. La première s'affiche bien au démarage du jeu. Mais quand je passe sur ma 2 eme MAP de 512x512 (toujours chargé avec PA_LoadTiledBg dans mon switch) j'ai un écran noir, mon sprite plante et sur l'écran du haut il me marque qu'il me manque 9 block. Problème que je n'ai plus quand je supprime le chargement des BackGrounds BG0 de mes Maps.

Pourtant, normalement je ne fais que réécrire dans la Vram de nouvelle carte, il ne devrait pas y avoir un problème de block (que je pense du à un manque de mémoire VRAM).

Où j'ai abusé du Tas... je créer des tableaux dans le tas d'objets, que je détruis pour en refaire d'autre de taille différentes (c'est mon tableau d'objet gérant les coffres et objet bloquant certain chemin). Je charge ces tableaux (ainsi que leur destruction avec delete [ ] )dans mon switch après le chargement de mes background.

Si quelqu'un a une idée ou a déja eu le tour

Merci t4ils, je n'en veux à personne en particulier tu sais. J'ai même pensé que le site étais abandonné

Moi même j'ai commencé avec des bases du c++ et j'utilise le tutaux de palib pour m'aider et j'attaque un RPG (je ne peu pas dire que je prend le plus facile). Mais tant que j'ai la motivation j'avance

Finalement je vais continuer a le consulter si d'autre réponses viendraient s'ajouter. Merci de m'avoir répondu.
C'est un dépassement de mémoire, je suis prêt à parier que ta 1ere MAP de 512x512 contient plus de tiles que la 2ème que tu charges, du coup elle est trop grosse pour rentrer dans l'espace alloué par la première. D'où l’intérêt et peu importe la méthode que tu utilises, d'allouer la map qui prend le plus d'espace en premier, tu n'as juste qu'à charger la plus gourmande et même pas obligé de l'affiché hein !
__________________
www.nintendomax.com
Nintendomax.com 100% hack - 0% warez
Cid2Mizard est déconnecté   Réponse avec citation
Vieux 15/02/2012, 18h53   #9
Tannis Dragon
Membre
 
Date d'inscription: 04/07/2006
Messages: 25
Par défaut

Citation:
Envoyé par Cid2Mizard Voir le message
C'est un dépassement de mémoire, je suis prêt à parier que ta 1ere MAP de 512x512 contient plus de tiles que la 2ème que tu charges, du coup elle est trop grosse pour rentrer dans l'espace alloué par la première. D'où l’intérêt et peu importe la méthode que tu utilises, d'allouer la map qui prend le plus d'espace en premier, tu n'as juste qu'à charger la plus gourmande et même pas obligé de l'affiché hein !
C'étais bien dans ma première idée d'un dépassement de mémoire Vram. Mais je t'aurais déconseillé de parier

J'ai vérifié l'information : ma première carte compte au total 872 Tiles (j'ai compté les 4 backgrounds) et ma deuxiéme carte compte au total 736 Tiles (pareils en comptant les 4 background). Il me semble que le Max de tiles par background est de toute facon de 1024 tiles.
Donc je charge bien celle qui a le plus de Tiles en premier.

Le background de ma MAP 1 BG0 contient 222 tiles, le background de ma MAP 2 BG0 en contient que 1 (en faite j'efface BG0 avec car je n'ai rien a mettre sur celle la pour ma MAP 2). Pourtant je n'ai plus l'erreur quand j'enleve mon BG0 de ma Map 2 qui ne contient qu'une seule tile.

Je vais essayer de refaire mon programme en implantant que mon sprite, mes 2 cartes et le passage de ma carte en simplifié pour voir si j'ai le même problème. Bon en refaisant mon prog et en affichant que les 2 cartes (avec le bouton L et R) sa plante. Sa ne plante pas de ma Map 2 a ma Map 1 mais quand je repasse de Map 1 à Map 2 la j'ai l'erreur.

Je ne sais pas comment Palib gère l'adressage des Maps. D'après ce que j'ai vue il y a plusieurs types de configuration de la Vram (A,B,C,D...) et les adresses qui lui sont associés (comme la Vram A pour généralement les Map tiles sur les 4 Backgrounds sans rotation ce qui est mon cas)
http://www.dev-scene.com/NDS/NDS_Tutorials_VramTable

En ce qui concerne palib je pensais qu'il copiait le tileset et la map après avoir effacé le contenu de la ram aux mêmes adresses pour chaque background. comme le numéros des tiles redémarre à 0 dans la map pour chaque map créé avec PAGFX, il ne devrait pas mettre mes tiles à la queu le le.

J'ai tenté la programmation sans la palib, j'arrivais a afficher ma map mais j'avais quelques Tiles qui foiraient... Je n'ai pas trouvé la raison, j'ai abandonné au bout de 1 mois car palib me permettais d'afficher ma carte tout de suite (la première Map) sans erreur et de gagner du temps sur les autres points techniques de mon jeu.

Pour Dr.Vince :
Je n'avais pas envisagé ca sous cette angle, je comprend mieux la raison pour laquelle je n'avais pas de réponse. Je suppose que les créateurs de jeux amateur sont passés sur une autre console plus puissante (genre xbox ou autre).

Pour jujurackham :
Je le remercié pour avoir tout de même réfléchi a mon problème puisqu'il a séché sur le sujet.
Le faite qu'il a souligné les 155 lectures du sujet et d'avoir été un peu vexé malgrés tout de ne pas avoir de réponse, fais que j'ai tout de même précisé que je n'en voulais à personne sur la même réflexion que toi "je ne vois pas pourquoi".
Je pensais que le site était abandonné car 155 lectures sans réponse, je me suis dis que c'étais moi et peut être quelques personnes intéréssés par une réponse qui avaient fait grimper le compteur en regardant tout les jours

Merci pour vos réponses, même si ce n'est plus d'actualité

Dernière modification par Tannis Dragon ; 15/02/2012 à 19h51.
Tannis Dragon est déconnecté   Réponse avec citation
Vieux 15/02/2012, 23h20   #10
Cid2Mizard
Membre confirmé
 
Date d'inscription: 20/11/2007
Localisation: Maubeuge (59)
Messages: 223
Par défaut

Citation:
Envoyé par Tannis Dragon Voir le message
C'étais bien dans ma première idée d'un dépassement de mémoire Vram. Mais je t'aurais déconseillé de parier

J'ai vérifié l'information : ma première carte compte au total 872 Tiles (j'ai compté les 4 backgrounds) et ma deuxiéme carte compte au total 736 Tiles (pareils en comptant les 4 background). Il me semble que le Max de tiles par background est de toute facon de 1024 tiles.
Donc je charge bien celle qui a le plus de Tiles en premier.

Le background de ma MAP 1 BG0 contient 222 tiles, le background de ma MAP 2 BG0 en contient que 1 (en faite j'efface BG0 avec car je n'ai rien a mettre sur celle la pour ma MAP 2). Pourtant je n'ai plus l'erreur quand j'enleve mon BG0 de ma Map 2 qui ne contient qu'une seule tile.
On ne compte pas comme ça les tiles pour ta map, mais par tranche de 128. En gros, une map de 222 tiles va allouer 256 c'est à dire 2/8 de la capacité totale de la DS, si dessus tu charges un BG de 257 tiles il lui faudra 384 tiles cad qu'il lui faut allouer 3/8 donc dépassement de mémoires.

Bien entendu ce que tu alloues au chargement de ta rom pour chaque couche de BG est définitif, donc si tu travailles avec 4 BG, tu vas devoir bien gérer le partage de mémoire entre chaque BG. Par exemple BG0 + BG1 + BG2 + BG3 = 8/8 et encore j'imagine qu'il faut pas dépasser 7/8 histoire de laisser de la place pour ton code. Donc si tu as dans l'ordre (BG0 + BG1 + BG2 + BG3) qui font 2/8 + 1/8 + 3/8 + 1/8, tu ne peux pas remplacer tes maps par des maps qui demande plus d'allocation de mémoire que la première que tu l'as chargé, c'est as dire que tu ne peux charger une map qui fait 3/8 sur le BG0 qui est alloué au départ à 2/8.

J'explique mal mais tu finiras par comprendre. Et T4ils te mens (il nous ment à tous*), il est au courant de ces histoires de VRAM.
__________________
www.nintendomax.com
Nintendomax.com 100% hack - 0% warez

Dernière modification par Cid2Mizard ; 15/02/2012 à 23h33.
Cid2Mizard est déconnecté   Réponse avec citation
Vieux 16/02/2012, 02h32   #11
t4ils
Membre confirmé
 
Date d'inscription: 10/11/2005
Localisation: Morangis ( 91 )
Messages: 2 752
Voir les codes amis Wii
Par défaut

Citation:
Envoyé par Cid2Mizard Voir le message
Et T4ils te mens (il nous ment à tous*), il est au courant de ces histoires de VRAM.
J'ai arrêté y'a bien longtemps, je ne suis plus trop au courant de la technicité inhérente à PA Lib et la NDS

Citation:
Je suppose que les créateurs de jeux amateur sont passés sur une autre console plus puissante (genre xbox ou autre).
Je suis passé sur Android personnellement
__________________
Un renard, en plus de voler, ca code !

t4ils est déconnecté   Réponse avec citation
Vieux 16/02/2012, 19h26   #12
Tannis Dragon
Membre
 
Date d'inscription: 04/07/2006
Messages: 25
Par défaut

Citation:
Envoyé par Cid2Mizard Voir le message
On ne compte pas comme ça les tiles pour ta map, mais par tranche de 128. En gros, une map de 222 tiles va allouer 256 c'est à dire 2/8 de la capacité totale de la DS, si dessus tu charges un BG de 257 tiles il lui faudra 384 tiles cad qu'il lui faut allouer 3/8 donc dépassement de mémoires.

Bien entendu ce que tu alloues au chargement de ta rom pour chaque couche de BG est définitif, donc si tu travailles avec 4 BG, tu vas devoir bien gérer le partage de mémoire entre chaque BG. Par exemple BG0 + BG1 + BG2 + BG3 = 8/8 et encore j'imagine qu'il faut pas dépasser 7/8 histoire de laisser de la place pour ton code. Donc si tu as dans l'ordre (BG0 + BG1 + BG2 + BG3) qui font 2/8 + 1/8 + 3/8 + 1/8, tu ne peux pas remplacer tes maps par des maps qui demande plus d'allocation de mémoire que la première que tu l'as chargé, c'est as dire que tu ne peux charger une map qui fait 3/8 sur le BG0 qui est alloué au départ à 2/8.

J'explique mal mais tu finiras par comprendre. Et T4ils te mens (il nous ment à tous*), il est au courant de ces histoires de VRAM.
J'ai refais un essai entre-temps, j'ai chargé mes 2 Maps avec que de BG1 a BG3, je suis passé de l'une à l'autre.
Map1 à Map2 pas de soucie
Map2 à Map1 pas de soucie
Map1 à Map2 (de nouveau) la il plante.

après le premier passage Map1 à Map2 sachant qu'il a donc réussie à chargé tout les tiles sans problème, c'est normale que je puisse repasser sur ma Map1 ensuite (car l'allocation est identique), mais pourquoi cette sa plante quand je veux retourner sur ma Map2 alors qu'il avait réussie à la chargé juste avant. Mon nombre de tiles n'a pas changé, il aurait alors du faire l'erreur des mon premier passage.
Ou il recharge à la suite les tiles qu'il a déjà chargé précédement avec PA_LoadTiledBg. Sa expliquerais tout.

Je vais revoir la place mémoire alloué pour les deux écrans et comparer la taille de mes cartes.

J'ai compris aussi ton expliquation sur les 1/8 etc... Pour ce qui est de ne pas prendre les 8/8 de la mémoire tu a raison, il faut éviter. Car la mémoire Vram comprend aussi BG/OBJ/2D/3D/Palette/Texture, donc on risque d'empiéter sur une autre partie, les sprites par exemple.

Je ne sais pas encore pourquoi tu compte les tiles sur 128 ni pourquoi tu fractionne la mémoire en 8, mais je vais faire des recherches.

Je n'ai pas d'éditeur de carte, donc a chaque moulinette de PAGFX il me recréer un tilset et repars de 0 sur chaque Map créé. Mes cartes sont variés (région désertique, montagneuse et autre...) ainsi que les intérieurs de maison. Cela va entrainer un nombre de tiles globales > 1024. Je ne peu donc pas charger un tilset une bonne fois pour toute et l'utiliser pour tout le jeu.

Bref, cela me donne tout de même des pistes pour trouver mon problème merci

Je me demande même si je ne vais pas retenter de faire l'affichage de mes maps en libnds. Je pourrais alors allouer un espace fixe pour mes maps et mes tiles et effacer cette espace pour charger mes maps qui suis.
Tannis Dragon est déconnecté   Réponse avec citation
Vieux 19/02/2012, 18h08   #13
Tannis Dragon
Membre
 
Date d'inscription: 04/07/2006
Messages: 25
Par défaut

Des nouvelles,

J'ai essayé de charger en premier mes cartes les plus volumineuses afin d'allouer par palib l'espace suffisante en mémoire.
Résultat : plantage des le démarrage.

J'ai vérifié la taille de mes cartes et celle des tiles en globalité par rapport a l'espace mémoire vram disponible. Sa devrait passer.

J'ai fini par essayer sans palib, en attribuant moi même l'espace dans lequelle je voulais mettre mes maps et tiles. Il charge toute mes cartes sans problème.

La premiere question que j'ai tout de même soulevé c'est la palette.
PAGFX créer mes 4 cartes avec 4 palettes différentes en commencant toujours sur mes premiers tiles de carte par 1,2,3.. (les premières couleurs)
hors les premières couleurs de ma carte 1 et mon tiles 1 ne sont pas les même que ma carte 2 tiles 1.
Dans mon premier test sans palib j'ai forcément eu des couleurs bizarres. J'ai du utiliser une palette commune pour mes 4 cartes avec PAGFX pour que sa soit affiché correctement.
Sinon la seul solution possible pour que les palettes ce conforme au tiles, se serait pour chaques valeurs de mon tableau de tiles enregistré dans la VRAM de mettre un offset par rapport à la palette. Bien entendu a mettant chaque palette bout à bout.
Cela apporte que mes cartes ne devront pas a eux 4 dépasser 256 couleurs. Mais rien n'empeche apparement dans PAGFX de mettre 4 cartes de 256 couleur et utiliser palib pour les afficher...(est qu'il y aurait une mémoire caché pouvant contenir 768 couleurs de plus )

Naturellement j'ai essayé de mélangé avec la palib, plus rien ne marche. Normal puisque les informations de cartes sont stockés dans des tableaux de structure interne au systéme palib.

En gros soit je continue en palib et j'essaye de comprendre comment c'est fait pour mettre en mémoire, soit je fais sans palib et je me retape toute les fonctions...

Un autre petit problème que j'ai... (je sais sa commence a faire beaucoup ). Je vous met le code :
Code:
int main(int argc, char ** argv)
{

	irqInit();
	irqEnable(IRQ_VBLANK);

	int i ;
	
	//active Vram A et les ecran BG0 a BG3
	videoSetMode(MODE_0_2D | DISPLAY_BG0_ACTIVE | DISPLAY_BG1_ACTIVE | DISPLAY_BG2_ACTIVE | DISPLAY_BG3_ACTIVE);
	vramSetBankA(VRAM_A_MAIN_BG_0x06000000);
             vramSetBankB(VRAM_B_MAIN_BG);

             // pointeur sur la palette
	u16* paletteMemory = (u16*)PALETTE;
	
	// carte 512x512, 256 couleurs
	BG0_CR = BG_64x64 | BG_COLOR_256 | BG_MAP_BASE(0) | BG_TILE_BASE(3);
	BG1_CR = BG_64x64 | BG_COLOR_256 | BG_MAP_BASE(4) | BG_TILE_BASE(6);
	BG2_CR = BG_64x64 | BG_COLOR_256 | BG_MAP_BASE(8) | BG_TILE_BASE(9);
	BG3_CR = BG_64x64 | BG_COLOR_256 | BG_MAP_BASE(12) | BG_TILE_BASE(12);
 

	//pointeur d'adresse memoire screen base et tiles base
	u8* tileMemory = (u8*)BG_TILE_RAM(3);
	u16* mapMemory = (u16*)BG_MAP_RAM(0);

             // mise en memoire de la carte, tile et palette
	for(i = 0; i < 64 * 64; i++)
		mapMemory[i] = CarteBG01_Map[i];

             for(i = 0; i < 16512; i++)
		tileMemory[i] = CarteBG01_Tiles[i];	

	for(i = 0; i < 95; i++)
		paletteMemory[i] = PalMap_Pal[i];	
	
	tileMemory = (u8*)BG_TILE_RAM(6);
	mapMemory = (u16*)BG_MAP_RAM(4);	

	for(i = 0; i < 64 * 64; i++)
		mapMemory[i] = Map2BG1_Map[i];

	for(i = 0; i < 17920; i++)
		tileMemory[i] = Map2BG1_Tiles[i];		

	tileMemory = (u8*)BG_TILE_RAM(9);
	mapMemory = (u16*)BG_MAP_RAM(8);	

	for(i = 0; i < 64 * 64; i++)
		mapMemory[i] = Map2BG2_Map[i];

	for(i = 0; i < 16896; i++)
		tileMemory[i] = Map2BG2_Tiles[i];	

	tileMemory = (u8*)BG_TILE_RAM(12);
	mapMemory = (u16*)BG_MAP_RAM(12);	

	for(i = 0; i < 64 * 64; i++)
		mapMemory[i] = CarteBG31_Map[i];

	for(i = 0; i < 46592; i++)
		tileMemory[i] = CarteBG31_Tiles[i];	
	

	// boucle infinie
	while (1)
	{

	swiWaitForVBlank();  // rafraichissement
	
	}
	
	return 0;
} // End of main()
Ce programme s'affiche sur desmune-win32, mais ni sur NoGBA$ ni sur la nds. Je ne sais pas pourquoi. Mais je vais continuer à chercher. Si quelqu'un a une idée (au ancien pour qui sa remonte loin )

merci

Dernière modification par Tannis Dragon ; 21/02/2012 à 18h17.
Tannis Dragon est déconnecté   Réponse avec citation
Vieux 22/02/2012, 20h30   #14
Tannis Dragon
Membre
 
Date d'inscription: 04/07/2006
Messages: 25
Par défaut

Bonsoir à tous,
J'ai préféré répondre que rajouter à la suite de mon dernier post.
Petit progrès pour ma part mais inexpliquable pour l'instant

j'arrive maintenant à afficher sur NoGBA, je n'ai pas changé grand chose mise à part le faite d'être passé par la DMA pour charger mes tiles et mes maps. (Avec les maps j'avais encore le problème, mais avec les tiles sa marche...)

je n'arrive pas encore à trop saisir le fonctionnement de la DMA, pour afficher ma carte sur 512x512 j'ai utilisé :

Code:
dmaCopyHalfWords(3,(u16*)Carte_Map,(u16*)BG_MAP_RAM(12),(128*128));
le truc bizarre c'est que je pensais devoir mettre (64*64) comme taille de ma carte, mais il n'affiche que la moitié de celle ci... j'ai donc doublé, je me demande si ce n'est pas du au faite que dans le programme la libnds prend la taille et la divise par 2 (size>>1).

J'ai essayé avec la plus grosse carte qui se trouve en bout de mémoire VRAM, j'essayerais avec toute les cartes et je modifierais le post (si il n'y a pas d'autres messages que le mien) pour dire si sa marche ou pas

Si sa marche... il me restera à faire tout plein de fonction qui étaient sympathique sur palib

Réédit :

Bien j'ai essayé avec les 4 cartes les plus lourde sa passe sur No GBA et sur ma ds, parcontre je pensais que engine A était l'écran du bas... Car la il m'affiche les cartes sur l'écran du haut... Je verrais sa en temps et en heure. Je pense avoir fait de gros progrès sur mon développement. Il faut que je refais les fonctions pour écrire sur l'écran ce qui aide bien pour débugger le prog.

Dernière modification par Tannis Dragon ; 23/02/2012 à 18h27.
Tannis Dragon est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Tags
map, multiple, tableau

Publicité



Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
PSP Jour 10 : Collisions entre un sprite et une map pjeff Tutoriels 10 19/10/2013 16h32
NDS création skin pour loader NDS EZ4 Lite solofordoe Articles et Tutos 20 04/07/2009 00h29
PSP Jour 11: charger une map externe creer avec GbaGraphics pjeff Tutoriels 1 29/07/2008 12h47
Nouveau gestionnaire de roms multi plateforme naparuba [NDS] Divers 64 11/08/2007 04h55
Emulateur Genesis pour NDS ryo [NDS] Divers 15 01/02/2006 16h20


Fuseau horaire GMT +2. Il est actuellement 15h45.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #16 par l'association vBulletin francophone
Design par Ass-Itch, DJP et Dr.Vince