#include <stdio.h>
#include <math.h>
+#include <limits.h>
#include <conio.h>
#include "vidsys.h"
struct vid_modeinfo *vm;
void *vmem;
+static const char *usage_fmt = "Usage %s: [options]\n"
+ "Options: \n"
+ " -s <XxY>: video resolution\n"
+ " -b <bpp>: color depth\n";
+
int main(int argc, char **argv)
{
+ int i;
int mode;
- int xres = 320;
- int yres = 200;
+ int xres = 640;
+ int yres = 480;
int bpp = 8;
+ for(i=1; i<argc; i++) {
+ if(argv[i][0] == '-') {
+ if(argv[i][2]) {
+invalopt: fprintf(stderr, "invalid option: %s\n", argv[i]);
+ return 1;
+ }
+ switch(argv[i][1]) {
+ case 's':
+ if(!argv[++i] || sscanf(argv[i], "%dx%d", &xres, &yres) != 2) {
+ fprintf(stderr, "invalid resolution: %s\n", argv[i]);
+ return 1;
+ }
+ break;
+
+ case 'b':
+ if(!argv[++i] || (bpp = atoi(argv[i])) <= 0) {
+ fprintf(stderr, "invalid color depth: %s\n", argv[i]);
+ return 1;
+ }
+
+ case 'h':
+ printf(usage_fmt, argv[0]);
+ return 0;
+
+ default:
+ goto invalopt;
+ }
+ } else {
+ fprintf(stderr, "unexpected argument: %s\n", argv[i]);
+ return 1;
+ }
+ }
+
+
if(vid_init() == -1) {
fprintf(stderr, "failed to initialize video\n");
return 1;
void test8bpp(void)
{
int i, j;
- unsigned char *fb = vmem;
+ unsigned char *fb;
struct vid_color cmap[256];
+ int winsz, winleft, winpos;
for(i=0; i<256; i++) {
float x = (float)i / (256.0f / TWO_PI);
}
vid_setpal(0, 256, cmap);
+ if(vid_islinear()) {
+ winsz = INT_MAX;
+ } else {
+ winsz = 65536;
+ winpos = 0;
+ vid_setwin(0, 0);
+ }
+ winleft = winsz;
+ fb = vmem;
+
vid_vsync();
for(i=0; i<vm->height; i++) {
for(j=0; j<vm->width; j++) {
- int xor = i^j;
- *fb++ = xor;
+ if(winleft-- <= 0) {
+ winpos += vm->win_step;
+ vid_setwin(0, winpos);
+ winleft = winsz;
+ fb = vmem;
+ }
+ *fb++ = i ^ j;
}
}
}