1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 14:14:47 +01:00

some fixes for last commig

This commit is contained in:
FunkyFr3sh 2018-11-17 06:09:13 +01:00
parent e4437a278f
commit 1ac3402cfa

View File

@ -266,7 +266,8 @@ HRESULT __stdcall ddraw_surface_Blt(IDirectDrawSurfaceImpl *This, LPRECT lpDestR
pattern[pattern_idx] = (scale_pattern) { ONCE, 0, 0, 1 };
/* Build the pattern! */
for (int x = 1; x < dst_w; x++) {
int x;
for (x = 1; x < dst_w; x++) {
s_src_x = (x * x_ratio) >> 16;
if (s_src_x == last_src_x)
{
@ -305,10 +306,10 @@ HRESULT __stdcall ddraw_surface_Blt(IDirectDrawSurfaceImpl *This, LPRECT lpDestR
/* Do the actual blitting */
void *d, *s;
int count = 0;
int y;
for (int y = 0; y < dst_h; y++) {
for (y = 0; y < dst_h; y++) {
dest_base = dst_x + This->width * (y + dst_y);
@ -322,6 +323,7 @@ HRESULT __stdcall ddraw_surface_Blt(IDirectDrawSurfaceImpl *This, LPRECT lpDestR
switch (current->type)
{
case ONCE:
{
if (This->bpp == 8)
{
((unsigned char *)This->surface)[dest_base + current->dst_index] =
@ -333,30 +335,34 @@ HRESULT __stdcall ddraw_surface_Blt(IDirectDrawSurfaceImpl *This, LPRECT lpDestR
((unsigned short *)Source->surface)[source_base + current->src_index];
}
break;
}
case REPEAT:
{
if (This->bpp == 8)
{
d = ((unsigned char *)This->surface + dest_base + current->dst_index);
unsigned char *d = ((unsigned char *)This->surface + dest_base + current->dst_index);
unsigned char v = ((unsigned char *)Source->surface)[source_base + current->src_index];
count = current->count;
while (count-- > 0)
*((unsigned char *)d)++ = v;
*d++ = v;
}
else if (This->bpp == 16)
{
d = ((unsigned short *)This->surface + dest_base + current->dst_index);
unsigned short *d = ((unsigned short *)This->surface + dest_base + current->dst_index);
unsigned short v = ((unsigned short *)Source->surface)[source_base + current->src_index];
count = current->count;
while (count-- > 0)
*((unsigned short *)d)++ = v;
*d++ = v;
}
break;
}
case SEQUENCE:
{
void *d, *s;
if (This->bpp == 8)
{
d = ((unsigned char *)This->surface) + dest_base + current->dst_index;
@ -370,7 +376,7 @@ HRESULT __stdcall ddraw_surface_Blt(IDirectDrawSurfaceImpl *This, LPRECT lpDestR
memcpy(d, s, current->count * This->lXPitch);
break;
}
case END:
default:
break;