static int quit;
static SDL_Surface *fbsurf;
-static int fbscale = 2;
+static int fbscale = 1;
static int xsz, ysz;
static unsigned int sdl_flags = SDL_SWSURFACE;
{
int s;
char *env;
+ void *fb_buf;
if((env = getenv("FBSCALE")) && (s = atoi(env))) {
fbscale = s;
xsz = FB_WIDTH * fbscale;
ysz = FB_HEIGHT * fbscale;
+ fb_width = FB_WIDTH;
+ fb_height = FB_HEIGHT;
- /* allocate 1 extra row as a guard band, until we fucking fix the rasterizer */
- if(!(fb_pixels = malloc(FB_WIDTH * (FB_HEIGHT + 1) * FB_BPP / CHAR_BIT))) {
+ fb_size = FB_WIDTH * FB_HEIGHT * FB_BPP / 8;
+ if(!(fb_buf = malloc(fb_size + FB_WIDTH * 4))) {
fprintf(stderr, "failed to allocate virtual framebuffer\n");
return 1;
}
+ fb_pixels = (uint16_t*)((char*)fb_buf + FB_WIDTH * 2);
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_NOPARACHUTE);
if(!(fbsurf = SDL_SetVideoMode(xsz, ysz, FB_BPP, sdl_flags))) {
SDL_LockSurface(fbsurf);
}
- sptr = fb_pixels;
+ sptr = pixels;
dptr = (unsigned short*)fbsurf->pixels + (fbsurf->w - xsz) / 2;
for(i=0; i<FB_HEIGHT; i++) {
for(j=0; j<FB_WIDTH; j++) {
toggle_fullscreen();
break;
}
- key = sdlkey_to_gamekey(ev->key.keysym.sym, ev->key.keysym.mod);
- key_event(key, ev->key.state == SDL_PRESSED ? 1 : 0);
+ if(key_event) {
+ key = sdlkey_to_gamekey(ev->key.keysym.sym, ev->key.keysym.mod);
+ key_event(key, ev->key.state == SDL_PRESSED ? 1 : 0);
+ } else {
+ if(ev->key.keysym.sym == SDLK_ESCAPE) {
+ quit = 1;
+ }
+ }
break;
/*