Пример #1
0
int event_parse(SDL_Event ev)
{
  switch(ev.type) {
  case SDL_KEYDOWN:
    return event_key(ev.key, EVENT_PRESS);
  case SDL_KEYUP:
    return event_key(ev.key, EVENT_RELEASE);
  case SDL_MOUSEMOTION:
    return event_mouse(ev.motion);
  case SDL_MOUSEBUTTONDOWN:
    return event_button(ev.button, EVENT_PRESS);
  case SDL_MOUSEBUTTONUP:
    return event_button(ev.button, EVENT_RELEASE);
  case SDL_JOYAXISMOTION:
    return event_joystick(ev.jaxis);
  case SDL_JOYBUTTONDOWN:
  case SDL_JOYBUTTONUP:
    return event_fire(ev.jbutton);
  case SDL_WINDOWEVENT:
    if(ev.window.windowID == screen_window_id) {
      if(ev.window.event == SDL_WINDOWEVENT_RESIZED) {
        if((ev.window.data1 % 512) == 0 && (ev.window.data2 % 314) == 0)
          screen_make_texture(SDL_SCALING_NEAREST);
        else
          screen_make_texture(SDL_SCALING_LINEAR);
      }
    }
    break;
  case SDL_QUIT:
    if(debugger)
      return EVENT_DEBUG;
    else {
      SDL_Quit();
      exit(0);
    }
  }

  return EVENT_NONE;
}
Пример #2
0
void screen_init()
{
  /* should be rewritten with proper error checking */
  Uint32 rmask, gmask, bmask, amask;
  SDL_Surface *icon;
  
  HANDLE_DIAGNOSTICS_NON_MMU_DEVICE(screen, "SCRN");

  if(disable) return;
  
#if SDL_BYTEORDER != SDL_BIG_ENDIAN
  amask = 0x00000000;
  rmask = 0x00ff0000;
  gmask = 0x0000ff00;
  bmask = 0x000000ff;
#else
  amask = 0x00000000;
  rmask = 0x000000ff;
  gmask = 0x0000ff00;
  bmask = 0x00ff0000;
#endif

  if (monitor_sm124)
    mon = monitors[1];
  else
    mon = monitors[0];

  if (crop_screen) {
    mon.width = mon.crop_width;
    mon.height = mon.crop_height;
  }
  
    window = SDL_CreateWindow("Main screen",
			      SDL_WINDOWPOS_UNDEFINED,
			      SDL_WINDOWPOS_UNDEFINED,
			      mon.width,
			      mon.height,
			      SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE);
    screen = SDL_CreateRGBSurface(0, mon.columns, mon.lines,
				  24, rmask, gmask, bmask, amask);
    renderer = SDL_CreateRenderer(window, -1, 0);
    screen_window_id = SDL_GetWindowID(window);
    DEBUG("screen_window_id == %d", screen_window_id);
    screen_make_texture(SDL_SCALING_NEAREST);

  if(screen == NULL) {
    FATAL("Did not get a video mode");
  }

  icon = IMG_Load("logo-main.png");
  SDL_SetWindowIcon(window, icon);
  
  if(ppmoutput) {
    ppm_fd = open("ostis.ppm", O_WRONLY|O_CREAT|O_TRUNC, 0644);
  }

  rgbimage = screen->pixels;
  rasterpos_indicator[0] = screen_generate_rasterpos_indicator(0xffffff);
  rasterpos_indicator[1] = screen_generate_rasterpos_indicator(0xff0000);

  framecnt = 0;

  screen_vsync();

  if(debugger) {
    debug_raise_window();
  }
}