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; }
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; }