aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Kołodziejski2002-11-06 17:55:44 +0000
committerPaweł Kołodziejski2002-11-06 17:55:44 +0000
commit85c7c9ffe62c5a059e18fcf6a7c2acf68476d23d (patch)
tree2b4809509ae6f5db9907ce7f75e818cdfb0cc422
parent73452fa331df18d1226db253ab6b9cc87d3d23ea (diff)
downloadscummvm-rg350-85c7c9ffe62c5a059e18fcf6a7c2acf68476d23d.tar.gz
scummvm-rg350-85c7c9ffe62c5a059e18fcf6a7c2acf68476d23d.tar.bz2
scummvm-rg350-85c7c9ffe62c5a059e18fcf6a7c2acf68476d23d.zip
applied patch: #634326, and changed strip ranges for after and before scumm v7,
added comments to saveload svn-id: r5448
-rw-r--r--scumm/gfx.cpp17
-rw-r--r--scumm/gfx.h2
-rw-r--r--scumm/object.cpp10
-rw-r--r--scumm/saveload.cpp6
-rw-r--r--scumm/scumm.h2
5 files changed, 28 insertions, 9 deletions
diff --git a/scumm/gfx.cpp b/scumm/gfx.cpp
index 56f5ef26ce..3fef4a947b 100644
--- a/scumm/gfx.cpp
+++ b/scumm/gfx.cpp
@@ -430,8 +430,12 @@ void Scumm::initBGBuffers(int height)
size = itemsize * gdi._numZBuffer;
memset(createResource(rtBuffer, 9, size), 0, size);
- for (i = 0; i < 4; i++)
- gdi._imgBufOffs[i] = i * itemsize;
+ for (i = 0; i < (int)ARRAYSIZE(gdi._imgBufOffs); i++) {
+ if (i < gdi._numZBuffer)
+ gdi._imgBufOffs[i] = i * itemsize;
+ else
+ gdi._imgBufOffs[i] = (gdi._numZBuffer - 1) * itemsize;
+ }
}
void Scumm::setPaletteFromPtr(byte *ptr)
@@ -1854,8 +1858,13 @@ void Scumm::updateDirtyRect(int virt, int left, int right, int top, int bottom,
lp = (left >> 3) + _screenStartStrip;
if (lp < 0)
lp = 0;
- if (rp >= 240)
- rp = 240;
+ if (_features & GF_AFTER_V7) {
+ if (rp > 409)
+ rp = 409;
+ } else {
+ if (rp >= 200)
+ rp = 200;
+ }
if (lp <= rp) {
num = rp - lp + 1;
sp = &gfxUsageBits[lp];
diff --git a/scumm/gfx.h b/scumm/gfx.h
index d1df0deaa4..eca0c543f4 100644
--- a/scumm/gfx.h
+++ b/scumm/gfx.h
@@ -116,7 +116,7 @@ struct Gdi {
uint _readOffs;
int _numZBuffer;
- int _imgBufOffs[4];
+ int _imgBufOffs[5];
byte _disable_zbuffer;
int32 _numStrips;
diff --git a/scumm/object.cpp b/scumm/object.cpp
index cf67337bd7..64a89c8ebd 100644
--- a/scumm/object.cpp
+++ b/scumm/object.cpp
@@ -1433,9 +1433,13 @@ void Scumm::removeBlastObject(BlastObject *eo)
if (left_strip < 0)
left_strip = 0;
- if (right_strip >= 409)
- right_strip = 409;
-
+ if (_features & GF_AFTER_V7) {
+ if (right_strip > 409)
+ right_strip = 409;
+ } else {
+ if (right_strip >= 200)
+ right_strip = 200;
+ }
for (i = left_strip; i <= right_strip; i++)
gdi.resetBackground(top, bottom, i);
diff --git a/scumm/saveload.cpp b/scumm/saveload.cpp
index e9d5080206..f8a5d031b1 100644
--- a/scumm/saveload.cpp
+++ b/scumm/saveload.cpp
@@ -410,6 +410,8 @@ void Scumm::saveOrLoad(Serializer *s)
// MKLINE(Scumm, _palManipEnd, sleByte),
// MKLINE(Scumm, _palManipCounter, sleUint16),
+ // MKARRAY(Scumm, gfxUsageBits[0], sleUint32, 410),
+ // replace below:
MKARRAY(Scumm, gfxUsageBits[0], sleUint32, 200),
MKLINE(Scumm, gdi._transparency, sleByte),
MKARRAY(Scumm, _currentPalette[0], sleByte, 768),
@@ -421,6 +423,7 @@ void Scumm::saveOrLoad(Serializer *s)
MKLINE(Scumm, _egoPositioned, sleByte),
+ // FIXME: Should be 5, not 4 :
MKARRAY(Scumm, gdi._imgBufOffs[0], sleUint16, 4),
MKLINE(Scumm, gdi._numZBuffer, sleByte),
@@ -521,6 +524,8 @@ void Scumm::saveOrLoad(Serializer *s)
// MKLINE(Scumm, _palManipEnd, sleByte),
// MKLINE(Scumm, _palManipCounter, sleUint16),
+ // MKARRAY(Scumm, gfxUsageBits[0], sleUint32, 410),
+ // replace below:
MKARRAY(Scumm, gfxUsageBits[0], sleUint32, 200),
MKLINE(Scumm, gdi._transparency, sleByte),
MKARRAY(Scumm, _currentPalette[0], sleByte, 768),
@@ -532,6 +537,7 @@ void Scumm::saveOrLoad(Serializer *s)
MKLINE(Scumm, _egoPositioned, sleByte),
+ // FIXME: Should be 5, not 4 :
MKARRAY(Scumm, gdi._imgBufOffs[0], sleUint16, 4),
MKLINE(Scumm, gdi._numZBuffer, sleByte),
diff --git a/scumm/scumm.h b/scumm/scumm.h
index 797390d497..2c934640cb 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -840,7 +840,7 @@ public:
uint16 _palManipCounter;
byte *_palManipPalette;
byte *_palManipIntermediatePal;
- uint32 gfxUsageBits[409];
+ uint32 gfxUsageBits[410];
byte *_shadowPalette;
int _shadowPaletteSize;
byte _currentPalette[3 * 256];