17 uint16_t *fb_pixels, *vmem_back, *vmem_front;
18 unsigned long time_msec;
20 unsigned int mouse_bmask;
22 float sball_matrix[] = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1};
24 static unsigned long nframes;
26 int demo_init(int argc, char **argv)
31 if(load_config("demo.cfg") == -1) {
34 if((env = getenv("START_SCR"))) {
37 if(parse_args(argc, argv) == -1) {
43 if(g3d_init() == -1) {
46 g3d_framebuffer(fb_width, fb_height, fb_pixels);
49 if(music_open("data/test.mod") == -1) {
54 if(scr_init() == -1) {
58 scr = scr_lookup(opt.start_scr);
63 if(!scr || scr_change(scr, 4000) == -1) {
64 fprintf(stderr, "screen %s not found\n", opt.start_scr ? opt.start_scr : "0");
68 /* clear the framebuffer at least once */
69 memset(fb_pixels, 0, fb_width * fb_height * fb_bpp / CHAR_BIT);
77 void demo_cleanup(void)
86 float fps = (float)nframes / ((float)time_msec / 1000.0f);
87 printf("average framerate: %.1f\n", fps);
102 void demo_keyboard(int key, int state)
111 if(key >= '1' && key <= '1' + scr_num_screens()) {
113 printf("change screen %d\n", idx);
114 scr_change(scr_screen(idx), 4000);