[Scummvm-cvs-logs] scummvm master -> b8f288873bbcd54e7a984ccd9ae56e82e78aa631

sev- sev at scummvm.org
Wed May 4 23:19:42 CEST 2016


This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
f6444a03d2 SCUMM HE: Fix conditionBit size
534f723fa5 TONY: Fix buffer overrun
d7fe475266 TONY: Remove redundant checks
d5b4f8ee7e PARALLACTION: Init class variables
5cfbb176e7 PARALLACTION: Use strncpy
b8f288873b SCUMM HE: Fix premultiplied T14 calculation


Commit: f6444a03d2df7c7455f908494ca0b633f7da706a
    https://github.com/scummvm/scummvm/commit/f6444a03d2df7c7455f908494ca0b633f7da706a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-04T18:27:17+02:00

Commit Message:
SCUMM HE: Fix conditionBit size

Changed paths:
    engines/scumm/he/wiz_he.cpp
    engines/scumm/he/wiz_he.h



diff --git a/engines/scumm/he/wiz_he.cpp b/engines/scumm/he/wiz_he.cpp
index 3f99223..19e9dbb 100644
--- a/engines/scumm/he/wiz_he.cpp
+++ b/engines/scumm/he/wiz_he.cpp
@@ -1433,7 +1433,7 @@ void Wiz::displayWizImage(WizImage *pwi) {
 	}
 }
 
-uint8 *Wiz::drawWizImage(int resNum, int state, int maskNum, int maskState, int x1, int y1, int zorder, int shadow, int zbuffer, const Common::Rect *clipBox, int flags, int dstResNum, const uint8 *palPtr, uint16 conditionBits) {
+uint8 *Wiz::drawWizImage(int resNum, int state, int maskNum, int maskState, int x1, int y1, int zorder, int shadow, int zbuffer, const Common::Rect *clipBox, int flags, int dstResNum, const uint8 *palPtr, uint32 conditionBits) {
 	debug(3, "drawWizImage(resNum %d, state %d maskNum %d maskState %d x1 %d y1 %d flags 0x%X zorder %d shadow %d zbuffer %d dstResNum %d conditionBits: 0x%x)", resNum, state, maskNum, maskState, x1, y1, flags, zorder, shadow, zbuffer, dstResNum, conditionBits);
 	uint8 *dataPtr;
 	uint8 *dst = NULL;
@@ -1592,7 +1592,7 @@ uint8 *Wiz::drawWizImage(int resNum, int state, int maskNum, int maskState, int
 
 void Wiz::drawWizImageEx(uint8 *dst, uint8 *dataPtr, uint8 *maskPtr, int dstPitch, int dstType,
 		int dstw, int dsth, int srcx, int srcy, int srcw, int srch, int state, const Common::Rect *rect,
-		int flags, const uint8 *palPtr, int transColor, uint8 bitDepth, const uint8 *xmapPtr, uint16 conditionBits) {
+		int flags, const uint8 *palPtr, int transColor, uint8 bitDepth, const uint8 *xmapPtr, uint32 conditionBits) {
 	uint8 *wizh = _vm->findWrappedBlock(MKTAG('W','I','Z','H'), dataPtr, state, 0);
 	assert(wizh);
 	uint32 comp   = READ_LE_UINT32(wizh + 0x0);
@@ -1647,7 +1647,7 @@ void Wiz::drawWizImageEx(uint8 *dst, uint8 *dataPtr, uint8 *maskPtr, int dstPitc
 
 void Wiz::copyCompositeWizImage(uint8 *dst, uint8 *wizPtr, uint8 *compositeInfoBlockPtr, uint8 *maskPtr, int dstPitch, int dstType,
 		int dstw, int dsth, int srcx, int srcy, int srcw, int srch, int state, const Common::Rect *clipBox,
-		int flags, const uint8 *palPtr, int transColor, uint8 bitDepth, const uint8 *xmapPtr, uint16 conditionBits) {
+		int flags, const uint8 *palPtr, int transColor, uint8 bitDepth, const uint8 *xmapPtr, uint32 conditionBits) {
 
 	uint8 *nestedBlockHeader = _vm->heFindResource(MKTAG('N','E','S','T'), wizPtr);
 	assert(nestedBlockHeader);
@@ -1765,7 +1765,7 @@ void Wiz::copyCompositeWizImage(uint8 *dst, uint8 *wizPtr, uint8 *compositeInfoB
 }
 
 void Wiz::copy555WizImage(uint8 *dst, uint8 *wizd, int dstPitch, int dstType,
-		int dstw, int dsth, int srcx, int srcy, const Common::Rect *clipBox, uint16 conditionBits) {
+		int dstw, int dsth, int srcx, int srcy, const Common::Rect *clipBox, uint32 conditionBits) {
 
 	int rawROP = conditionBits & kWMSBRopMask;
 	int paramROP = (conditionBits & kWMSBReservedBits) >> kWMSBRopParamRShift;
diff --git a/engines/scumm/he/wiz_he.h b/engines/scumm/he/wiz_he.h
index fb83884..202f774 100644
--- a/engines/scumm/he/wiz_he.h
+++ b/engines/scumm/he/wiz_he.h
@@ -237,8 +237,8 @@ public:
 	void displayWizImage(WizImage *pwi);
 	void processWizImage(const WizParameters *params);
 
-	uint8 *drawWizImage(int resNum, int state, int maskNum, int maskState, int x1, int y1, int zorder, int shadow, int zbuffer, const Common::Rect *clipBox, int flags, int dstResNum, const uint8 *palPtr, uint16 conditionBits);
-	void drawWizImageEx(uint8 *dst, uint8 *src, uint8 *mask, int dstPitch, int dstType, int dstw, int dsth, int srcx, int srcy, int srcw, int srch, int state, const Common::Rect *rect, int flags, const uint8 *palPtr, int transColor, uint8 bitDepth, const uint8 *xmapPtr, uint16 conditionBits);
+	uint8 *drawWizImage(int resNum, int state, int maskNum, int maskState, int x1, int y1, int zorder, int shadow, int zbuffer, const Common::Rect *clipBox, int flags, int dstResNum, const uint8 *palPtr, uint32 conditionBits);
+	void drawWizImageEx(uint8 *dst, uint8 *src, uint8 *mask, int dstPitch, int dstType, int dstw, int dsth, int srcx, int srcy, int srcw, int srch, int state, const Common::Rect *rect, int flags, const uint8 *palPtr, int transColor, uint8 bitDepth, const uint8 *xmapPtr, uint32 conditionBits);
 	void drawWizPolygon(int resNum, int state, int id, int flags, int shadow, int dstResNum, int palette);
 	void drawWizComplexPolygon(int resNum, int state, int po_x, int po_y, int shadow, int angle, int zoom, const Common::Rect *r, int flags, int dstResNum, int palette);
 	void drawWizPolygonTransform(int resNum, int state, Common::Point *wp, int flags, int shadow, int dstResNum, int palette);
@@ -249,9 +249,9 @@ public:
 
 	void copyCompositeWizImage(uint8 *dst, uint8 *wizPtr, uint8 *wizd, uint8 *maskPtr, int dstPitch, int dstType,
 		int dstw, int dsth, int srcx, int srcy, int srcw, int srch, int state, const Common::Rect *clipBox,
-		int flags, const uint8 *palPtr, int transColor, uint8 bitDepth, const uint8 *xmapPtr, uint16 conditionBits);
+		int flags, const uint8 *palPtr, int transColor, uint8 bitDepth, const uint8 *xmapPtr, uint32 conditionBits);
 	void copy555WizImage(uint8 *dst, uint8 *wizd, int dstPitch, int dstType,
-			int dstw, int dsth, int srcx, int srcy, const Common::Rect *clipBox, uint16 conditionBits);
+			int dstw, int dsth, int srcx, int srcy, const Common::Rect *clipBox, uint32 conditionBits);
 #endif
 
 	static void copyAuxImage(uint8 *dst1, uint8 *dst2, const uint8 *src, int dstw, int dsth, int srcx, int srcy, int srcw, int srch, uint8 bitdepth);


Commit: 534f723fa55197a0402400af85d86cafe1c5934d
    https://github.com/scummvm/scummvm/commit/534f723fa55197a0402400af85d86cafe1c5934d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-04T21:15:51+02:00

Commit Message:
TONY: Fix buffer overrun

Changed paths:
    engines/tony/mpal/loadmpc.cpp



diff --git a/engines/tony/mpal/loadmpc.cpp b/engines/tony/mpal/loadmpc.cpp
index 8d030f1..01892a4 100644
--- a/engines/tony/mpal/loadmpc.cpp
+++ b/engines/tony/mpal/loadmpc.cpp
@@ -331,7 +331,7 @@ static const byte *parseItem(const byte *lpBuf, LpMpalItem lpmiItem) {
 
 	byte len = *lpBuf;
 	lpBuf++;
-	memcpy(lpmiItem->_lpszDescribe, lpBuf, MIN((byte)127, len));
+	memcpy(lpmiItem->_lpszDescribe, lpBuf, MIN((byte)MAX_DESCRIBE_SIZE, len));
 	lpBuf += len;
 
 	if (len >= MAX_DESCRIBE_SIZE)


Commit: d7fe475266707691e7fd61ee16cb51292e4d5b93
    https://github.com/scummvm/scummvm/commit/d7fe475266707691e7fd61ee16cb51292e4d5b93
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-04T21:15:58+02:00

Commit Message:
TONY: Remove redundant checks

Since we have ((color & 0x1f) * 6) / 6, it cannot be > 0x1f, thus removing these
checks as redundant.

Changed paths:
    engines/tony/gfxcore.cpp



diff --git a/engines/tony/gfxcore.cpp b/engines/tony/gfxcore.cpp
index 2a32926..076f1ee 100644
--- a/engines/tony/gfxcore.cpp
+++ b/engines/tony/gfxcore.cpp
@@ -1733,13 +1733,6 @@ void RMGfxSourceBuffer8AA::drawAA(RMGfxTargetBuffer &bigBuf, RMGfxPrimitive *pri
 				g /= 5;
 				b /= 5;
 
-				if (r > 0x1f)
-					r = 0x1f;
-				if (g > 0x3f)
-					g = 0x3f;
-				if (b > 0x1f)
-					b = 0x1f;
-
 				mybuf[0] = (r << 11) | (g << 5) | b;
 			}
 		}


Commit: d5b4f8ee7eb6c53d6cf68274a9aded3f99be7650
    https://github.com/scummvm/scummvm/commit/d5b4f8ee7eb6c53d6cf68274a9aded3f99be7650
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-04T21:15:58+02:00

Commit Message:
PARALLACTION: Init class variables

Changed paths:
    engines/parallaction/parallaction.cpp



diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp
index 2b75e78..af898b2 100644
--- a/engines/parallaction/parallaction.cpp
+++ b/engines/parallaction/parallaction.cpp
@@ -60,6 +60,7 @@ Parallaction::Parallaction(OSystem *syst, const PARALLACTIONGameDescription *gam
 	DebugMan.addDebugChannel(kDebugMenu, "menu", "Menu debug level");
 	DebugMan.addDebugChannel(kDebugInventory, "inventory", "Inventory debug level");
 
+	_screenWidth = 0;
 	_screenHeight = 0;
 	_screenSize = 0;
 	_gameType = 0;
@@ -86,6 +87,7 @@ Parallaction::Parallaction(OSystem *syst, const PARALLACTIONGameDescription *gam
 	_inventory = 0;
 	_currentLocationIndex = 0;
 	_numLocations = 0;
+	_language = 0;
 }
 
 Parallaction::~Parallaction() {


Commit: 5cfbb176e793797d1345429f88d7efe4b733f98e
    https://github.com/scummvm/scummvm/commit/5cfbb176e793797d1345429f88d7efe4b733f98e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-04T21:15:58+02:00

Commit Message:
PARALLACTION: Use strncpy

Changed paths:
    engines/parallaction/objects.cpp
    engines/parallaction/parallaction.cpp
    engines/parallaction/parallaction_br.cpp



diff --git a/engines/parallaction/objects.cpp b/engines/parallaction/objects.cpp
index 50a5b38..68890cd 100644
--- a/engines/parallaction/objects.cpp
+++ b/engines/parallaction/objects.cpp
@@ -163,7 +163,7 @@ int16 Program::findLocal(const char* name) {
 int16 Program::addLocal(const char *name, int16 value, int16 min, int16 max) {
 	assert(_numLocals < NUM_LOCALS);
 
-	strcpy(_localNames[_numLocals], name);
+	strncpy(_localNames[_numLocals], name, 10);
 	_locals[_numLocals].setRange(min, max);
 	_locals[_numLocals].setValue(value);
 
diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp
index af898b2..e11aeed 100644
--- a/engines/parallaction/parallaction.cpp
+++ b/engines/parallaction/parallaction.cpp
@@ -210,7 +210,7 @@ void Parallaction::allocateLocationSlot(const char *name) {
 		error("No more location slots available. Please report this immediately to ScummVM team");
 
 	if (_currentLocationIndex  == -1) {
-		strcpy(_locationNames[_numLocations], name);
+		strncpy(_locationNames[_numLocations], name, 10);
 		_currentLocationIndex = _numLocations;
 
 		_numLocations++;
diff --git a/engines/parallaction/parallaction_br.cpp b/engines/parallaction/parallaction_br.cpp
index 1e1c0b0..78131c4 100644
--- a/engines/parallaction/parallaction_br.cpp
+++ b/engines/parallaction/parallaction_br.cpp
@@ -320,7 +320,7 @@ void Parallaction_br::changeLocation() {
 
 	freeLocation(false);
 	// load new location
-	strcpy(_location._name, _newLocationName.c_str());
+	strncpy(_location._name, _newLocationName.c_str(), 100);
 	parseLocation(_location._name);
 
 	if (_location._startPosition.x != -1000) {


Commit: b8f288873bbcd54e7a984ccd9ae56e82e78aa631
    https://github.com/scummvm/scummvm/commit/b8f288873bbcd54e7a984ccd9ae56e82e78aa631
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-05-04T22:53:46+02:00

Commit Message:
SCUMM HE: Fix premultiplied T14 calculation

We were hitting integer overflow which lead to shadow artifacts.

Changed paths:
    engines/scumm/he/moonbase/moonbase.cpp



diff --git a/engines/scumm/he/moonbase/moonbase.cpp b/engines/scumm/he/moonbase/moonbase.cpp
index b6bfd45..1f9d843 100644
--- a/engines/scumm/he/moonbase/moonbase.cpp
+++ b/engines/scumm/he/moonbase/moonbase.cpp
@@ -118,13 +118,13 @@ void Moonbase::blitT14WizImage(uint8 *dst, int dstw, int dsth, int dstPitch, con
 					if (pixels >= sx) {
 						int alpha = code >> 1;
 						uint16 color = READ_LE_UINT16(singlesOffset);
+						uint32 orig = READ_LE_UINT16(dst1);
 
 						//WRITE_LE_UINT16(dst1, color); // ENABLE_PREMUL_ALPHA = 0
 						// ENABLE_PREMUL_ALPHA = 2
 						if (alpha > 32) {
 							alpha -= 32;
 
-							uint32 orig = READ_LE_UINT16(dst1);
 							uint32 oR = orig & 0x7c00;
 							uint32 oG = orig & 0x03e0;
 							uint32 oB = orig & 0x1f;
@@ -134,10 +134,11 @@ void Moonbase::blitT14WizImage(uint8 *dst, int dstw, int dsth, int dstPitch, con
 
 							WRITE_LE_UINT16(dst1, (dR & 0x7c00) | (dG & 0x3e0) | (dB & 0x1f));
 						} else {
-							uint32 orig = READ_LE_UINT16(dst1);
-							uint32 pass1 = ((((orig << 16) | orig) & 0x3e07c1f * alpha) >> 5) & 0x3e07c1f;
-							uint32 pass2 = (((pass1 << 16) | pass1) + color) & 0xffff;
-							WRITE_LE_UINT16(dst1, pass2);
+							uint32 pix = ((orig << 16) | orig) & 0x3e07c1f;
+							pix = (((pix * alpha) & 0xffffffff) >> 5) & 0x3e07c1f;
+							pix = ((pix << 16) + pix + color) & 0xffff;
+
+							WRITE_LE_UINT16(dst1, pix);
 						}
 
 						dst1 += 2;






More information about the Scummvm-git-logs mailing list