jerome674 a écrit:je ne suis pas parvenu a avoir une image claire comme toi Lyan :s (j'ai toujours du vert)
1. quels sont les octets que tu enlèves de ta palette ?
il commence bien par :
00 e0 03 00 00 01 04 00 0c 02 04 03 00 22 0c 14
et fini par :
bd 77 bd 77 9f 7f bd 7b bf 7b ff 63 de 7f ff 7f
C'est parce que tu n'es toujours pas calé sur le bon offset, tu prends un octet de trop dans ta palette ce qui fausse tout
Voilà la palette brute (sans header) :
http://www.sendspace.com/file/6quxh8Sur le screenshot du fichier avec header, j'ai surligné le bloc de données brutes de la palette
La flèche représente la taille hex du bloc surligné soit 0x200 octets = 512 octets comme te l'a indiqué Baha, c'est la taille d'une palette pour une image en 8 bit par pixel = soit 8bpp = soit 256 couleurs (puisqu'on a 2 octets attribués pour chaque couleur)
Si tu ne sais pas ou commence la palette après le header, voit directement en remontant à partir de la fin du fichier jusqu'à avoir le nombre d'octets correspondant (dans le cas ici présent c'est 0x200 pour la taille de ta palette) puisque ce dernier ne semble pas avoir d'autres données après les données brutes
jerome674 a écrit:2. Voici une seconde image avec le mot juste WARNING de marqué dessus, mais idem impossible à lire, je joins la tile, tilemap et palette, un des fichiers est à 0 octets.
http://www.mediafire.com/?57m1m5qhy2czpllparviens tu a afficher quelque chose ?
Voir quelque chose oui, mais pas forcément en clair, ce fichier doit être mappé quelque part ce qui pourrait donc lui donner tout son sens puisqu'il ne s'agit là que d'un amas de tiles en vrac a priori
Mais en revanche, de 1, il n'y a pas de compression, et de 2, la tilemap n'est pas dans cette archive (0 octet), elle se situe probablement ailleurs (par contre "où ?", la question reste entière)...
Rien ne laisse penser pour le moment que c'est forcément le mot "warning" qui y est ecrit, mais ça peut eventuellement etre le cas une fois ces tiles mappées comme il faut, faudrait griffonner tout ça et voir si tu sais ou se trouve ton "warning" dont tu parles à l'ecran, si ses tiles viennent bien de ce fichier
Si c'est bien le cas alors le fait de taper dedans (en gribouillant sur les tiles ou en les modifiant) se verra à l'ecran
jerome674 a écrit:3. dans ce fichier la map commence ou et s'arrête ou ?
Je vais plutôt reprendre l'autre fichier comme exemple, soit :
http://www.sendspace.com/file/fdk88rPetit rappel de ce que je disais dans mon post précédent :
La tilemap découpe ton image à l'ecran en tiles
En gros imagine que ton graphisme fasse tout l'écran de la NDS (enfin juste un des deux, celui du haut ou du bas peu importe) dont la résolution est 256x192 pixels
Si tu divises cet écran en tiles de 8x8 pixels tu vas donc obtenir 32 tiles sur la largeur et 24 sur la hauteur, soit 768 tiles en tout
32 tiles de large = 0x20 tiles de large
24 tiles de haut = 0x18 tiles de haut
(note que l'on retrouve ces valeurs dans le header du fichier)
768 tiles en tout = 0x300 tiles en tout
Sachant qu'on utilise dans notre tilemap 2 octets par tile, ça nous donne donc un bloc de données de
0x300 tiles * 2 octets = 0x600
0x600 sera donc la taille qu'occupera la tilemap pour mapper tout l'ecran
Là encore, en utilisant l'astuce de partir de la fin du fichier en remontant vers le debut, il suffit de surligner donc les 0x600 derniers octets pour localiser le debut des données brutes (donc sans le header) de ta tilemap et c'est ce que j'ai fait sur le screen ci-dessus
jerome674 a écrit:5. combien d'octets sont nécessaires pour aller chercher les tiles ? 1, 2 , + ?
Gné ??
Pourquoi veux-tu connaitre le nombre d'octets ?? oO
Une tile est "graphique", c'est à l'image qu'il faut se referer pour comprendre comment ça fonctionne dans un premier temps (pas besoin de te prendre la tete avec les octets)
Sinon après pour le nombre d'octets, tout dependra de la resolution... 8bpp ou 4bpp n'occuperont pas la même taille, et pour cause ils portent bien leurs noms de "bits par pixel", sachant que tes tiles font 8x8 pixels, à toi d'en déduire le reste
Mais méfie toi des modes d'affichages qui peuvent définir le classement des octets, et ces derniers, selon le cas ne se suivent pas toujours (mais bon de toute façon coté graphismes à moins que tu aies l'intention de programmer un truc auquel cas il faudra que tu etudies les divers formats d'images existant comme le BMP ou le PNG, tu n'auras pas besoin d'aller trifouiller dans les octets manuellement)
jerome674 a écrit:4. as tu un exemple de code permettant de lire la map et va chercher les bonnes tiles ?
Un exemple ?? quel exemple ?
Ta tilemap est elle même ton exemple
tu prends ta toute premiere valeur brute dedans, soit 0x0000, tu la decortiques en binaire selon le schéma que je t'ai donné plus haut soit :
Lyan53 a écrit:PPPPYXTTTTTTTTTT
P = numéro de la palette
Y = mirroir vertical
X = mirror horizontal
T = numéro de la tile
Et tu obtiens les données de ta 1ere tile à l'écran
Ensuite tu fais la même chose avec les suivantes et au fur et à mesure ton image sera reconstituée
Note que je me suis planté juste pour ce screenshot
dans l'ancien je n'avais pas affiché la tile 0x00 du coup j'ai décalé tout de +1 rapport aux vraies valeurs, au temps pour moi
La tile 0x00 dans ce cas est la couleur de transparence ou la couleur de fond (selon le cas), la j'en deduis donc en regardant dans la tilemap que les 70 (0x8C / 2 = 0x46 =70) premiere tiles de ton images sont la couleur de fond
Si on pousse un peu plus loin on a donc deux lignes de 32 tiles chacune en couleur de fond en haut de l'ecran et l'image commence sur la 3eme ligne à la 7eme tile
puisque 32 + 32 = 64
et 70 - 64 = 6
donc 6 tiles couleur de fond sur la 3eme ligne suivi de la premiere tile d'image en position 7
Mais sinon c'est simple, observe les données de ta tilemap et decortique-les y'a que comme ça que tu percuteras, de préference essaye de faire un screenshot in-game de l'image pour comparer
EDIT :
J'ai finalement pris le temps de faire une image plus explicite sur le début de ta map
En esperant que tu finisses par percuter parce que pour le reste je suis à cours d'explication là si tu ne piges pas ce qui s'y passe ^^