X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=bootcensus;a=blobdiff_plain;f=src%2Ftest%2Fvbetest.c;fp=src%2Ftest%2Fvbetest.c;h=0000000000000000000000000000000000000000;hp=7dd2bada24e6d531fe980a7e5944ba76f664429f;hb=6e968b9e724d9626ed6bdf2119ac7de6a5248f14;hpb=81c11bdd80190ec319a82b0402173cfb65fcbf72 diff --git a/src/test/vbetest.c b/src/test/vbetest.c deleted file mode 100644 index 7dd2bad..0000000 --- a/src/test/vbetest.c +++ /dev/null @@ -1,188 +0,0 @@ -#include -#include -#include "video.h" -#include "asmops.h" -#include "keyb.h" -#include "psaux.h" -#include "contty.h" -#include "audio.h" - -static void draw_cursor(int x, int y, uint16_t col); -static int click_sound_callback(void *buffer, int size, void *cls); - -static uint16_t *framebuf; - -#define CURSOR_XSZ 12 -#define CURSOR_YSZ 16 -static uint16_t cursor[] = { - 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0x0001, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0x0001, 0x0001, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0x0001, 0x0001, 0x0001, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, - 0xffff, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, - 0xffff, 0x0001, 0x0001, 0x0001, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0x0001, 0x0001, 0xffff, 0x0001, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0x0001, 0xffff, 0xffff, 0x0001, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0xffff, 0x0000, 0x0000, 0xffff, 0x0001, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, - 0xffff, 0x0000, 0x0000, 0x0000, 0xffff, 0x0001, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 -}; - -static int click; - -/* defined in sndsamples.s */ -extern signed char snd_click[]; -extern int snd_click_size; - -int vbetest(void) -{ - int i, j, nmodes, mx, my, idx; - unsigned int st, prev_st = 0; - struct video_mode vi; - uint16_t *fbptr; - - nmodes = video_mode_count(); - printf("%d video modes found:\n", nmodes); - for(i=0; i 8) { - printf(" (%d%d%d)\n", vi.rbits, vi.gbits, vi.bbits); - } else { - putchar('\n'); - } - } - - if((idx = find_video_mode_idx(640, 480, 16)) == -1) { - return -1; - } - video_mode_info(idx, &vi); - - if(!(framebuf = set_video_mode(vi.mode))) { - return -1; - } - get_color_bits(&vi.rbits, &vi.gbits, &vi.bbits); - get_color_shift(&vi.rshift, &vi.gshift, &vi.bshift); - get_color_mask(&vi.rmask, &vi.gmask, &vi.bmask); - - fbptr = framebuf; - for(i=0; i<480; i++) { - for(j=0; j<640; j++) { - int xor = i^j; - uint16_t r = xor & 0xff; - uint16_t g = (xor << 1) & 0xff; - uint16_t b = (xor << 2) & 0xff; - - r >>= 8 - vi.rbits; - g >>= 8 - vi.gbits; - b >>= 8 - vi.bbits; - - *fbptr++ = ((r << vi.rshift) & vi.rmask) | ((g << vi.gshift) & vi.gmask) | - ((b << vi.bshift) & vi.bmask); - } - } - - set_mouse_bounds(0, 0, 639, 479); - - audio_set_callback(click_sound_callback, 0); - - /* empty the kb queue */ - while(kb_getkey() != -1); - - for(;;) { - if(kb_getkey() != -1) { - break; - } - - st = mouse_state(&mx, &my); - - for(i=0; i<3; i++) { - unsigned int bit = 1 << i; - if(((st & bit) ^ (prev_st & bit)) & (st & bit)) { - click = 1; - } - } - if(click) { - audio_play(22050, 1); - } - - prev_st = st; - - draw_cursor(mx, my, st & 1 ? 0xf800 : (st & 2 ? 0x7e0 : (st & 4 ? 0x00ff : 0))); - - halt_cpu(); - } - - set_vga_mode(3); - con_clear(); - return 0; -} - -static void draw_cursor(int x, int y, uint16_t col) -{ - static uint16_t saved[CURSOR_XSZ * CURSOR_YSZ]; - static int saved_x = -1, saved_y, saved_w, saved_h; - - int i, j, w, h; - uint16_t *dest, *src, *savp; - - if(saved_x >= 0) { - dest = framebuf + saved_y * 640 + saved_x; - src = saved; - - for(i=0; i CURSOR_XSZ) w = CURSOR_XSZ; - h = 480 - y; - if(h > CURSOR_YSZ) h = CURSOR_YSZ; - - saved_x = x; - saved_y = y; - saved_w = w; - saved_h = h; - - for(i=0; i