#include <mygba.h>
#include "materiel.h"
#include "routines.h"

#include "Res/palette.pal.c"
#include "Res/tileset.til.c"
#include "Res/carte.map.c"
#include "Res/collisions.map.c"

//MULTIBOOT

void CopieMap_8(const unsigned short *map, int tailleX, int tailleY, int largeurEcran)        {
    int x,y;
    for (y=0;y<tailleY;y++)
        for (x=0;x<tailleX;x++)
            *((unsigned short*)ScreenBaseBlock(31)+y*largeurEcran+x)=*(map+y*tailleX+x);
}

int main(void)          {
    int x, y, c;
    
    // Passer en mode 0, avec le BG0 activé:
    REG_DISPCNT = (VIDEO_MODE0 | VIDEO_BG0_ENABLED);
    // Configure le plan 0
    REG_BG0CNT = BG_TEXTE_256x256 | BG_16_PALETTES | BG_WRAP | 31<<8;

    //Copie la palette, 256 valeurs 16 bits
    CopieDMA((void*)palette_palette, (void*)Palette, 32, DMA_16im);
    
    // Les tiles (dans mon fichier, il y avait 1280 données 8 bits à
    //copier, cette valeur est inscrite dans le fichier « image.raw.c »
    CopieDMA((void*)tileset_tiles, (void*)CharBaseBlock(0), sizeof(tileset_tiles)>>1, DMA_16im);
    // La carte : 1024 données à copier (32 x 32 tiles)
//    CopieDMA((void*)image_map,(void*)ScreenBaseBlock(31),960, DMA_16im);
    CopieMap_8(Map_nv_1_map,64,32,32);
    
//    ham_InitText(0);
//    ham_DrawText(0,0,"%i",*((unsigned short*)ScreenBaseBlock(31)+10));
    x=y=0;
    while(1)        {
        // Définir le décalage (quelle partie de la carte afficher ?)
        REG_BG0VOFS = y;
        REG_BG0HOFS = x;
        if (REG_TOUCHES&TOUCHE_HAUT)
            y--;
        if (REG_TOUCHES&TOUCHE_BAS)
            y++;
        if (REG_TOUCHES&TOUCHE_GAUCHE)
            x--;
        if (REG_TOUCHES&TOUCHE_DROITE)
            x++;
        //Attendre un peu avant la prochaine action
        for(c=0;c<1;c++)       {
            AttendVSync();
        }
    }
    return 0;
}

/* END OF FILE */
