From: John Tsiombikas Date: Sat, 22 May 2021 05:07:37 +0000 (+0300) Subject: forgot about the non-zero base of the conventional memory selector in CWSDPMI... X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=retrobench;a=commitdiff_plain;h=e1d53fab6f08e10a05e06e4f3ad79075b933a01b forgot about the non-zero base of the conventional memory selector in CWSDPMI... --- diff --git a/src/dos/gfx.c b/src/dos/gfx.c index 004c492..ef05921 100644 --- a/src/dos/gfx.c +++ b/src/dos/gfx.c @@ -7,6 +7,11 @@ #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) || \ @@ -110,7 +115,6 @@ int init_video(void) void cleanup_video(void) { free(vmodes); - vmodes = 0; } 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) */ - if(vpgaddr[0] && vpgaddr[0] != (void*)0xa0000) { + if(vpgaddr[0] && vpgaddr[0] != VMEM_PTR) { dpmi_munmap(vpgaddr[0]); vpgaddr[0] = vpgaddr[1] = 0; } @@ -230,7 +234,7 @@ void *set_video_mode(int idx, int nbuf) } } else { - vpgaddr[0] = (void*)0xa0000; + vpgaddr[0] = VMEM_PTR; vpgaddr[1] = 0; blit_frame = blit_frame_banked; @@ -265,7 +269,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) */ - if(vpgaddr[0] && vpgaddr[0] != (void*)0xa0000) { + if(vpgaddr[0] && vpgaddr[0] != VMEM_PTR) { dpmi_munmap(vpgaddr[0]); vpgaddr[0] = vpgaddr[1] = 0; } @@ -308,8 +312,8 @@ static void blit_frame_banked(void *pixels, int vsync) 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; diff --git a/src/dos/gfx.h b/src/dos/gfx.h index 77322f9..4bd5aac 100644 --- a/src/dos/gfx.h +++ b/src/dos/gfx.h @@ -11,7 +11,7 @@ struct video_mode { uint32_t rmask, gmask, bmask; uint32_t fb_addr; short max_pages; - int win_gran, win_gran_shift, win_64k_step; + short win_gran, win_gran_shift, win_64k_step; }; #ifdef __cplusplus diff --git a/src/dos/main.c b/src/dos/main.c index 048aa9d..aeb18ba 100644 --- a/src/dos/main.c +++ b/src/dos/main.c @@ -17,16 +17,16 @@ int main(int argc, char **argv) int num_frames = 0; void *vmem; +#ifdef __DJGPP__ + __djgpp_nearptr_enable(); +#endif + read_config("rbench.cfg"); if(parse_args(argc, argv) == -1) { return 1; } -#ifdef __DJGPP__ - __djgpp_nearptr_enable(); -#endif - init_logger("rbench.log"); if(init_video() == -1) {