1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

fix for vhack with boxing/maintas

This commit is contained in:
FunkyFr3sh 2018-03-20 19:13:08 +01:00
parent f8a3498a5a
commit e32bf1032f
2 changed files with 25 additions and 9 deletions

View File

@ -93,7 +93,8 @@ DWORD WINAPI render_main(void)
glMapBufferARB = (PFNGLMAPBUFFERARBPROC)wglGetProcAddress("glMapBufferARB"); glMapBufferARB = (PFNGLMAPBUFFERARBPROC)wglGetProcAddress("glMapBufferARB");
glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)wglGetProcAddress("glUnmapBufferARB"); glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)wglGetProcAddress("glUnmapBufferARB");
if(glGenBuffersARB && glBindBufferARB && glBufferDataARB && glMapBufferARB && glUnmapBufferARB && glDeleteBuffersARB) if(glGenBuffersARB && glBindBufferARB && glBufferDataARB &&
glMapBufferARB && glUnmapBufferARB && glDeleteBuffersARB)
{ {
pboSupported = TRUE; pboSupported = TRUE;
} }
@ -224,7 +225,8 @@ DWORD WINAPI render_main(void)
{ {
for(j=0; j<ddraw->width; j++) for(j=0; j<ddraw->width; j++)
{ {
ptr[i*ddraw->width+j] = ddraw->primary->palette->data_bgr[((unsigned char *)ddraw->primary->surface)[i*ddraw->primary->lPitch + j*ddraw->primary->lXPitch]]; ptr[i*ddraw->width+j] =
ddraw->primary->palette->data_bgr[((unsigned char *)ddraw->primary->surface)[i*ddraw->primary->lPitch + j*ddraw->primary->lXPitch]];
} }
} }
@ -239,7 +241,8 @@ DWORD WINAPI render_main(void)
{ {
for(j=0; j<ddraw->width; j++) for(j=0; j<ddraw->width; j++)
{ {
tex[i*ddraw->width+j] = ddraw->primary->palette->data_bgr[((unsigned char *)ddraw->primary->surface)[i*ddraw->primary->lPitch + j*ddraw->primary->lXPitch]]; tex[i*ddraw->width+j] =
ddraw->primary->palette->data_bgr[((unsigned char *)ddraw->primary->surface)[i*ddraw->primary->lPitch + j*ddraw->primary->lXPitch]];
} }
} }
} }

View File

@ -103,13 +103,20 @@ DWORD WINAPI render_soft_main(void)
ddraw->primary->palette->data_rgb = &bmi->bmiColors[0]; ddraw->primary->palette->data_rgb = &bmi->bmiColors[0];
} }
if ((ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height) && !(ddraw->vhack && detect_cutscene()) ) if ((ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height) &&
!(ddraw->vhack && detect_cutscene()) )
{ {
StretchDIBits(ddraw->render.hDC, ddraw->render.viewport.x, ddraw->render.viewport.y, ddraw->render.viewport.width, ddraw->render.viewport.height, 0, 0, ddraw->width, ddraw->height, ddraw->primary->surface, bmi, DIB_RGB_COLORS, SRCCOPY); StretchDIBits(
ddraw->render.hDC, ddraw->render.viewport.x, ddraw->render.viewport.y,
ddraw->render.viewport.width, ddraw->render.viewport.height,
0, 0, ddraw->width, ddraw->height, ddraw->primary->surface,
bmi, DIB_RGB_COLORS, SRCCOPY);
} }
else if (!(ddraw->vhack && detect_cutscene())) else if (!(ddraw->vhack && detect_cutscene()))
{ {
SetDIBitsToDevice(ddraw->render.hDC, 0, 0, ddraw->width, ddraw->height, 0, 0, 0, ddraw->height, ddraw->primary->surface, bmi, DIB_RGB_COLORS); SetDIBitsToDevice(
ddraw->render.hDC, 0, 0, ddraw->width, ddraw->height, 0, 0, 0,
ddraw->height, ddraw->primary->surface, bmi, DIB_RGB_COLORS);
} }
} }
@ -120,9 +127,14 @@ DWORD WINAPI render_soft_main(void)
ddraw->primary->palette->data_rgb = &bmi->bmiColors[0]; ddraw->primary->palette->data_rgb = &bmi->bmiColors[0];
} }
StretchDIBits(ddraw->render.hDC, 0, 0, ddraw->render.width, ddraw->render.height, 0, ddraw->height-400, CUTSCENE_WIDTH, CUTSCENE_HEIGHT, ddraw->primary->surface, bmi, DIB_RGB_COLORS, SRCCOPY); StretchDIBits(
ddraw->render.hDC, ddraw->render.viewport.x, ddraw->render.viewport.y,
ddraw->render.viewport.width, ddraw->render.viewport.height,
0, ddraw->height-400, CUTSCENE_WIDTH, CUTSCENE_HEIGHT, ddraw->primary->surface,
bmi, DIB_RGB_COLORS, SRCCOPY);
if (ddraw->primary->palette && (ddraw->cursorclip.width != CUTSCENE_WIDTH || ddraw->cursorclip.height != CUTSCENE_HEIGHT)) if (ddraw->primary->palette &&
(ddraw->cursorclip.width != CUTSCENE_WIDTH || ddraw->cursorclip.height != CUTSCENE_HEIGHT))
{ {
ddraw->cursorclip.width = CUTSCENE_WIDTH; ddraw->cursorclip.width = CUTSCENE_WIDTH;
ddraw->cursorclip.height = CUTSCENE_HEIGHT; ddraw->cursorclip.height = CUTSCENE_HEIGHT;
@ -130,7 +142,8 @@ DWORD WINAPI render_soft_main(void)
ddraw->cursor.y = CUTSCENE_HEIGHT / 2; ddraw->cursor.y = CUTSCENE_HEIGHT / 2;
} }
} }
else if(ddraw->primary && ddraw->primary->palette && (ddraw->cursorclip.width != ddraw->width || ddraw->cursorclip.height != ddraw->height)) else if(ddraw->primary && ddraw->primary->palette &&
(ddraw->cursorclip.width != ddraw->width || ddraw->cursorclip.height != ddraw->height))
{ {
ddraw->cursorclip.width = ddraw->width; ddraw->cursorclip.width = ddraw->width;
ddraw->cursorclip.height = ddraw->height; ddraw->cursorclip.height = ddraw->height;