Pass VC10_state directly to convertclip, to reduce arguments.

svn-id: r25505
This commit is contained in:
Travis Howell 2007-02-12 03:59:29 +00:00
parent 8ba3553722
commit 189b4abb33
3 changed files with 23 additions and 21 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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);