#include "vbe.h"
#include "audio.h"
#include "panic.h"
+#include "census/census.h"
static int video_init(void);
static int modecmp(const void *a, const void *b);
static struct video_mode vmode;
-static void *fbptr;
+static void *fbptr, *backbuf;
+static int fbsize;
void pcboot_main(void)
if(video_init() == -1) {
panic("Failed to find suitable video mode");
}
+ fbsize = vmode.width * vmode.height * vmode.bpp / 8;
+ if(!(backbuf = malloc(fbsize))) {
+ panic("Failed to allocate back buffer");
+ }
+ init_census(backbuf, vmode.width, vmode.height);
for(;;) {
+ draw_census();
+
wait_vsync();
- memset(fbptr, 0x80, vmode.width * vmode.height * vmode.bpp / 8);
+ memcpy(fbptr, backbuf, fbsize);
}
}
const char *vendor;
if(mode_idx == -1 && (vendor = get_video_vendor()) && strstr(vendor, "SeaBIOS")) {
- mode_idx = find_video_mode_idx(800, 600, 0);
+ mode_idx = find_video_mode_idx(800, 600, 32);
}
if(mode_idx == -1 && vbe_get_edid(&edid) == 0 && edid_preferred_resolution(&edid, &xres, &yres) == 0) {