Exemple #1
0
static int ligne(lua_State *L)
{
 unsigned short n = lua_gettop(L);
 short int x,y,y1,x1,page,i,xx,dx,dy,err,sx,sy,e2;
 short int coul;
x = (lua_toint(L, 1)-1);
y = (lua_toint(L, 2)-1);
x1 = (lua_toint(L, 3)-1);
y1 = (lua_toint(L, 4)-1);
if(n>=5) {page= lua_toint(L, 5);if(page<0 || page >5) page = 0;}   //peut representer la couleur ou un numero de buffer
else page = 0;
dx = abs(x1-x), sx = x<x1 ? 1 : -1;
dy = abs(y1-y), sy = y<y1 ? 1 : -1;

if ( !NetB ) {
   if (n==6 || dx == 0 || dy == 0) {

      if (x>x1) {xx=x ; x=max(x1 ,0) ;x1= min(xx,127);}
      if (y>y1) {xx=y ; y=max (y1,0) ;y1= min (xx,63);}      // donc y<=y1 et x<=x1

         if (n == 6) {            // rectangle
         coul = lua_toint(L,6);
             for( i=y ; i<=y1 ; i++){
              Hline(x, x1 , i , coul);
             }

               if (page!=coul) {
               Hline(x,x1,y,page);
               Vline(x1,y,y1,page);
               Hline(x,x1,y1,page);
               Vline(x,y,y1,page);
               }
         }
         else if (dy==0) Hline(x,x1,y1,page);
         else Vline(x,y,y1,page);              //dx == 0
      return 0;
      }
}
     err = (dx>dy ? dx : -dy)/2;
     for(;;){
     if ((x == x&0x007F) && (y == y&0x003F)) // si on est dans les plages de l'écran (tester si pas de pb pour les valeurs négatives)
       {
          if(NetB) ML_pixel(x,y,1,VRAM[page]);
          else draw_write_pix(x,y,page);
         }
     if (x==x1 && y==y1) break;
     e2 = err;
     if (e2 >-dx) { err -= dy; x += sx; }
     if (e2 < dy) { err += dx; y += sy; }
     }
 if (NetB && page==0)ML_display_vram(VRAM[0]);
return 0;

}
Exemple #2
0
static int pixl(lua_State *L)
{
 unsigned char coul,page;
 unsigned char xx,yy;
xx = (lua_toint(L, 1) -1)&0x7F;
yy = (lua_toint(L, 2) -1)&0x3F;
coul = lua_opttoint(L, 3,1);
if(NetB) {
page = lua_opttoint(L, 4,0);
if( page >5) page = 0;
ML_pixel((short)xx,(short)yy,coul,VRAM[page]);
if (page == 0)ML_display_vram(VRAM[0]);
}
else {
 draw_write_pix(xx,yy,coul);

}
return 0;
}
int main()
{
    game.Game();
    while(scene != STOP)
    {
        // transition de changement de scene
        ML_rectangle(0, 0, 128, 64, 0, ML_BLACK, ML_CHECKER);
        ML_display_vram();
        Sleep(80);

        switch (scene)
        {
            case SCENE_SPACE:
                Scene_Space scene_space;
                break;
        }
    }

    unsigned int key;
    while(1) GetKey(&key);
    return 1;
}
int AddIn_main(int isAppli, unsigned short OptionNum)
{
    SaveData dataToSave;
    int i;
    Game_Data data;
	// variables for fps calculation
    unsigned int fps = 0, frame = 0, tempsOrigine = RTC_GetTicks();
	// char string to display the fps
    unsigned char fps_text[8] = {0};
	// rand initialisation
    srand(RTC_GetTicks());

    // Key init
    data.shift_latch_value = 0;
    data.alpha_latch_value = 0;

    data.entry_highscores = NULL;
    data.entry_highscores = malloc(sizeof(float) * 6);
    if(data.entry_highscores == NULL)
        switch_to_state(OUT_OF_MEMORY, &data);


    data.entry_difficulties = NULL;
    data.entry_difficulties = malloc(sizeof(char*) * 6);
    if(data.entry_difficulties == NULL)
        switch_to_state(OUT_OF_MEMORY, &data);
    load_difficulty_names(data.entry_difficulties);


    loadDataFromSave(&data);
    switch_to_state(TITLE, &data);

    {
        char machin[] = "0";
        machin[0] = GetMPU() + '0';
        locate(1,1);
        Print(machin);
        GetKey(&i);

    }

    while(KeyUp(K_EXIT)){ // main loop
        // fps
        if(RTC_GetTicks() - tempsOrigine >= 32 )// if 1/4 seconds elapsed
        {
            fps = frame*4;
            frame = 0;
            tempsOrigine = RTC_GetTicks();
        }
        frame++;


        update(&data);
        draw(&data);

	// printing debug information

	// updating the screen
        ML_display_vram();
        ML_clear_vram();

        Sleep(1/0.06);
    }

    for(i = 0; i < 6; ++i)
        dataToSave.highscores[i] = data.entry_highscores[i];
    Bfile_CreateFile(filename, filesize);
    data.fileHandle = Bfile_OpenFile(filename, _OPENMODE_WRITE);
    if(data.fileHandle >= 0) {
        Bfile_WriteFile(data.fileHandle, &dataToSave, filesize);
        Bfile_CloseFile(data.fileHandle);
    }

    free(data.entry_highscores);

    return 1;
}