--- src/vidhrdw/wecleman.c.orig 2005-03-15 23:24:03.000000000 -0800 +++ src/vidhrdw/wecleman.c 2005-03-22 21:06:06.003854152 -0800 @@ -226,6 +226,7 @@ UINT16 *rgb_base, *dst_ptr, *dst_end; int src_pitch, dst_pitch, src_f0y, src_fdy, src_f0x, src_fdx, src_fpx; int eax, ebx, ecx; + long rax, rbx; int x1, x2, y1, y2, dx, dy; int xcount0=0, ycount0=0; @@ -318,19 +319,19 @@ { do { - ebx += (int)src_base; + rbx = ebx + (unsigned long)src_base; eax = src_f0x; src_fpx = src_f0x; do { eax >>= PRECISION_X; src_fpx += src_fdx; - eax = *((char *)ebx + eax); + rax = *((char *)rbx + eax); ecx += dx; - if (eax < 0) break; - if (eax) + if (rax < 0) break; + if (rax) { - eax = pal_base[eax]; + eax = pal_base[rax]; dst_ptr[ecx] = eax; } eax = src_fpx; @@ -349,20 +350,20 @@ { do { - ebx += (int)src_base; + rbx = ebx + (unsigned long)src_base; eax = src_f0x; src_fpx = src_f0x; do { eax >>= PRECISION_X; src_fpx += src_fdx; - eax = *((char *)ebx + eax); + rax = *((char *)rbx + eax); ecx += dx; - if (eax < 0) break; - if (eax) + if (rax < 0) break; + if (rax) { - if (eax != 0xa) - eax = pal_base[eax]; + if (rax != 0xa) + eax = pal_base[rax]; else { eax = dst_ptr[ecx]; @@ -386,20 +387,20 @@ { do { - ebx += (int)src_base; + rbx = ebx + (unsigned long)src_base; eax = src_f0x; src_fpx = src_f0x; do { eax >>= PRECISION_X; src_fpx += src_fdx; - eax = *((char *)ebx + eax); + rax = *((char *)rbx + eax); ecx += dx; - if (eax < 0) break; - if (eax) + if (rax < 0) break; + if (rax) { - if (eax != 0xa) - eax = pal_base[eax]; + if (rax != 0xa) + eax = pal_base[rax]; else { eax = dst_ptr[ecx];