static void vsync(void) { TRACE("Vsync"); line = 0; v = 0; mmu_vsync(); screen_vsync(); }
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(); } }