[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