--- uae/src/picasso96.c 2018/04/24 16:44:50 1.1.1.4 +++ uae/src/picasso96.c 2018/04/24 16:46:13 1.1.1.5 @@ -1009,17 +1009,17 @@ static void do_xor8 (uae_u8 *ptr, long l uae_u32 picasso_InvertRect (void) { uaecptr renderinfo = m68k_areg (regs, 1); - long X = (uae_u16)m68k_dreg (regs, 0); - long Y = (uae_u16)m68k_dreg (regs, 1); - long Width = (uae_u16)m68k_dreg (regs, 2); - long Height = (uae_u16)m68k_dreg (regs, 3); + unsigned long X = (uae_u16)m68k_dreg (regs, 0); + unsigned long Y = (uae_u16)m68k_dreg (regs, 1); + unsigned long Width = (uae_u16)m68k_dreg (regs, 2); + unsigned long Height = (uae_u16)m68k_dreg (regs, 3); uae_u32 mask = m68k_dreg (regs, 4); int Bpp = GetBytesPerPixel (m68k_dreg (regs, 7)); uae_u32 xorval; - int lines; + unsigned int lines; struct RenderInfo ri; uae_u8 *uae_mem, *rectstart; - long width_in_bytes; + unsigned long width_in_bytes; wgfx_flushline (); @@ -1147,13 +1147,17 @@ uae_u32 picasso_FillRect (void) Pen &= Mask; Mask = ~Mask; - oldstart = start = ri.Memory + Y*ri.BytesPerRow + X*Bpp; - for (lines = 0; lines < Height; lines++, start += ri.BytesPerRow) { - uae_u8 *p = start; - for (cols = 0; cols < Width; cols++) { - uae_u32 tmpval = do_get_mem_byte (p) & Mask; - do_put_mem_byte (p, Pen | tmpval); - p++; + oldstart = ri.Memory + Y*ri.BytesPerRow + X*Bpp; + { + uae_u8 *start = oldstart; + uae_u8 *end = start + Height * ri.BytesPerRow; + for (; start != end; start += ri.BytesPerRow) { + uae_u8 *p = start; + unsigned long cols; + for (cols = 0; cols < Width; cols++) { + uae_u32 tmpval = do_get_mem_byte (p + cols) & Mask; + do_put_mem_byte (p + cols, Pen | tmpval); + } } } if (renderinfo_is_current_screen (&ri)) @@ -1167,11 +1171,11 @@ uae_u32 picasso_FillRect (void) * NOTE: If dstri is NULL, then we're only dealing with one RenderInfo area, and called from picasso_BlitRect() */ static void BlitRect (struct RenderInfo *ri, struct RenderInfo *dstri, - uae_u16 srcx, uae_u16 srcy, uae_u16 dstx, uae_u16 dsty, - uae_u16 width, uae_u16 height, uae_u8 mask) + unsigned long srcx, unsigned long srcy, unsigned long dstx, unsigned long dsty, + unsigned long width, unsigned long height, uae_u8 mask) { uae_u8 *src, *dst, *tmp, *tmp2, *tmp3; - int lines; + unsigned long lines; uae_u8 Bpp = GetBytesPerPixel(ri->RGBFormat); uae_u8 *blitsrc; unsigned long total_width = width * Bpp; @@ -1201,15 +1205,15 @@ static void BlitRect (struct RenderInfo if (mask == 0xFF || Bpp > 1) { /* handle normal case efficiently */ if (ri->Memory == dstri->Memory && dsty == srcy) { - int i; + unsigned long i; for (i = 0; i < height; i++, src += ri->BytesPerRow, dst += dstri->BytesPerRow) memmove (dst, src, total_width); } else if (dsty < srcy) { - int i; + unsigned long i; for (i = 0; i < height; i++, src += ri->BytesPerRow, dst += dstri->BytesPerRow) memcpy (dst, src, total_width); } else { - int i; + unsigned long i; src += (height-1) * ri->BytesPerRow; dst += (height-1) * dstri->BytesPerRow; for (i = 0; i < height; i++, src -= ri->BytesPerRow, dst -= dstri->BytesPerRow) @@ -1232,7 +1236,7 @@ static void BlitRect (struct RenderInfo /* copy the temporary buffer to the destination */ for (lines = 0; lines < height; lines++, dst += dstri->BytesPerRow, tmp += linewidth) { - int cols; + unsigned long cols; for (cols = 0; cols < width; cols++) { dst[cols] &= ~mask; dst[cols] |= tmp[cols] & mask; @@ -1263,12 +1267,12 @@ BlitRect: uae_u32 picasso_BlitRect (void) { uaecptr renderinfo = m68k_areg (regs, 1); - uae_u16 srcx = (uae_u16)m68k_dreg (regs, 0); - uae_u16 srcy = (uae_u16)m68k_dreg (regs, 1); - uae_u16 dstx = (uae_u16)m68k_dreg (regs, 2); - uae_u16 dsty = (uae_u16)m68k_dreg (regs, 3); - uae_u16 width = (uae_u16)m68k_dreg (regs, 4); - uae_u16 height = (uae_u16)m68k_dreg (regs, 5); + unsigned long srcx = (uae_u16)m68k_dreg (regs, 0); + unsigned long srcy = (uae_u16)m68k_dreg (regs, 1); + unsigned long dstx = (uae_u16)m68k_dreg (regs, 2); + unsigned long dsty = (uae_u16)m68k_dreg (regs, 3); + unsigned long width = (uae_u16)m68k_dreg (regs, 4); + unsigned long height = (uae_u16)m68k_dreg (regs, 5); uae_u8 Mask = (uae_u8)m68k_dreg (regs, 6); struct RenderInfo ri; @@ -1306,12 +1310,12 @@ uae_u32 picasso_BlitRectNoMaskComplete ( { uaecptr srcri = m68k_areg (regs, 1); uaecptr dstri = m68k_areg (regs, 2); - uae_u16 srcx = m68k_dreg (regs, 0); - uae_u16 srcy = m68k_dreg (regs, 1); - uae_u16 dstx = m68k_dreg (regs, 2); - uae_u16 dsty = m68k_dreg (regs, 3); - uae_u16 width = m68k_dreg (regs, 4); - uae_u16 height = m68k_dreg (regs, 5); + unsigned long srcx = (uae_u16)m68k_dreg (regs, 0); + unsigned long srcy = (uae_u16)m68k_dreg (regs, 1); + unsigned long dstx = (uae_u16)m68k_dreg (regs, 2); + unsigned long dsty = (uae_u16)m68k_dreg (regs, 3); + unsigned long width = (uae_u16)m68k_dreg (regs, 4); + unsigned long height = (uae_u16)m68k_dreg (regs, 5); uae_u8 OpCode = m68k_dreg (regs, 6); uae_u32 RGBFmt = m68k_dreg (regs, 7); struct RenderInfo src_ri, dst_ri; @@ -1409,10 +1413,10 @@ uae_u32 picasso_BlitPattern (void) { uaecptr rinf = m68k_areg (regs, 1); uaecptr pinf = m68k_areg (regs, 2); - long X = (uae_u16)m68k_dreg (regs, 0); - long Y = (uae_u16)m68k_dreg (regs, 1); - long W = (uae_u16)m68k_dreg (regs, 2); - long H = (uae_u16)m68k_dreg (regs, 3); + unsigned long X = (uae_u16)m68k_dreg (regs, 0); + unsigned long Y = (uae_u16)m68k_dreg (regs, 1); + unsigned long W = (uae_u16)m68k_dreg (regs, 2); + unsigned long H = (uae_u16)m68k_dreg (regs, 3); uae_u8 Mask = (uae_u8)m68k_dreg (regs, 4); uae_u32 RGBFmt = m68k_dreg (regs, 7); @@ -1420,7 +1424,7 @@ uae_u32 picasso_BlitPattern (void) int inversion = 0; struct RenderInfo ri; struct Pattern pattern; - uae_u16 rows; + unsigned long rows; uae_u32 fgpen; uae_u8 *uae_mem, *frame_buffer_UAM; int xshift; @@ -1457,10 +1461,10 @@ uae_u32 picasso_BlitPattern (void) xshift = pattern.XOffset & 15; for (rows = 0; rows < H; rows++, uae_mem += ri.BytesPerRow) { - int prow = (rows + pattern.YOffset) & ysize_mask; + unsigned long prow = (rows + pattern.YOffset) & ysize_mask; unsigned int d = do_get_mem_word (((uae_u16 *)pattern.Memory) + prow); uae_u8 *uae_mem2 = uae_mem; - long cols; + unsigned long cols; if (xshift != 0) d = (d << xshift) | (d >> (16 - xshift)); @@ -1559,14 +1563,14 @@ uae_u32 picasso_BlitTemplate (void) uae_u8 inversion = 0; uaecptr rinf = m68k_areg (regs, 1); uaecptr tmpl = m68k_areg (regs, 2); - uae_u16 X = m68k_dreg (regs, 0); - uae_u16 Y = m68k_dreg (regs, 1); - uae_u16 W = m68k_dreg (regs, 2); - uae_u16 H = m68k_dreg (regs, 3); - uae_u16 Mask = m68k_dreg (regs, 4); + unsigned long X = (uae_u16)m68k_dreg (regs, 0); + unsigned long Y = (uae_u16)m68k_dreg (regs, 1); + unsigned long W = (uae_u16)m68k_dreg (regs, 2); + unsigned long H = (uae_u16)m68k_dreg (regs, 3); + uae_u16 Mask = (uae_u16)m68k_dreg (regs, 4); struct Template tmp; struct RenderInfo ri; - long rows; + unsigned long rows; int bitoffset; uae_u32 fgpen; uae_u8 *uae_mem, Bpp, *frame_buffer_UAM; @@ -1606,7 +1610,7 @@ uae_u32 picasso_BlitTemplate (void) tmpl_base = tmp.Memory + tmp.XOffset/8; for (rows = 0; rows < H; rows++, uae_mem += ri.BytesPerRow, tmpl_base += tmp.BytesPerRow) { - long cols; + unsigned long cols; uae_u8 *tmpl_mem = tmpl_base; uae_u8 *uae_mem2 = uae_mem; unsigned int data = *tmpl_mem; @@ -1735,19 +1739,22 @@ uae_u32 picasso_WaitVerticalSync (void) } /* NOTE: Watch for those planeptrs of 0x00000000 and 0xFFFFFFFF for all zero / all one bitmaps !!!! */ -static void PlanarToChunky(struct RenderInfo *ri, struct BitMap *bm, long srcx, long srcy, - long dstx, long dsty, long width, long height, uae_u8 mask) +static void PlanarToChunky(struct RenderInfo *ri, struct BitMap *bm, + unsigned long srcx, unsigned long srcy, + unsigned long dstx, unsigned long dsty, + unsigned long width, unsigned long height, + uae_u8 mask) { int j; uae_u8 *PLANAR[8], *image = ri->Memory + dstx * GetBytesPerPixel (ri->RGBFormat) + dsty*ri->BytesPerRow; int Depth = bm->Depth; - uae_u16 rows, bitoffset = srcx & 7; + unsigned long rows, bitoffset = srcx & 7; long eol_offset; /* if (mask != 0xFF) write_log ("P2C - pixel-width = %d, bit-offset = %d\n", width, bitoffset); */ - + /* Set up our bm->Planes[] pointers to the right horizontal offset */ for (j = 0; j < Depth; j++) { uae_u8 *p = bm->Planes[j]; @@ -1757,9 +1764,9 @@ static void PlanarToChunky(struct Render if ((mask & (1 << j)) == 0) PLANAR[j] = &all_zeros_bitmap; } - eol_offset = (long)bm->BytesPerRow - ((width + 7) >> 3); + eol_offset = (long)bm->BytesPerRow - (long)((width + 7) >> 3); for (rows = 0; rows < height; rows++, image += ri->BytesPerRow) { - long cols; + unsigned long cols; for (cols = 0; cols < width; cols += 8) { int k; @@ -1823,12 +1830,12 @@ uae_u32 picasso_BlitPlanar2Chunky (void) { uaecptr bm = m68k_areg (regs, 1); uaecptr ri = m68k_areg (regs, 2); - uae_u16 srcx = m68k_dreg (regs, 0) & 0xFFFF; - uae_u16 srcy = m68k_dreg (regs, 1) & 0xFFFF; - uae_u16 dstx = m68k_dreg (regs, 2) & 0xFFFF; - uae_u16 dsty = m68k_dreg (regs, 3) & 0xFFFF; - uae_u16 width = m68k_dreg (regs, 4) & 0xFFFF; - uae_u16 height = m68k_dreg (regs, 5) & 0xFFFF; + unsigned long srcx = (uae_u16)m68k_dreg (regs, 0); + unsigned long srcy = (uae_u16)m68k_dreg (regs, 1); + unsigned long dstx = (uae_u16)m68k_dreg (regs, 2); + unsigned long dsty = (uae_u16)m68k_dreg (regs, 3); + unsigned long width = (uae_u16)m68k_dreg (regs, 4); + unsigned long height = (uae_u16)m68k_dreg (regs, 5); uae_u8 minterm = m68k_dreg (regs, 6) & 0xFF; uae_u8 mask = m68k_dreg (regs, 7) & 0xFF; struct RenderInfo local_ri; @@ -1859,8 +1866,9 @@ uae_u32 picasso_BlitPlanar2Chunky (void) /* NOTE: Watch for those planeptrs of 0x00000000 and 0xFFFFFFFF for all zero / all one bitmaps !!!! */ static void PlanarToDirect(struct RenderInfo *ri, struct BitMap *bm, - long srcx, long srcy, long dstx, long dsty, - long width, long height, uae_u8 mask, + unsigned long srcx, unsigned long srcy, + unsigned long dstx, unsigned long dsty, + unsigned long width, unsigned long height, uae_u8 mask, struct ColorIndexMapping *cim) { int j; @@ -1868,7 +1876,7 @@ static void PlanarToDirect(struct Render uae_u8 *PLANAR[8]; uae_u8 *image = ri->Memory + dstx * bpp + dsty * ri->BytesPerRow; int Depth = bm->Depth; - long rows; + unsigned long rows; long eol_offset; /* Set up our bm->Planes[] pointers to the right horizontal offset */ @@ -1881,9 +1889,9 @@ static void PlanarToDirect(struct Render PLANAR[j] = &all_zeros_bitmap; } - eol_offset = (long)bm->BytesPerRow - ((width + (srcx & 7)) >> 3); + eol_offset = (long)bm->BytesPerRow - (long)((width + (srcx & 7)) >> 3); for (rows = 0; rows < height; rows++, image += ri->BytesPerRow) { - long cols; + unsigned long cols; uae_u8 *image2 = image; unsigned int bitoffs = 7 - (srcx & 7); int i; @@ -1965,12 +1973,12 @@ uae_u32 picasso_BlitPlanar2Direct (void) uaecptr bm = m68k_areg (regs, 1); uaecptr ri = m68k_areg (regs, 2); uaecptr cim = m68k_areg (regs, 3); - uae_u16 srcx = m68k_dreg (regs, 0); - uae_u16 srcy = m68k_dreg (regs, 1); - uae_u16 dstx = m68k_dreg (regs, 2); - uae_u16 dsty = m68k_dreg (regs, 3); - uae_u16 width = m68k_dreg (regs, 4); - uae_u16 height = m68k_dreg (regs, 5); + unsigned long srcx = (uae_u16)m68k_dreg (regs, 0); + unsigned long srcy = (uae_u16)m68k_dreg (regs, 1); + unsigned long dstx = (uae_u16)m68k_dreg (regs, 2); + unsigned long dsty = (uae_u16)m68k_dreg (regs, 3); + unsigned long width = (uae_u16)m68k_dreg (regs, 4); + unsigned long height = (uae_u16)m68k_dreg (regs, 5); uae_u8 minterm = m68k_dreg (regs, 6); uae_u8 Mask = m68k_dreg (regs, 7); struct RenderInfo local_ri;