1

Voilà comment utiliser les fichier GPG qui sont des fichiers image au format de Gamepark.

Exemple :

#include "gpdef.h"
#include "gpstdlib.h"
#include "gpgraphic.h"
#include "gpmain.h"
#include "gpfont.h"
#include "gpmm.h"

GPDRAWSURFACE gpDraw[2];

int nflip = 1;

unsigned char *intro;

unsigned char *get_gpg(char *filename)
{
unsigned char *data;
F_HANDLE hfile;
unsigned long p_read_count;
unsigned long fsize;

hfile = NULL;

if(SM_OK != GpFileOpen(filename, OPEN_R, &hfile))
{
char buffer[200] ;
sprintf(buffer,"get_gpg : error|file not found\n%s",filename) ;
return NULL ;
}
GpFileSeek(hfile, FROM_BEGIN, 8, 0); // skip header
data = gm_zi_malloc(fsize-8); // * sizeof(ushort)
GpFileRead(hfile, data, fsize-8, &p_read_count);
GpFileClose(hfile);
return (data);
}


void GpMain(void *arg)
{
unsigned int i;

for(i = 0 ; i < 2 ; ++i) GpLcdSurfaceGet(&gpDraw[i], i);
GpSurfaceSet(&gpDraw[0]);

GpFatInit();

intro= get_gpg("gp:\gpmm\shoot\gfx\intro\intro.gpg") ;

for( ; ; )
{

GpBitBlt(NULL,&gpDraw[nflip], position a l'ecran en X, position a l'ecran en Y, taille x de l image a afficher, taille y de l image a afficher, intro, 0, 0 , taile x de l image ,taille y de l image) ;

GpSurfaceFlip(&gpDraw[nflip++]);
nflip &= 0x01;

}
}


Cette fonction est assez simple; elle a pour but de charger votre fichier gpg en memoire smile, bien sur il faut initialiser le sdk en concequence pour activer le support de la smc. Apres, cela s'exploite comme n'importe lequel des fichiers *.h

2

Pour ceux qui veulent plus d'infos que ce que ne permet les gpg, rien n'empêche après les données d'ajouter d'autres infos wink
Voici les informations que j'ajoute après les donées dans mes gpg:
1 octet: 0=8bpp sinon 16 bpp
4 octets: la largeur de l'image
4 octets: la hauteur de l'image

A quoi ça peux bien servir ???
On peux faire un prog qui permet de visualiser n'importe quel gpg, alors que normalement pour afficher un gpg on doit connaître à l'avance ses dimensions wink

Inconvénient
Il faut soit éditer le gpg produit par un prog de conversion, soit faire un prog pur transformer les gpg existant sad
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

3

oui, mais le gpg ne comporte pas ces infos dans son header, et aucun convertisseur le fait.

faudrait carrement faire un logiciel pour convertir et pouvoir y inclure les infos que l'on veut a la fin pour pouvoir les reprendre comme il faut.
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

4

slubman :
Inconvénient
Il faut soit éditer le gpg produit par un prog de conversion, soit faire un prog pur transformer les gpg existant sad

c ce ke je fait chez moi en partant des .h produit par les progs de conversion tel gp32converter ou tiny converter
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

5

juste pour savoir charger un bmp 16 bits en memoire ou un gpg 16 bits en memoire..
ça revient au même ?
ça prend autant de temps ?

6

-

7

falken, un bmp, c'est pas 16 bits, mais 24 !!! wink donc y faut une chtite conversion 24->16 si t'a pas encore compris...
mais si tu lis tout le fichier d'un coup, ca doit aps prendre bcp plus de temps...

8

oui bon 24 bits, ok, ouaip ça c bon smile
Donc un gpg ça se charge plus vite qu'un bmp alors.
Bon je sais qu'il y un travail sur la rotation du bmp qui prend un peu de temps.
Un gpg 24 bits devrait être tout prêt pour être lu donc serait plus rapide au chargement alors...
Enfin c'est ce que je comprend smile

9

>>Bon je sais qu'il y un travail sur la rotation du bmp qui prend un peu de temps.
non, ca ca prend rien du tout, t'inquiete pas; tout ce qui est lent c'est la lecture sur la smc, un gpg etant directement en 16 bits, il ne fait que 2/3 du bmp 24 bits... mais bon, c'est imperceptible si ton code est correct.. smile

10

-

11

heu les gpg c'est que 8 bits ?

12

-

13

-

14

ouaip voila bon je suis en mode 16 bits.
comment faire pour afficher un gpg 8bits en mode 16 bits ?
faut convertir ? faut faire un truc ?

15

hmmm...
tu as une palette non?
->
for x = 0 to taille
for y = 0 to taille
image16bits[x][y] = palette[image8bits[x][y]]

16

hum non j'ai pas de palette arf.. à part si elle est inclue dans le gpg..
y'a moyen de la recup si c'est le cas ?

17

bin tu l'a bien quelque part la palette non???
sinon si c'est celle par défaut, je peux te l'envoyer en .h directement si tu veux..

18

ah ok oui bon disons que je suis obliger d'exporter la palette à part avec gp32converter... smile
donc c un peu chient mais bon. Une ptite tourine qui recupererait la palette d'un gpg je sais pas si c possible.
Bon je vais essayer de mettre en pratique ton astuce smile

19

attend, te moque pas de moi, si tu optimise correctement ta procédure de load de bmp (matte la mienne grin c pas tres dur non !!) t'a pas besoin de gpg!!

20

heu.. heu ouais mais bon moi l'optimisation .. je vois aps par ou commencer smile
au fait elle est ou ta routine optimisée ? je veux dire avec le gpmain et tout et tout smile

21

-

22

hmmm...

23

m'en fou de pomper smile moi je veux un truc qui marche aprés j'essaierais de comprendre comment ça marche pour l'utiliser.