diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 127 |
1 files changed, 14 insertions, 113 deletions
@@ -523,7 +523,8 @@ main(int argc, char *argv[]) { | |||
523 | 523 | ||
524 | // Main loop. | 524 | // Main loop. |
525 | Time frame_time = time_now(); | 525 | Time frame_time = time_now(); |
526 | size_t frames = 0; | 526 | size_t frames_update = 0; |
527 | size_t frames_refresh = 0; | ||
527 | while (true) { | 528 | while (true) { |
528 | poll_input(); | 529 | poll_input(); |
529 | size_t elapsed = time_elapsed(frame_time); | 530 | size_t elapsed = time_elapsed(frame_time); |
@@ -535,26 +536,18 @@ main(int argc, char *argv[]) { | |||
535 | 536 | ||
536 | // Blit ppu.pixels to the framebuffer. | 537 | // Blit ppu.pixels to the framebuffer. |
537 | blit_framebuffer(); | 538 | blit_framebuffer(); |
538 | if (++frames > 5) { | 539 | // TODO: make update frames and refresh frames as parameters instead |
539 | // memset(framebuffer, 0xFF, screen_width * screen_height * bpp); | 540 | // of hardcoded |
540 | // system("echo 0 > /dev/graphics/fb0"); | 541 | if (++frames_update > 5) { |
541 | // redraw_screen(); | 542 | write(fb_file, "0", 0); |
542 | // blit_framebuffer(); | 543 | frames_update = 0; |
543 | 544 | } | |
544 | // FIXME: Thre HAS to be a better way to refresh the display lol. | 545 | // NOTE: Maybe this should happen on blit_framebuffer depending on |
545 | system("echo 0 > /dev/graphics/fb0"); | 546 | // the number of actual updates (uxn applications that don't modify |
546 | 547 | // the framebuffer shouldn't have to blink). | |
547 | // Time t = time_now(); | 548 | if (++frames_refresh > 360) { |
548 | // while (time_elapsed(t) < 16666666 * 2) { | 549 | write(refresh_file, "1", 1); |
549 | // // nop wait X frames for the refresh? | 550 | frames_refresh = 0; |
550 | // } | ||
551 | // wait(ret); | ||
552 | // memset(framebuffer, 0xFF, screen_width * screen_height * bpp); | ||
553 | // redraw_screen(); | ||
554 | // memset(framebuffer, 0x00, screen_width * screen_height * bpp); | ||
555 | // redraw_screen(); | ||
556 | |||
557 | frames = 0; | ||
558 | } | 551 | } |
559 | frame_time = time_now(); | 552 | frame_time = time_now(); |
560 | } | 553 | } |
@@ -562,95 +555,3 @@ main(int argc, char *argv[]) { | |||
562 | 555 | ||
563 | return 0; | 556 | return 0; |
564 | } | 557 | } |
565 | |||
566 | // int | ||
567 | // main(int argc, char *argv[]) { | ||
568 | // // FIXME: Experimental | ||
569 | // int fb = open("/dev/graphics/fb0", O_RDWR); | ||
570 | // if (fb <= 0) { | ||
571 | // fprintf(stderr, "error: couldn't open the framebuffer\n"); | ||
572 | // exit(EXIT_FAILURE); | ||
573 | // } | ||
574 | // struct fb_var_screeninfo info; | ||
575 | // if (ioctl(fb, FBIOGET_VSCREENINFO, &info) != 0) { | ||
576 | // fprintf(stderr, "error: couldn't get the framebuffer size\n"); | ||
577 | // exit(EXIT_FAILURE); | ||
578 | // } | ||
579 | // size_t screen_width = info.xres; | ||
580 | // size_t screen_height = info.yres; | ||
581 | // size_t bpp = info.bits_per_pixel / 8; | ||
582 | // size_t len = bpp * screen_width * screen_height; | ||
583 | // u8 *framebuffer = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0); | ||
584 | // if (framebuffer == MAP_FAILED) { | ||
585 | // fprintf(stderr, "error: couldn't mmap the framebuffer\n"); | ||
586 | // exit(EXIT_FAILURE); | ||
587 | // } | ||
588 | |||
589 | // // Print all relevant elements from the fb_var_screeninfo struct | ||
590 | // printf("> xres: %d\n" | ||
591 | // "> yres: %d\n" | ||
592 | // "> xres_virtual: %d\n" | ||
593 | // "> yres_virtual: %d\n" | ||
594 | // "> xoffset: %d\n" | ||
595 | // "> yoffset: %d\n" | ||
596 | // "> bits_per_pixel: %d\n" | ||
597 | // "> grayscale: %d\n" | ||
598 | // "> activate: %d\n" | ||
599 | // "> height: %d\n" | ||
600 | // "> width: %d\n" | ||
601 | // "> hsync_len: %d\n" | ||
602 | // "> vsync_len: %d\n" | ||
603 | // "> sync: %d\n" | ||
604 | // "> vmode: %d\n" | ||
605 | // "> rotate: %d\n" | ||
606 | // "> len: %d\n", | ||
607 | // info.xres, | ||
608 | // info.yres, | ||
609 | // info.xres_virtual, | ||
610 | // info.yres_virtual, | ||
611 | // info.xoffset, | ||
612 | // info.yoffset, | ||
613 | // info.bits_per_pixel, | ||
614 | // info.grayscale, | ||
615 | // info.activate, | ||
616 | // info.height, | ||
617 | // info.width, | ||
618 | // info.hsync_len, | ||
619 | // info.vsync_len, | ||
620 | // info.sync, | ||
621 | // info.vmode, | ||
622 | // info.rotate, | ||
623 | // len); | ||
624 | |||
625 | |||
626 | // // Clean screen | ||
627 | // // memset(framebuffer, 0x00, screen_width * screen_height * 2); // black | ||
628 | // memset(framebuffer, 0xFF, len); // white | ||
629 | // for (size_t i = 0, k = 0; i < (screen_width * screen_height) / 2; i++) { | ||
630 | // for (size_t b = 0; b < bpp; b++) { | ||
631 | // framebuffer[k++] = 0xF0; | ||
632 | // } | ||
633 | // // p[i] = 0xF0F0; | ||
634 | // // framebuffer[k++] = 0xFF; | ||
635 | // // framebuffer[k++] = 0x00; | ||
636 | // } | ||
637 | |||
638 | // // Main loop. | ||
639 | // Time frame_time = time_now(); | ||
640 | // size_t frames = 0; | ||
641 | // while (true) { | ||
642 | // size_t elapsed = time_elapsed(frame_time); | ||
643 | // if (elapsed >= 16666666) { | ||
644 | |||
645 | // // FIXME: Thre HAS to be a better way lol. | ||
646 | // frame_time = time_now(); | ||
647 | // frames++; | ||
648 | // if (frames > 10) { | ||
649 | // system("echo 0 > /dev/graphics/fb0"); | ||
650 | // frames = 0; | ||
651 | // } | ||
652 | // } | ||
653 | // } | ||
654 | |||
655 | // return 0; | ||
656 | // } | ||