aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2013-01-07 00:30:21 +0100
committerStrangerke2013-01-07 00:30:21 +0100
commit9b8b1d63318546d9f4196730025ed00abce5ebcc (patch)
treeb30341947036b84d59f11d6485bfdfaa76ca796b
parenta91eaeb4f78608bf511b5d3c39f54646263365aa (diff)
downloadscummvm-rg350-9b8b1d63318546d9f4196730025ed00abce5ebcc.tar.gz
scummvm-rg350-9b8b1d63318546d9f4196730025ed00abce5ebcc.tar.bz2
scummvm-rg350-9b8b1d63318546d9f4196730025ed00abce5ebcc.zip
HOPKINS: Simplify Copy_vga16, get rid of unsafe uint16 casts
-rw-r--r--engines/hopkins/graphics.cpp38
1 files changed, 13 insertions, 25 deletions
diff --git a/engines/hopkins/graphics.cpp b/engines/hopkins/graphics.cpp
index 057d120405..48d68aeb8b 100644
--- a/engines/hopkins/graphics.cpp
+++ b/engines/hopkins/graphics.cpp
@@ -450,14 +450,13 @@ void GraphicsManager::m_scroll16A(const byte *surface, int xs, int ys, int width
int yNext;
int xCtr;
const byte *palette;
- int pixelWord;
int yCtr;
const byte *srcCopyP;
byte *destCopyP;
assert(_videoPtr);
srcP = xs + _lineNbr2 * ys + surface;
- destP = destX + destX + WinScan * destY + (byte *)_videoPtr->pixels;
+ destP = (byte *)_videoPtr->pixels + destX + destX + WinScan * destY;
yNext = height;
Agr_x = 0;
Agr_y = 0;
@@ -473,16 +472,16 @@ void GraphicsManager::m_scroll16A(const byte *surface, int xs, int ys, int width
Agr_x = 0;
do {
- pixelWord = *(const uint16 *)(palette + 2 * *srcP);
- *(uint16 *)destP = pixelWord;
- ++srcP;
+ destP[0] = palette[2 * srcP[0]];
+ destP[1] = palette[(2 * srcP[0]) + 1];
destP += 2;
if ((unsigned int)Agr_x >= 100) {
Agr_x -= 100;
- *(uint16 *)destP = pixelWord;
+ destP[0] = palette[2 * srcP[0]];
+ destP[1] = palette[(2 * srcP[0]) + 1];
destP += 2;
}
-
+ ++srcP;
--xCtr;
} while (xCtr);
@@ -506,23 +505,18 @@ void GraphicsManager::m_scroll16A(const byte *surface, int xs, int ys, int width
}
void GraphicsManager::Copy_Vga16(const byte *surface, int xp, int yp, int width, int height, int destX, int destY) {
- const byte *srcP;
- uint16 *destP;
int yCount;
int xCount;
int xCtr;
const byte *palette;
- const uint16 *tempSrcP;
- uint16 srcByte;
- uint16 *tempDestP;
int savedXCount;
- uint16 *loopDestP;
+ byte *loopDestP;
const byte *loopSrcP;
int yCtr;
assert(_videoPtr);
- srcP = xp + 320 * yp + surface;
- destP = (uint16 *)(30 * WinScan + destX + destX + destX + destX + WinScan * 2 * destY + (byte *)_videoPtr->pixels);
+ const byte *srcP = surface + xp + 320 * yp;
+ byte *destP = (byte *)_videoPtr->pixels + 30 * WinScan + destX + destX + destX + destX + WinScan * 2 * destY;
yCount = height;
xCount = width;
@@ -535,21 +529,15 @@ void GraphicsManager::Copy_Vga16(const byte *surface, int xp, int yp, int width,
palette = PAL_PIXELS;
do {
- tempSrcP = (const uint16 *)(palette + 2 * *srcP);
- srcByte = *tempSrcP;
- *destP = *tempSrcP;
- *(destP + 1) = srcByte;
-
- tempDestP = (uint16 *)((byte *)destP + WinScan);
- *tempDestP = srcByte;
- *(tempDestP + 1) = srcByte;
+ destP[0] = destP[2] = destP[WinScan] = destP[WinScan + 2] = palette[2 * srcP[0]];
+ destP[1] = destP[3] = destP[WinScan + 1] = destP[WinScan + 3] = palette[(2 * srcP[0]) + 1];
++srcP;
- destP = (uint16 *)((byte *)tempDestP - WinScan + 4);
+ destP += 4;
--xCtr;
} while (xCtr);
xCount = savedXCount;
- destP = (uint16 *)((byte *)loopDestP + WinScan * 2);
+ destP = loopDestP + WinScan * 2;
srcP = loopSrcP + 320;
yCount = yCtr - 1;
} while (yCtr != 1);