Jump to content
Sign in to follow this  
manu-rid

problème d'affichage d'images

Recommended Posts

me revoilà avec un nouveau problème d'affichage,

je veux affiché 2 images (sur plan A et B) comme l'exemple "sprite" de sgdk.

avec ce code :

<#include <genesis.h>
#include "gfx.h"

int main()
{
    u16 palette[64];
    u16 ind;

    // disable interrupt when accessing VDP
    SYS_disableInts();
    // initialization
    VDP_setScreenWidth320();

   // set all palette to black
    VDP_setPaletteColors(0, palette_black, 64);

    // load background
    ind = TILE_USERINDEX;
    VDP_drawImageEx(BPLAN, &bgb_image, TILE_ATTR_FULL(PAL0, FALSE, FALSE, FALSE, ind), 0, 0, FALSE, TRUE);
    ind += bgb_image.tileset->numTile;
    VDP_drawImageEx(APLAN, &bga_image, TILE_ATTR_FULL(PAL1, FALSE, FALSE, FALSE, ind), 0, 0, FALSE, TRUE);
    ind += bga_image.tileset->numTile;

// prepare palettes
    memcpy(&palette[0], bgb_image.palette->data, 16 * 2);
    memcpy(&palette[16], bga_image.palette->data, 16 * 2);
    //memcpy(&palette[32], sonic_sprite.palette->data, 16 * 2);

    // fade in (disable interrupts because of the passive fade in)
    SYS_disableInts();
    VDP_fadeIn(0, (3 * 16) - 1, palette, 20, FALSE);
    SYS_enableInts();

      while(TRUE)

VDP_waitVSync();
    }

    return 0;
}>

lorsque je remplace les images d'origines "bgb_image" et "bga_image" par les miennes tout se mélange à l'ecran (alors que les images d'origines s'affichent niquel)

 

mais lorsque je compare mes images à celle d'origines rien ne diffère (mèmes dimensions, mème nombre de couleurs, format png avec compression LZ77, couleur de transparence en premier,etc...) la seule chose qui est différente c'est la taille des fichiers (mes images autour de 10ko contre 3ko pour celles d'origine)

 

je ne vois pas sur quels paramètres agir dans le code pour pouvoir charger mes images comme celles de l'exemple.

 

si quelqu'un peut m'aider

Share this post


Link to post
Share on other sites

Salut.

 

Je ne voit rien de faux dans ton code , si ce n'est que tu peu essayer de mettre que le minimum : virer les Fade et les interruptions.

 

Est-ce que tu pourrait compresser ton projet et le joindre ?

Share this post


Link to post
Share on other sites

Salut,

J'ai regardé et le problème vient de ton image bgb qui se compresse mal et qui sature la VRAM d'ou les glitch graphique.

 

sur megadrive les graphique sont arranger en tiles donc des morceau de 8x8.

dans ton image il y a trop d’éléments différents donc ça se compresse mal, alors tu peut faire quelque chose de sympa en faisant une symétrie par exemple.

Je t'ai fait vite fait un exemple ( j'ai refait la palette en speed d'ou le petit bug sur l'eau ^^) tu a moyen de faire largement mieux hein ;)

 

post-4965-0-15857600-1402134509_thumb.png

test.zip

Share this post


Link to post
Share on other sites

Ouaip ca m'a l'air d'être du 16x16

 

le gros souci des truc qui te génère un tileset c'est qu'en général ca te mets ca dans un ordre à la con*,

alors après pour réutiliser le fichier créé dans un logiciel dédié au tilemap, bonjour le bordel et la prise de tête...

 

*sauf si t'es pas trop stupide dès le début pour mettre tes tiles dans l'ordre de lecture du soft qui génère ^^

Share this post


Link to post
Share on other sites

oui c'est du 16*16 en 16 couleurs, j'ai refais la map et là ça marche niquel (pour les faire j'ai utilisé un logiciel très pointu... paint :D )

 

maintenant faut que je trouve comment empécher mon perso de marcher sur l'eau et sur les arbres ^^

Share this post


Link to post
Share on other sites

t'as plusieurs méthodes,

soit dire le tile n°X est bloquant (ou un effet),

soit le mieux, avoir un tableau (array, meme taille que celle de ton tilemap) avec des valeurs (genre 0x0, 0x1,...) dans lequel tu iras verifier la position de ton sprite et appliquer l'effet en conséquence de la valeur lue.

Share this post


Link to post
Share on other sites

c'est là qu'il faut que je creuse un peu, pour afficher mon image j'ai utilisé l'outil rescomp, je suppose qu'il faut que j'extrais le tileset de mon image pour ensuite definir les tiles "vide" ou "plein". Pour ta technique utilisant un tableau ça me parrait un peu plus compliqué pour moi (pour l'instant ^^ ).

Share this post


Link to post
Share on other sites

Pourtant c'est la méthode la plus usitée, cela s'appelle une table de collision :)

 

Si tu as réussi à charger un écran avec des tiles, et à les afficher, il est aussi simple de définir des valeurs à chaque tiles.

 

Affiche toi un petit menu de débug pour voir la position de ton sprite.

Share this post


Link to post
Share on other sites

oui sauf que j'ai pas vraiment reussi à charger un écran de tiles (si je ne me trompe pas c'est ce qu'on obtient en utilisant l'outil palette, tileset et map de rescomp), j'ai juste affiché mon écran en utilisant la fonction "image" de rescomp et là ducoup ça devient tout de suite moins simple pour moi :) .

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...