X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fdos%2Fmain.c;h=06fd0bbb7843cdffa35bc475efd7a6a2ef4168fd;hb=63b624908206e1cbe56c2ce51cb170d3f6d91126;hp=b2d2bdd62607f49a2eaa04c22919fa55d68e338b;hpb=8a64d603ee67cd98070360b40938e123ea845154;p=dosdemo diff --git a/src/dos/main.c b/src/dos/main.c index b2d2bdd..06fd0bb 100644 --- a/src/dos/main.c +++ b/src/dos/main.c @@ -1,17 +1,35 @@ #include +#include +#include +#include #include "demo.h" #include "keyb.h" +#include "mouse.h" #include "timer.h" #include "gfx.h" static int quit; +static int use_mouse; int main(int argc, char **argv) { + void *vmem; + long fbsize = fb_width * fb_height * fb_bpp / CHAR_BIT; + init_timer(100); kb_init(32); - if(!(fbpixels = set_video_mode(fbwidth, fbheight, fbbpp))) { + if((use_mouse = have_mouse())) { + set_mouse_limits(0, 0, fb_width, fb_height); + set_mouse(fb_width / 2, fb_height / 2); + } + + if(!(fb_pixels = malloc(fbsize))) { + fprintf(stderr, "failed to allocate backbuffer\n"); + return 1; + } + + if(!(vmem = set_video_mode(fb_width, fb_height, fb_bpp))) { return 1; } @@ -28,9 +46,15 @@ int main(int argc, char **argv) } if(quit) goto break_evloop; - wait_vsync(); + if(use_mouse) { + mouse_bmask = read_mouse(&mouse_x, &mouse_y); + } + time_msec = get_msec(); demo_draw(); + + /*wait_vsync();*/ + memcpy(vmem, fb_pixels, fbsize); } break_evloop: