X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fdos%2Fgfx.c;h=cacd9842664e9da0f12675f188ba158e27b9f5cf;hb=refs%2Fheads%2Fmaster;hp=5a8a63bd6f9c21b586841d9c7d06904dcbcd4c34;hpb=0e19f91320d17dc2df1fa0aeaa270b80eef545a9;p=eradicate diff --git a/src/dos/gfx.c b/src/dos/gfx.c index 5a8a63b..cacd984 100644 --- a/src/dos/gfx.c +++ b/src/dos/gfx.c @@ -1,10 +1,12 @@ #include #include #include +#include "game.h" #include "cdpmi.h" #include "gfx.h" #include "vbe.h" #include "vga.h" +#include "util.h" #define SAME_BPP(a, b) \ ((a) == (b) || ((a) == 16 && (b) == 15) || ((a) == 15 && (b) == 16) || \ @@ -83,6 +85,7 @@ int init_video(void) vmptr->rmask = calc_mask(minf.rsize, minf.rpos); vmptr->gmask = calc_mask(minf.gsize, minf.gpos); vmptr->bmask = calc_mask(minf.bsize, minf.bpos); + vmptr->bpp = vmptr->rbits + vmptr->gbits + vmptr->bbits; } if(minf.attr & VBE_ATTR_LFB) { vmptr->fb_addr = minf.fb_addr; @@ -174,7 +177,7 @@ void *set_video_mode(int idx, int nbuf) if(nbuf < 1) nbuf = 1; if(nbuf > 2) nbuf = 2; pgcount = nbuf > vm->max_pages ? vm->max_pages : nbuf; - pgsize = vm->xsz * vm->ysz * vm->pitch; + pgsize = vm->ysz * vm->pitch; fbsize = pgcount * pgsize; printf("pgcount: %d, pgsize: %d, fbsize: %d\n", pgcount, pgsize, fbsize); @@ -189,7 +192,7 @@ void *set_video_mode(int idx, int nbuf) set_text_mode(); return 0; } - //memset(vpgaddr[0], 0xaa, pgsize); + memset(vpgaddr[0], 0xaa, pgsize); if(pgcount > 1) { vpgaddr[1] = (char*)vpgaddr[0] + pgsize; @@ -235,8 +238,9 @@ void *page_flip(int vsync) static void blit_frame_lfb(void *pixels, int vsync) { + if(show_fps) dbg_fps(pixels); if(vsync) wait_vsync(); - memcpy(vpgaddr[frontidx], pixels, pgsize); + memcpy64(vpgaddr[frontidx], pixels, pgsize >> 3); } static void blit_frame_banked(void *pixels, int vsync) @@ -245,6 +249,8 @@ static void blit_frame_banked(void *pixels, int vsync) unsigned int pending; unsigned char *pptr = pixels; + if(show_fps) dbg_fps(pixels); + if(vsync) wait_vsync(); /* assume initial window offset at 0 */ @@ -252,6 +258,7 @@ static void blit_frame_banked(void *pixels, int vsync) pending = pgsize; while(pending > 0) { sz = pending > curmode->bank_size ? curmode->bank_size : pending; + //memcpy64((void*)0xa0000, pptr, sz >> 3); memcpy((void*)0xa0000, pptr, sz); pptr += sz; pending -= sz;