/[projet1]/public/pc/emulators/caloric/src/sdl.c
Defence Force logotype

Diff of /public/pc/emulators/caloric/src/sdl.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 88 by Jede, Wed May 27 20:46:43 2009 UTC revision 89 by Jede, Thu May 28 16:32:59 2009 UTC
# Line 57  time_t previoustime; Line 57  time_t previoustime;
57  typedef struct {  typedef struct {
58          int  red;          int  red;
59          int blue;          int blue;
60    
61          int green;          int green;
62  } oriccolor;  } oriccolor;
63  oriccolor oriccolors[8];  oriccolor oriccolors[8];
# Line 70  int sdl_start() Line 71  int sdl_start()
71  {  {
72      char title[1024];      char title[1024];
73      Uint32 flags = SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE|SDL_INIT_TIMER;      Uint32 flags = SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE|SDL_INIT_TIMER;
74      Uint32 flags_video= SDL_HWPALETTE; // Correcting full screen      Uint32 flags_video= SDL_HWPALETTE|SDL_HWACCEL|SDL_HWSURFACE|SDL_RLEACCEL; // Correcting full screen
75      zoomChange = zoom;      zoomChange = zoom;
76      SDL_Rect **modes;      SDL_Rect **modes;
77      int i;      int i;
# Line 80  int sdl_start() Line 81  int sdl_start()
81      /* Init video blah */      /* Init video blah */
82      /*Get some infos from video card and resolution*/      /*Get some infos from video card and resolution*/
83    
84   zoom=1;   zoom=2;
85      if(fullScreen) {      if(fullScreen) {
86          flags |= SDL_FULLSCREEN;          flags |= SDL_FULLSCREEN;
87          flags_video ^= SDL_FULLSCREEN;          flags_video ^= SDL_FULLSCREEN;
# Line 116  if (!pVideoInfo) { Line 117  if (!pVideoInfo) {
117    }    }
118    
119  #endif  #endif
120  modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);  modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE|SDL_HWACCEL);
121    
122  /* Check is there are any modes available */  /* Check is there are any modes available */
123  if(modes == (SDL_Rect **)0){  if(modes == (SDL_Rect **)0){
# Line 140  else{ Line 141  else{
141  #endif  #endif
142    
143      /* 320x240x32 */      /* 320x240x32 */
144      screen = SDL_SetVideoMode(VIDEO_WIDTH*zoom, VIDEO_HEIGHT*zoom+border, 32, flags_video); //      screen = SDL_SetVideoMode(VIDEO_WIDTH*zoom, VIDEO_HEIGHT*zoom+border, 8, flags_video); //
145      if ( screen == NULL ) {      if ( screen == NULL ) {
146          fprintf(stderr, "Unable to set %dx%dx32 video: %s\n", VIDEO_WIDTH*zoom, VIDEO_HEIGHT*zoom, SDL_GetError());          fprintf(stderr, "Unable to set %dx%dx32 video: %s\n", VIDEO_WIDTH*zoom, VIDEO_HEIGHT*zoom, SDL_GetError());
147          return 0;          return 0;
# Line 222  oriccolors[6].blue=255; Line 223  oriccolors[6].blue=255;
223  oriccolors[7].red=255;  oriccolors[7].red=255;
224  oriccolors[7].green=255;  oriccolors[7].green=255;
225  oriccolors[7].blue=255;  oriccolors[7].blue=255;
226    /*
227  if(TTF_Init() == -1)  if(TTF_Init() == -1)
228  {  {
229      fprintf(stderr, "Erreur d'initialisation de TTF_Init : %s\n", TTF_GetError());      fprintf(stderr, "Erreur d'initialisation de TTF_Init : %s\n", TTF_GetError());
230      exit(EXIT_FAILURE);      exit(EXIT_FAILURE);
231  }  }
232    */
233  }  }
234    
235    void DrawRect(SDL_Surface *screen, int x, int y, Uint8 R, Uint8 G, Uint8 B, int zoom)
236    {
237      Uint32 color = SDL_MapRGB(screen->format, R, G, B);
238        SDL_Rect position;
239    //  gdImageFilledRectangle(screen,x,y,x+zoom-1,y+zoom-1,color);
240    
241            //Uint32 color=0;
242            position.x = x;
243            position.y = y;
244            position.w = zoom;
245            position.h = zoom;
246            SDL_FillRect(screen,&position, color);
247    
248    
249      /*
250      switch (screen->format->BytesPerPixel)
251      {
252        case 1: // Assuming 8-bpp
253          {
254            Uint8 *bufp;
255            bufp = (Uint8 *)screen->pixels + y*screen->pitch + x;
256            *bufp = color;
257          }
258          break;
259        case 2: // Probably 15-bpp or 16-bpp
260          {
261            Uint16 *bufp;
262            bufp = (Uint16 *)screen->pixels + y*screen->pitch/2 + x;
263            *bufp = color;
264          }
265          break;
266        case 3: // Slow 24-bpp mode, usually not used
267          {
268            Uint8 *bufp;
269            bufp = (Uint8 *)screen->pixels + y*screen->pitch + x * 3;
270            if(SDL_BYTEORDER == SDL_LIL_ENDIAN)
271            {
272              bufp[0] = color;
273              bufp[1] = color >> 8;
274              bufp[2] = color >> 16;
275            } else {
276              bufp[2] = color;
277              bufp[1] = color >> 8;
278              bufp[0] = color >> 16;
279            }
280          }
281          break;
282        case 4: // Probably 32-bpp
283          {
284            Uint32 *bufp;
285            bufp = (Uint32 *)screen->pixels + y*screen->pitch/4 + x;
286            *bufp = color;
287          }
288          break;*/
289      }
290    
291    
292    
293    
294    //
295    
296  void DrawPixel(SDL_Surface *screen, int x, int y,  void DrawPixel(SDL_Surface *screen, int x, int y,
297                                      Uint8 R, Uint8 G, Uint8 B)                                      Uint8 R, Uint8 G, Uint8 B)
298  {  {
# Line 301  void unlockscreenSDL_Display(SDL_Surface Line 363  void unlockscreenSDL_Display(SDL_Surface
363  void displaySDL_stats()  void displaySDL_stats()
364      {      {
365      SDL_Surface  *texte = NULL, *fond = NULL;      SDL_Surface  *texte = NULL, *fond = NULL;
366    /*
367      time_t timenow;      time_t timenow;
368      time_t seconds;      time_t seconds;
369      char mychar[30]="";      char mychar[30]="";
# Line 325  if (police==NULL) Line 387  if (police==NULL)
387          exit(12);          exit(12);
388      }      }
389      time (&timenow);      time (&timenow);
390      seconds = timenow - previoustime;/*      seconds = timenow - previoustime;
391      sprintf(&mychar, "%f /s\0",  (float) count_frame/ seconds);      sprintf(&mychar, "%f /s\0",  (float) count_frame/ seconds);
392      //fprintf(stderr,"%d\n",stats.frames);      //fprintf(stderr,"%d\n",stats.frames);
393      //printf(      //printf(
# Line 345  if (police==NULL) Line 407  if (police==NULL)
407    fprintf (fp, ", polls %lu", stats.polls);    fprintf (fp, ", polls %lu", stats.polls);
408    if (seconds != 0)    if (seconds != 0)
409      fprintf (fp, " (%.1f/s)", (double) stats.polls / seconds);      fprintf (fp, " (%.1f/s)", (double) stats.polls / seconds);
410  */  
411  TTF_CloseFont(police);  TTF_CloseFont(police);
412  previoustime=timenow;  previoustime=timenow;
413    */
414      }      }
415    
416  void displaySDL_run(void)  void displaySDL_run(void)
# Line 357  void displaySDL_run(void) Line 419  void displaySDL_run(void)
419  int x=0;  int x=0;
420  int y=0;  int y=0;
421  int calcul=0;  int calcul=0;
422    int move_x=0;
423    int move_y=0;
424  render_frame ();  render_frame ();
425    zoom=2;
426          //if (frametouched)          if (frametouched) // if frame is modified let's go !
427          {          {
428      lockscreenSDL_Display(screen);      lockscreenSDL_Display(screen);
429          //xeuphoricSDLDisplay_lockscreen(screen);      if (zoom==1)
430            {
431            for (y=0;y<VIDEO_HEIGHT;y++)
432          for (y=0;y<VIDEO_HEIGHT;y++)              {
433          {                  if (buf[y * (VIDEO_WIDTH + 1) + VIDEO_WIDTH]==1)
434                  //err("=>%d\n",buf[240]);                  for (x=0;x<VIDEO_WIDTH;x++)
435                  //if (buf[240*(y+1)]==0)                      {
436                  {                      DrawPixel(screen, x, y+border,oriccolors[buf[calcul+x]].red, oriccolors[buf[calcul+x]].green, oriccolors[buf[calcul+x]].blue);
437                          for (x=0;x<VIDEO_WIDTH;x++)                      }
438                          {                  calcul+=VIDEO_WIDTH+1;
439                                  DrawPixel(screen, x, y+border,oriccolors[buf[calcul+x]].red, oriccolors[buf[calcul+x]].green, oriccolors[buf[calcul+x]].blue);              }
440            }
441                                  //calcul++;      else
442                          }          {
443                  }          for (y=0;y<VIDEO_HEIGHT;y++)
444                  //else              {
445                          calcul+=VIDEO_WIDTH+1;                  if (buf[y * (VIDEO_WIDTH + 1) + VIDEO_WIDTH]==1)
446                  //calcul++;                      {
447          }                      for (x=0;x<VIDEO_WIDTH;x++)
448                            {
449                            //DrawRect(SDL_Surface *screen, int x, int y, Uint8 R, Uint8 G, Uint8 B, zoom)
450                            DrawRect(screen, move_x, move_y+border,oriccolors[buf[calcul+x]].red, oriccolors[buf[calcul+x]].green, oriccolors[buf[calcul+x]].blue,zoom);
451                            move_x+=zoom;
452                            }
453                        }
454                    move_x=0;
455                    calcul+=VIDEO_WIDTH+1;
456                    move_y+=zoom;
457                }
458            }
459          unlockscreenSDL_Display(screen);          unlockscreenSDL_Display(screen);
460          count_frame++;          count_frame++;
461          displaySDL_stats();          displaySDL_stats();

Legend:
Removed from v.88  
changed lines
  Added in v.89

  ViewVC Help
Powered by ViewVC 1.1.26