aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2007-02-12 03:59:29 +0000
committerTravis Howell2007-02-12 03:59:29 +0000
commit189b4abb33fd13b29f7641c29c9950fe39fcd1fe (patch)
tree40cf08006e7993bdabeb2b54a8060d430006a943
parent8ba35537223eecc128c3ec0fca725680674aa510 (diff)
downloadscummvm-rg350-189b4abb33fd13b29f7641c29c9950fe39fcd1fe.tar.gz
scummvm-rg350-189b4abb33fd13b29f7641c29c9950fe39fcd1fe.tar.bz2
scummvm-rg350-189b4abb33fd13b29f7641c29c9950fe39fcd1fe.zip
Pass VC10_state directly to convertclip, to reduce arguments.
svn-id: r25505
-rw-r--r--engines/agos/agos.h2
-rw-r--r--engines/agos/res_ami.cpp16
-rw-r--r--engines/agos/vga.cpp26
3 files changed, 23 insertions, 21 deletions
diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index 51d4f4b77a..a841eb96ad 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -1337,7 +1337,7 @@ protected:
byte *getBackGround();
byte *getScaleBuf();
- byte *convertclip(const byte *src, bool is32Colors, uint height, uint width, byte flags);
+ byte *convertclip(VC10_state *state, byte flags);
bool decrunchFile(byte *src, byte *dst, uint32 size);
void loadVGABeardFile(uint id);
diff --git a/engines/agos/res_ami.cpp b/engines/agos/res_ami.cpp
index 7024726e2b..714c4fc727 100644
--- a/engines/agos/res_ami.cpp
+++ b/engines/agos/res_ami.cpp
@@ -115,9 +115,19 @@ static void convertcompressedclip(const byte *src, byte *dst, uint8 colorDepth,
}
}
-byte *AGOSEngine::convertclip(const byte *src, bool is32Colors, uint height, uint width, byte flags) {
+byte *AGOSEngine::convertclip(VC10_state *state, byte flags) {
int length, i, j;
- uint8 colorDepth = is32Colors ? 5 : 4;
+
+ uint8 colorDepth = 4;
+ if (getGameType() == GType_SIMON1) {
+ if (((_lockWord & 0x20) && !state->palette) || (getFeatures() & GF_32COLOR)) {
+ colorDepth = 5;
+ }
+ }
+
+ const byte *src = state->depack_src;
+ int width = state->width * 16;
+ int height = state->height;
free(_planarBuf);
_planarBuf = (byte *)malloc(width * height);
@@ -129,7 +139,7 @@ byte *AGOSEngine::convertclip(const byte *src, bool is32Colors, uint height, uin
length = (width + 15) / 16 * height;
for (i = 0; i < length; i++) {
uint16 w[kMaxColorDepth];
- if (getGameType() == GType_SIMON1 && !is32Colors) {
+ if (getGameType() == GType_SIMON1 && colorDepth == 4) {
for (j = 0; j < colorDepth; ++j) {
w[j] = READ_BE_UINT16(src + j * length * 2);
}
diff --git a/engines/agos/vga.cpp b/engines/agos/vga.cpp
index 0ec2c5004f..c014865d84 100644
--- a/engines/agos/vga.cpp
+++ b/engines/agos/vga.cpp
@@ -630,16 +630,16 @@ void AGOSEngine::vc10_draw() {
if (_dumpImages)
dumpSingleBitmap(_vgaCurZoneNum, state.image, state.depack_src, width, height,
state.palette);
- if (getFeatures() & GF_PLANAR) {
- bool is32Colors = false;
- if (getGameType() == GType_SIMON1) {
- if (((_lockWord & 0x20) && !state.palette) || state.palette == 0xC0 ||
- (getFeatures() & GF_32COLOR)) {
- is32Colors = true;
- }
- }
+ state.width = state.draw_width = width; /* cl */
+ state.height = state.draw_height = height; /* ch */
- state.depack_src = convertclip(state.depack_src, is32Colors, height, width * 16, flags);
+ state.depack_cont = -0x80;
+
+ state.x_skip = 0; /* colums to skip = bh */
+ state.y_skip = 0; /* rows to skip = bl */
+
+ if (getFeatures() & GF_PLANAR) {
+ state.depack_src = convertclip(&state, flags);
// converted planar clip is already uncompressed
if (state.flags & kDFCompressedFlip) {
@@ -664,14 +664,6 @@ void AGOSEngine::vc10_draw() {
}
}
- state.width = state.draw_width = width; /* cl */
- state.height = state.draw_height = height; /* ch */
-
- state.depack_cont = -0x80;
-
- state.x_skip = 0; /* colums to skip = bh */
- state.y_skip = 0; /* rows to skip = bl */
-
uint maxWidth = (getGameType() == GType_FF || getGameType() == GType_PP) ? 640 : 20;
if ((getGameType() == GType_SIMON2 || getGameType() == GType_FF) && width > maxWidth) {
horizontalScroll(&state);