projects
/
retrobench
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
minor makefile fixes
[retrobench]
/
src
/
dos
/
gfx.c
diff --git
a/src/dos/gfx.c
b/src/dos/gfx.c
index
004c492
..
7e5db98
100644
(file)
--- a/
src/dos/gfx.c
+++ b/
src/dos/gfx.c
@@
-7,6
+7,11
@@
#include "vga.h"
#include "util.h"
#include "vga.h"
#include "util.h"
+#ifdef __DJGPP__
+#define VMEM_PTR ((void*)(0xa0000 + __djgpp_conventional_base))
+#else
+#define VMEM_PTR ((void*)0xa0000)
+#endif
#define SAME_BPP(a, b) \
((a) == (b) || ((a) == 16 && (b) == 15) || ((a) == 15 && (b) == 16) || \
#define SAME_BPP(a, b) \
((a) == (b) || ((a) == 16 && (b) == 15) || ((a) == 15 && (b) == 16) || \
@@
-110,7
+115,6
@@
int init_video(void)
void cleanup_video(void)
{
free(vmodes);
void cleanup_video(void)
{
free(vmodes);
- vmodes = 0;
}
struct video_mode *video_modes(void)
}
struct video_mode *video_modes(void)
@@
-187,7
+191,7
@@
void *set_video_mode(int idx, int nbuf)
}
/* unmap previous video memory mapping, if there was one (switching modes) */
}
/* unmap previous video memory mapping, if there was one (switching modes) */
- if(vpgaddr[0] && vpgaddr[0] != (void*)0xa0000) {
+ if(vpgaddr[0] && vpgaddr[0] != VMEM_PTR) {
dpmi_munmap(vpgaddr[0]);
vpgaddr[0] = vpgaddr[1] = 0;
}
dpmi_munmap(vpgaddr[0]);
vpgaddr[0] = vpgaddr[1] = 0;
}
@@
-199,8
+203,15
@@
void *set_video_mode(int idx, int nbuf)
pgsize = vm->ysz * vm->pitch;
fbsize = pgcount * pgsize;
pgsize = vm->ysz * vm->pitch;
fbsize = pgcount * pgsize;
+ if(vm->bpp > 8) {
+ printf("rgb mask: %x %x %x\n", (unsigned int)vm->rmask,
+ (unsigned int)vm->gmask, (unsigned int)vm->bmask);
+ printf("rgb shift: %d %d %d\n", vm->rshift, vm->gshift, vm->bshift);
+ }
printf("pgcount: %d, pgsize: %d, fbsize: %d\n", pgcount, pgsize, fbsize);
printf("pgcount: %d, pgsize: %d, fbsize: %d\n", pgcount, pgsize, fbsize);
- printf("phys addr: %p\n", (void*)vm->fb_addr);
+ if(vm->fb_addr) {
+ printf("phys addr: %p\n", (void*)vm->fb_addr);
+ }
fflush(stdout);
if(vm->fb_addr) {
fflush(stdout);
if(vm->fb_addr) {
@@
-230,7
+241,7
@@
void *set_video_mode(int idx, int nbuf)
}
} else {
}
} else {
- vpgaddr[0] = (void*)0xa0000;
+ vpgaddr[0] = VMEM_PTR;
vpgaddr[1] = 0;
blit_frame = blit_frame_banked;
vpgaddr[1] = 0;
blit_frame = blit_frame_banked;
@@
-265,7
+276,7
@@
void *set_video_mode(int idx, int nbuf)
int set_text_mode(void)
{
/* unmap previous video memory mapping, if there was one (switching modes) */
int set_text_mode(void)
{
/* unmap previous video memory mapping, if there was one (switching modes) */
- if(vpgaddr[0] && vpgaddr[0] != (void*)0xa0000) {
+ if(vpgaddr[0] && vpgaddr[0] != VMEM_PTR) {
dpmi_munmap(vpgaddr[0]);
vpgaddr[0] = vpgaddr[1] = 0;
}
dpmi_munmap(vpgaddr[0]);
vpgaddr[0] = vpgaddr[1] = 0;
}
@@
-308,8
+319,8
@@
static void blit_frame_banked(void *pixels, int vsync)
pending = pgsize;
while(pending > 0) {
sz = pending > 65536 ? 65536 : pending;
pending = pgsize;
while(pending > 0) {
sz = pending > 65536 ? 65536 : pending;
- /*memcpy64((void*)0xa0000, pptr, sz >> 3);*/
- memcpy((void*)0xa0000, pptr, sz);
+ /*memcpy64(VMEM_PTR, pptr, sz >> 3);*/
+ memcpy(VMEM_PTR, pptr, sz);
pptr += sz;
pending -= sz;
offs += curmode->win_64k_step;
pptr += sz;
pending -= sz;
offs += curmode->win_64k_step;