[Scummvm-cvs-logs] SF.net SVN: scummvm: [26759] scummvm/trunk/engines/agos
kirben at users.sourceforge.net
kirben at users.sourceforge.net
Sun May 6 11:46:44 CEST 2007
Revision: 26759
http://scummvm.svn.sourceforge.net/scummvm/?rev=26759&view=rev
Author: kirben
Date: 2007-05-06 02:46:43 -0700 (Sun, 06 May 2007)
Log Message:
-----------
Cleanup.
Modified Paths:
--------------
scummvm/trunk/engines/agos/agos.h
scummvm/trunk/engines/agos/gfx.cpp
scummvm/trunk/engines/agos/vga.cpp
Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h 2007-05-06 09:35:08 UTC (rev 26758)
+++ scummvm/trunk/engines/agos/agos.h 2007-05-06 09:46:43 UTC (rev 26759)
@@ -1039,10 +1039,7 @@
void drawImage_init(int16 image, uint16 palette, uint16 x, uint16 y, uint16 flags);
- void drawImage(VC10_state *state);
- void drawImage_Amiga(VC10_state *state);
- void drawImage_Simon(VC10_state *state);
- void drawImage_Feeble(VC10_state *state);
+ virtual void drawImage(VC10_state *state);
void scaleClip(int16 h, int16 w, int16 y, int16 x, int16 scrollY);
void horizontalScroll(VC10_state *state);
@@ -1407,6 +1404,8 @@
};
const OpcodeEntrySimon1 *_opcodesSimon1;
+
+ virtual void drawImage(VC10_state *state);
};
class AGOSEngine_Simon2 : public AGOSEngine_Simon1 {
@@ -1494,6 +1493,8 @@
const OpcodeEntryFeeble *_opcodesFeeble;
+ virtual void drawImage(VC10_state *state);
+
void drawMousePart(int image, byte x, byte y);
virtual void drawMousePointer();
Modified: scummvm/trunk/engines/agos/gfx.cpp
===================================================================
--- scummvm/trunk/engines/agos/gfx.cpp 2007-05-06 09:35:08 UTC (rev 26758)
+++ scummvm/trunk/engines/agos/gfx.cpp 2007-05-06 09:46:43 UTC (rev 26759)
@@ -224,7 +224,7 @@
return 1;
}
-void AGOSEngine::drawImage_Feeble(VC10_state *state) {
+void AGOSEngine_Feeble::drawImage(VC10_state *state) {
if (state->flags & kDFCompressed) {
if (state->flags & kDFScaled) {
state->surf_addr = getScaleBuf();
@@ -387,12 +387,15 @@
}
}
-void AGOSEngine::drawImage_Simon(VC10_state *state) {
+void AGOSEngine_Simon1::drawImage(VC10_state *state) {
const uint16 *vlut = &_videoWindows[_windowNum * 4];
if (drawImage_clip(state) == 0)
return;
+ if (getFeatures() & GF_32COLOR)
+ state->palette = 0xC0;
+
uint xoffs, yoffs;
if (getGameType() == GType_SIMON1 && (_subroutine == 2923 || _subroutine == 2926)) {
// Allow one section of Simon the Sorcerer 1 introduction to be displayed
@@ -408,46 +411,73 @@
state->surf_addr += xoffs + yoffs * state->surf2_pitch;
if (state->flags & kDFMasked) {
- byte *mask, *src, *dst;
- byte h;
- uint w;
+ if (getFeatures() & GF_32COLOR) {
+ const byte *mask = state->srcPtr + (state->width * state->y_skip * 16) + (state->x_skip * 8);
+ byte *src = state->surf2_addr;
+ byte *dst = state->surf_addr;
- state->x_skip *= 4;
- state->dl = state->width;
- state->dh = state->height;
+ state->draw_width *= 2;
- vc10_skip_cols(state);
-
- w = 0;
- do {
- mask = vc10_depackColumn(state); /* esi */
- src = state->surf2_addr + w * 2; /* ebx */
- dst = state->surf_addr + w * 2; /* edi */
-
- h = state->draw_height;
+ uint h = state->draw_height;
do {
- if ((getGameType() == GType_SIMON1) && getBitFlag(88)) {
- /* transparency */
- if (mask[0] & 0xF0) {
- if ((dst[0] & 0x0F0) == 0x20)
- dst[0] = src[0];
- }
- if (mask[0] & 0x0F) {
- if ((dst[1] & 0x0F0) == 0x20)
- dst[1] = src[1];
- }
- } else {
- /* no transparency */
- if (mask[0] & 0xF0)
- dst[0] = src[0];
- if (mask[0] & 0x0F)
- dst[1] = src[1];
+ for (uint i = 0; i != state->draw_width; i++) {
+ if ((getGameType() == GType_SIMON1) && getBitFlag(88)) {
+ /* transparency */
+ if (mask[i] & 1 && (dst[i] & 1) == 0x20)
+ dst[i] = src[i];
+ } else {
+ /* no transparency */
+ if (mask[i] & 1)
+ dst[i] = src[i];
+ }
}
- mask++;
dst += state->surf_pitch;
src += state->surf2_pitch;
+ mask += state->width * 16;
} while (--h);
- } while (++w != state->draw_width);
+
+ } else {
+ byte *mask, *src, *dst;
+ byte h;
+ uint w;
+
+ state->x_skip *= 4;
+ state->dl = state->width;
+ state->dh = state->height;
+
+ vc10_skip_cols(state);
+
+ w = 0;
+ do {
+ mask = vc10_depackColumn(state); /* esi */
+ src = state->surf2_addr + w * 2; /* ebx */
+ dst = state->surf_addr + w * 2; /* edi */
+
+ h = state->draw_height;
+ do {
+ if ((getGameType() == GType_SIMON1) && getBitFlag(88)) {
+ /* transparency */
+ if (mask[0] & 0xF0) {
+ if ((dst[0] & 0x0F0) == 0x20)
+ dst[0] = src[0];
+ }
+ if (mask[0] & 0x0F) {
+ if ((dst[1] & 0x0F0) == 0x20)
+ dst[1] = src[1];
+ }
+ } else {
+ /* no transparency */
+ if (mask[0] & 0xF0)
+ dst[0] = src[0];
+ if (mask[0] & 0x0F)
+ dst[1] = src[1];
+ }
+ mask++;
+ dst += state->surf_pitch;
+ src += state->surf2_pitch;
+ } while (--h);
+ } while (++w != state->draw_width);
+ }
} else if ((((_lockWord & 0x20) && state->palette == 0) || state->palette == 0xC0)) {
const byte *src;
byte *dst;
@@ -583,61 +613,6 @@
}
}
-void AGOSEngine::drawImage_Amiga(VC10_state *state) {
- uint8 *dst;
- const byte *src;
- const uint16 *vlut = &_videoWindows[_windowNum * 4];
-
- if (drawImage_clip(state) == 0)
- return;
-
- uint xoffs = ((vlut[0] - _videoWindows[16]) * 2 + state->x) * 8;
- uint yoffs = (vlut[1] - _videoWindows[17] + state->y);
-
- state->surf2_addr += xoffs + yoffs * state->surf_pitch;
- state->surf_addr += xoffs + yoffs * state->surf2_pitch;
-
- if (state->flags & kDFMasked) {
- const byte *mask = state->srcPtr + (state->width * state->y_skip * 16) + (state->x_skip * 8);
- src = state->surf2_addr;
- dst = state->surf_addr;
-
- state->draw_width *= 2;
-
- uint h = state->draw_height;
- do {
- for (uint i = 0; i != state->draw_width; i++) {
- if ((getGameType() == GType_SIMON1) && getBitFlag(88)) {
- /* transparency */
- if (mask[i] & 1 && (dst[i] & 1) == 0x20)
- dst[i] = src[i];
- } else {
- /* no transparency */
- if (mask[i] & 1)
- dst[i] = src[i];
- }
- }
- dst += state->surf_pitch;
- src += state->surf2_pitch;
- mask += state->width * 16;
- } while (--h);
- } else {
- src = state->srcPtr + (state->width * state->y_skip * 16) + (state->x_skip * 8);
- dst = state->surf_addr;
-
- state->draw_width *= 2;
-
- uint h = state->draw_height;
- do {
- for (uint i = 0; i != state->draw_width; i++)
- if ((state->flags & kDFNonTrans) || src[i])
- dst[i] = src[i];
- dst += _screenWidth;
- src += state->width * 16;
- } while (--h);
- }
-}
-
void AGOSEngine::drawImage(VC10_state *state) {
const uint16 *vlut = &_videoWindows[_windowNum * 4];
Modified: scummvm/trunk/engines/agos/vga.cpp
===================================================================
--- scummvm/trunk/engines/agos/vga.cpp 2007-05-06 09:35:08 UTC (rev 26758)
+++ scummvm/trunk/engines/agos/vga.cpp 2007-05-06 09:46:43 UTC (rev 26759)
@@ -689,15 +689,7 @@
state.surf_addr = getBackBuf();
state.surf_pitch = _dxSurfacePitch;
- if (getGameType() == GType_FF || getGameType() == GType_PP) {
- drawImage_Feeble(&state);
- } else if (getFeatures() & GF_32COLOR) {
- drawImage_Amiga(&state);
- } else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
- drawImage_Simon(&state);
- } else {
- drawImage(&state);
- }
+ drawImage(&state);
}
void AGOSEngine::vc12_delay() {
@@ -712,8 +704,8 @@
num = vcReadVarOrWord() * _frameRate;
}
- // Work around to allow inventory arrows to be
- // shown in some versions of Simon the Sorcerer 1
+ // Work around to allow inventory arrows to be shown
+ // in non-Windows versions of Simon the Sorcerer 1
if ((getGameType() == GType_SIMON1) && vsp->id == 128)
num = 0;
else
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list