//Fichier .h commun à tous les fichiers source...

#ifndef COMMUN_H
#define COMMUN_H

#include <mygba.h>
#include "Res/all.h"
#include "materiel.h"
#include <stdio.h>
#include "routines.h"
#include "filesystem.h"
#include "son.h"

//grotablo.c
extern const u32 Verdana_fonte[];
extern const u32 Verdana_masque[];
extern const u32 Verdana_tailles[];
extern const u32 Verdana_hauteur;
extern const u32 Verdana_fonte256[];
extern const u32 Verdana_masque256[];
extern const u32 Verdana_largeur;

extern const u32 Moyenne_fonte[];
extern const u32 Moyenne_masque[];
extern const u32 Moyenne_tailles[];
extern const u32 Moyenne_hauteur;

extern const u32 Arial_fonte[];
extern const u32 Arial_masque[];
extern const u32 Arial_tailles[];
extern const u32 Arial_hauteur;

//Pour les appels lointains (IWRAM <-> ROM)
void (*pRoutineLointaine)();
u32 (*pFctLointaine)();
#define Exec(a,b...) ({ pRoutineLointaine = (void*)(a); pRoutineLointaine(b); })
#define ExecFct(a,b...) ({ pFctLointaine = (void*)(a); pFctLointaine(b); })

typedef u8 BOOL;
//Taille du texte dessiné (en hauteur) par la fonction DessTexteWW
extern u32 y_ww;
//Pour le défilement. Utilisé au début pour l'aide mais plus maintenant.
char *ligne2;
//Numéro de frame (image) pour les animations qui en dépendent (effets de transition, palette, etc.)
extern int nFrame;
//Action à effectuer (lors d'un reset système)
extern u32 action, ancienRegTouches;
//Savoir si un FadeIn a été exécuté avant de pouvoir faire un FadeOut.
extern u32 fade_actif;

//Efface un ScreenBlock (map) entier.
void EffaceScreenBlock(u32 screenBlock);

//L'écran devient progressivement noir
void FadeIn();
//Et avec ça il redevient progressivement normal.
void FadeOut();


//Le curseur contient les infos qui y sont relatives
typedef struct      {
    int x,y, no_sprite;                 //Positions, numéro de sprite associé
    int l,h;                            //Largeur et hauteur courante
    const unsigned char *tiles;         //Tiles (mosaïques) associées, pour le sprite
} CURSEUR;

//L'élément "fonction" est inutilisé, mais pourrait être utile pour certains éléments.
typedef struct      {
    char *titre;
    char *texte;
    unsigned char *(*fonction)();
} EVENEMENT;

extern int couleurs[8][3];
//Change les couleurs de la boîte de dialogue.
void ChangeCouleursBteDialogue();
//Affiche un menu permettant de choisir une option
int SelectionneProjet(CURSEUR *c, const EVENEMENT *ev);

CURSEUR *gblCurs;

extern int numero_musique, bCPUMetre, bTransp;
extern int nFrame;

#include "texte.h"
#include "lecteur.h"
#include "menu_couleurs.h"
#include "sram.h"

#endif /* COMMUN_H */


/* END OF FILE */

