Page 1 of 1

Affichage image C pour ez80

PostPosted: 10 Apr 2018, 15:45
by axel stefanini
Bonjour
je réalise un petit prgm en C pour ez80, et j'ai besoin d'afficher une image, j'ai donc tester avec les fichiers sources du prgm OIRAMS, et j'ai pris l'image goomba_0.png,
je l'ai convertis grâce l'outil ConvPNG.
J'ai utilisé comme paramètre pour le fichier convpng.ini


Code: Select all
#GroupC              : goomba_gfx
#PNGImages           :
goomba_0


J'obtiens alors trois fichiers " goomba_0.c ", "goomba_gfx.h" et "goomba_gfx.c" avec dedans ;
Show/Hide spoilerAfficher/Masquer le spoiler
goomba_0.c
Code: Select all
// Converted using ConvPNG
#include <stdint.h>
#include "goomba_gfx.h"

// 8 bpp image
uint8_t goomba_0_data[258] = {
16,16,  // width,height
0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x02,0x02,0x00,0x00,0x00,0x00,0x02,0x02,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x03,0x03,0x02,0x02,0x02,0x02,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x02,0x04,0x02,0x08,0x08,0x02,0x04,0x02,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x02,0x00,0x04,0x04,0x02,0x02,0x04,0x04,0x00,0x02,0x01,0x01,0x01,
0x01,0x02,0x02,0x00,0x00,0x04,0x02,0x08,0x08,0x02,0x04,0x00,0x00,0x02,0x02,0x01,
0x02,0x00,0x00,0x08,0x00,0x04,0x02,0x03,0x03,0x02,0x04,0x00,0x08,0x00,0x00,0x02,
0x02,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x02,
0x02,0x00,0x00,0x04,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0x00,0x00,0x02,
0x01,0x02,0x00,0x04,0x00,0x00,0x03,0x03,0x03,0x03,0x00,0x00,0x04,0x00,0x02,0x01,
0x01,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,
0x01,0x01,0x01,0x01,0x02,0x05,0x05,0x05,0x05,0x05,0x02,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x02,0x02,0x06,0x07,0x05,0x05,0x05,0x05,0x07,0x02,0x02,0x02,0x02,0x01,
0x01,0x02,0x03,0x00,0x02,0x06,0x07,0x07,0x07,0x07,0x02,0x00,0x00,0x03,0x09,0x02,
0x02,0x09,0x03,0x00,0x00,0x02,0x06,0x06,0x06,0x06,0x02,0x02,0x02,0x02,0x02,0x02,
0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
};


goomba_gfx.c
Code: Select all
// Converted using ConvPNG
#include <stdint.h>
#include "goomba_gfx.h"

uint16_t goomba_gfx_pal[10] = {
0x5960,  // 00 :: rgb(184,88,0)
0x7C10,  // 01 :: rgb(255,0,128)
0x18C6,  // 02 :: rgb(48,48,48)
0x6E00,  // 03 :: rgb(224,128,0)
0xFBDE,  // 04 :: rgb(248,248,248)
0xFB31,  // 05 :: rgb(248,208,136)
0x71E9,  // 06 :: rgb(232,120,72)
0x768D,  // 07 :: rgb(240,160,104)
0x7A80,  // 08 :: rgb(248,160,0)
0xFB64,  // 09 :: rgb(248,224,32)
};


goomba_gfx.h
Code: Select all
// Converted using ConvPNG
// This file contains all the graphics sources for easier inclusion in a project
#ifndef __goomba_gfx__
#define __goomba_gfx__
#include <stdint.h>
#include "gommba_gfx.c"
#define goomba_0_width 16
#define goomba_0_height 16
#define goomba_0_size 258
extern uint8_t goomba_0_data[258];
#define goomba_0 ((gfx_sprite_t*)goomba_0_data)
#define sizeof_goomba_gfx_pal 20
extern uint16_t goomba_gfx_pal[10];

#endif


Alors en suivant le tutoriel de Wistaro, je fais afficher l'image dans mon main en ayant mis #include "goomba_gfx.h" avant.
Voici mon ma fonction main ;
Code: Select all
void main(void)
{
  gfx_Begin( gfx_8bpp );
  gfx_Sprite_NoClip(goomba_0,10,10);

  while (!os_GetCSC());
  gfx_End();
  prgm_CleanUp();
}


Le problème c'est que j'obtiens un truc vert et noir, (voir image jointe) et je pense j'ai du faire une erreur quelques part, mais je sais pas trop où... Si quelqu'un pourrait m'aider se serait gentils de sa part !
Meric d'avance :)

Re: Affichage image C pour ez80

PostPosted: 10 Apr 2018, 15:50
by Adriweb
Salut,

Regarde les exemples de la toolchain, ils sont mis a jour en fonction que les API évoluent (meme si ceux ci restent compatibles) :)
https://github.com/CE-Programming/toolc ... src/main.c

En l'occurence, il semble que tu aies juste oublié de mettre à jour la palette (ainsi les couleurs ne sont pas les bonnes)

PS: gfx_Begin() suffit, pas besoin de paramètre. Plus besoin du prgm_CleanUp() à la fin.

Re: Affichage image C pour ez80

PostPosted: 10 Apr 2018, 15:54
by axel stefanini
Adriweb wrote:Salut,

Regarde les exemples de la toolchain, ils sont mis a jour en fonction que les API évoluent (meme si ceux ci restent compatibles) :)
https://github.com/CE-Programming/toolc ... src/main.c

En l'occurence, il semble que tu aies juste oublié de mettre à jour la palette (ainsi les couleurs ne sont pas les bonnes)

PS: gfx_Begin() suffit, pas besoin de paramètre. Plus besoin du prgm_CleanUp() à la fin.



D'accord, donc je vais regardé en détails les exemples sur la toolchain, mais comment je suis sensé mettre à jour la palette ? ça viens du convertisseur ou du prgm en tant que tel?

Merci en tout cas ! ^^

Re: Affichage image C pour ez80

PostPosted: 10 Apr 2018, 15:57
by Adriweb
C'est ce que l'exemple montre ;)
Dans ton cas, c'est une ligne a rajouter apres le gfx_Begin():

gfx_SetPalette(goomba_gfx_pal, sizeof_goomba_gfx_pal, 0);

Re: Affichage image C pour ez80

PostPosted: 10 Apr 2018, 16:00
by axel stefanini
Okey je regardais l'exemple et maintenant oui tout est clair ! Merci beaucoup !

Re: Affichage image C pour ez80

PostPosted: 10 Apr 2018, 16:18
by axel stefanini
Adriweb wrote:C'est ce que l'exemple montre ;)
Dans ton cas, c'est une ligne a rajouter apres le gfx_Begin():

gfx_SetPalette(goomba_gfx_pal, sizeof_goomba_gfx_pal, 0);



Par contre... Une fois que j'ai modifier la palette, tous mes rectangles ne respectent plus leurs couleurs hexadécimal donnée, comment on reset la palette sans fermer le graphique ? :?

Merci!