X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fsdl%2Fmain.c;h=80fab1a07d4a8f83355355fe4e46f2294b7d814f;hb=03eaea2400647375400c3bc4d927c399e142a901;hp=52b9aa748ed16f239adafa5059ce1e0c537be543;hpb=c667edc1da370d08d0af162adfdcb31ceae522ab;p=eradicate diff --git a/src/sdl/main.c b/src/sdl/main.c index 52b9aa7..80fab1a 100644 --- a/src/sdl/main.c +++ b/src/sdl/main.c @@ -18,7 +18,7 @@ static int sdlkey_to_gamekey(int sdlkey, unsigned int mod); 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; @@ -27,6 +27,7 @@ int main(int argc, char **argv) { int s; char *env; + void *fb_buf; if((env = getenv("FBSCALE")) && (s = atoi(env))) { fbscale = s; @@ -35,12 +36,15 @@ int main(int argc, char **argv) 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; } + vmem = 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))) { @@ -95,6 +99,8 @@ void blit_frame(void *pixels, int vsync) int i, j; unsigned short *sptr, *dptr; + dbg_fps(pixels); + if(vsync) { wait_vsync(); } @@ -159,8 +165,14 @@ static void handle_event(SDL_Event *ev) 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; /*