[Scummvm-cvs-logs] SF.net SVN: scummvm: [26478] scummvm/trunk/engines/agos

kirben at users.sourceforge.net kirben at users.sourceforge.net
Sun Apr 15 02:12:10 CEST 2007


Revision: 26478
          http://scummvm.svn.sourceforge.net/scummvm/?rev=26478&view=rev
Author:   kirben
Date:     2007-04-14 17:12:09 -0700 (Sat, 14 Apr 2007)

Log Message:
-----------
Cleanup.

Modified Paths:
--------------
    scummvm/trunk/engines/agos/agos.h
    scummvm/trunk/engines/agos/draw.cpp
    scummvm/trunk/engines/agos/gfx.cpp
    scummvm/trunk/engines/agos/script_e1.cpp
    scummvm/trunk/engines/agos/vga.cpp
    scummvm/trunk/engines/agos/vga.h

Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h	2007-04-14 18:51:38 UTC (rev 26477)
+++ scummvm/trunk/engines/agos/agos.h	2007-04-15 00:12:09 UTC (rev 26478)
@@ -1271,13 +1271,15 @@
 	void opp_restartClock();
 
 protected:
-	bool drawImages_clip(VC10_state *state);
+	bool drawImage_clip(VC10_state *state);
 
-	void drawImages(VC10_state *state);
-	void drawImages_Amiga(VC10_state *state);
-	void drawImages_Simon(VC10_state *state);
-	void drawImages_Feeble(VC10_state *state);
+	void drawImage_init(VC10_state *state);
 
+	void drawImage(VC10_state *state);
+	void drawImage_Amiga(VC10_state *state);
+	void drawImage_Simon(VC10_state *state);
+	void drawImage_Feeble(VC10_state *state);
+
 	void scaleClip(int16 h, int16 w, int16 y, int16 x, int16 scrollY);
 	void horizontalScroll(VC10_state *state);
 	void verticalScroll(VC10_state *state);

Modified: scummvm/trunk/engines/agos/draw.cpp
===================================================================
--- scummvm/trunk/engines/agos/draw.cpp	2007-04-14 18:51:38 UTC (rev 26477)
+++ scummvm/trunk/engines/agos/draw.cpp	2007-04-15 00:12:09 UTC (rev 26478)
@@ -27,6 +27,7 @@
 
 #include "agos/agos.h"
 #include "agos/intern.h"
+#include "agos/vga.h"
 
 namespace AGOS {
 
@@ -53,8 +54,7 @@
 void AGOSEngine::animateSprites() {
 	VgaSprite *vsp;
 	VgaPointersEntry *vpe;
-	const byte *vc_ptr_org = _vcPtr;
-	uint16 params[5];							// parameters to vc10
+	VC10_state state;
 
 	if (_paletteFlag == 2)
 		_paletteFlag = 1;
@@ -84,26 +84,14 @@
 		_vgaCurSpriteId = vsp->id;
 		_vgaCurSpritePriority = vsp->priority;
 
-		params[0] = readUint16Wrapper(&vsp->image);
-		if (getGameType() == GType_ELVIRA1 || getGameType() == GType_ELVIRA2 || getGameType() == GType_WW) {
-			params[1] = readUint16Wrapper(&vsp->x);
-			params[2] = readUint16Wrapper(&vsp->y);
-			params[3] = READ_BE_UINT16(&vsp->flags);
-		} else {
-			params[1] = readUint16Wrapper(&vsp->palette);
-			params[2] = readUint16Wrapper(&vsp->x);
-			params[3] = readUint16Wrapper(&vsp->y);
+		state.image = vsp->image;
+		state.palette = (vsp->palette & 15) * 16;
+		state.x = vsp->x;
+		state.y = vsp->y;
+		state.flags = vsp->flags;
 
-			if (getGameType() == GType_SIMON1) {
-				params[4] = READ_BE_UINT16(&vsp->flags);
-			} else {
-				*(byte *)(&params[4]) = (byte)vsp->flags;
-			}
-		}
+		drawImage_init(&state);
 
-		_vcPtr = (const byte *)params;
-		vc10_draw();
-
 		vsp++;
 	}
 
@@ -111,14 +99,12 @@
 		memset(_backBuf, 0, _screenWidth * _screenHeight);
 
 	_updateScreen = true;
-	_vcPtr = vc_ptr_org;
 }
 
 void AGOSEngine::animateSpritesDebug() {
 	VgaSprite *vsp;
 	VgaPointersEntry *vpe;
-	const byte *vc_ptr_org = _vcPtr;
-	uint16 params[5];							// parameters to vc10_draw
+	VC10_state state;
 
 	if (_paletteFlag == 2)
 		_paletteFlag = 1;
@@ -137,38 +123,25 @@
 		if (vsp->image)
 			printf("id:%5d image:%3d base-color:%3d x:%3d y:%3d flags:%x\n",
 							vsp->id, vsp->image, vsp->palette, vsp->x, vsp->y, vsp->flags);
-		params[0] = readUint16Wrapper(&vsp->image);
-		if (getGameType() == GType_ELVIRA1 || getGameType() == GType_ELVIRA2 || getGameType() == GType_WW) {
-			params[1] = readUint16Wrapper(&vsp->x);
-			params[2] = readUint16Wrapper(&vsp->y);
-			params[3] = READ_BE_UINT16(&vsp->flags);
-		} else {
-			params[1] = readUint16Wrapper(&vsp->palette);
-			params[2] = readUint16Wrapper(&vsp->x);
-			params[3] = readUint16Wrapper(&vsp->y);
 
-			if (getGameType() == GType_SIMON1) {
-				params[4] = READ_BE_UINT16(&vsp->flags);
-			} else {
-				*(byte *)(&params[4]) = (byte)vsp->flags;
-			}
-		}
+		state.image = vsp->image;
+		state.palette = (vsp->palette & 15) * 16;
+		state.x = vsp->x;
+		state.y = vsp->y;
+		state.flags = vsp->flags;
 
-		_vcPtr = (const byte *)params;
-		vc10_draw();
+		drawImage_init(&state);
 
 		vsp++;
 	}
 
 	_updateScreen = true;
-	_vcPtr = vc_ptr_org;
 }
 
 void AGOSEngine::animateSpritesByY() {
 	VgaSprite *vsp;
 	VgaPointersEntry *vpe;
-	const byte *vc_ptr_org = _vcPtr;
-	uint16 params[5];							// parameters to vc10
+	VC10_state state;
 	int16 spriteTable[180][2];
 	
 	byte *src;
@@ -216,6 +189,7 @@
 		}
 
 		vsp = &_vgaSprites[slot];
+
 		vsp->windowNum &= 0x7FFF;
 
 		vpe = &_vgaBufferPointers[vsp->zoneNum];
@@ -226,18 +200,16 @@
 		_vgaCurSpriteId = vsp->id;
 		_vgaCurSpritePriority = vsp->priority;
 
-		params[0] = readUint16Wrapper(&vsp->image);
-		params[1] = readUint16Wrapper(&vsp->palette);
-		params[2] = readUint16Wrapper(&vsp->x);
-		params[3] = readUint16Wrapper(&vsp->y);
-		*(byte *)(&params[4]) = (byte)vsp->flags;
+		state.image = vsp->image;
+		state.palette = 0;
+		state.x = vsp->x;
+		state.y = vsp->y;
+		state.flags = vsp->flags;
 
-		_vcPtr = (const byte *)params;
-		vc10_draw();
+		drawImage_init(&state);
 	}
 
 	_updateScreen = true;
-	_vcPtr = vc_ptr_org;
 }
 
 void AGOSEngine::displayBoxStars() {

Modified: scummvm/trunk/engines/agos/gfx.cpp
===================================================================
--- scummvm/trunk/engines/agos/gfx.cpp	2007-04-14 18:51:38 UTC (rev 26477)
+++ scummvm/trunk/engines/agos/gfx.cpp	2007-04-15 00:12:09 UTC (rev 26478)
@@ -166,7 +166,7 @@
 	}
 }
 
-bool AGOSEngine::drawImages_clip(VC10_state *state) {
+bool AGOSEngine::drawImage_clip(VC10_state *state) {
 	const uint16 *vlut;
 	uint maxWidth, maxHeight;
 	int cur;
@@ -224,7 +224,7 @@
 	return 1;
 }
 
-void AGOSEngine::drawImages_Feeble(VC10_state *state) {
+void AGOSEngine::drawImage_Feeble(VC10_state *state) {
 	if (state->flags & kDFCompressed) {
 		if (state->flags & kDFScaled) {
 			state->surf_addr = getScaleBuf();
@@ -293,7 +293,7 @@
 				scaleClip(_scaleHeight, _scaleWidth, _scaleY, _scaleX, _scaleY + _scrollY);
 			}
 		} else {
-			if (drawImages_clip(state) == 0)
+			if (drawImage_clip(state) == 0)
 				return;
 
 			state->surf_addr += state->x + state->y * state->surf_pitch;
@@ -359,7 +359,7 @@
 			}
 		}
 	} else {
-		if (drawImages_clip(state) == 0)
+		if (drawImage_clip(state) == 0)
 			return;
 
 		state->surf_addr += state->x + state->y * state->surf_pitch;
@@ -387,10 +387,10 @@
 	} 
 }
 
-void AGOSEngine::drawImages_Simon(VC10_state *state) {
+void AGOSEngine::drawImage_Simon(VC10_state *state) {
 	const uint16 *vlut = &_videoWindows[_windowNum * 4];
 
-	if (drawImages_clip(state) == 0)
+	if (drawImage_clip(state) == 0)
 		return;
 
 	uint xoffs, yoffs;
@@ -583,12 +583,12 @@
 	}
 }
 
-void AGOSEngine::drawImages_Amiga(VC10_state *state) {
+void AGOSEngine::drawImage_Amiga(VC10_state *state) {
 	uint8 *dst;
 	const byte *src;
 	const uint16 *vlut = &_videoWindows[_windowNum * 4];
 
-	if (drawImages_clip(state) == 0)
+	if (drawImage_clip(state) == 0)
 		return;
 
 	uint xoffs = ((vlut[0] - _videoWindows[16]) * 2 + state->x) * 8;
@@ -638,10 +638,10 @@
 	}
 }
 
-void AGOSEngine::drawImages(VC10_state *state) {
+void AGOSEngine::drawImage(VC10_state *state) {
 	const uint16 *vlut = &_videoWindows[_windowNum * 4];
 
-	if (drawImages_clip(state) == 0)
+	if (drawImage_clip(state) == 0)
 		return;
 
 	uint xoffs, yoffs;

Modified: scummvm/trunk/engines/agos/script_e1.cpp
===================================================================
--- scummvm/trunk/engines/agos/script_e1.cpp	2007-04-14 18:51:38 UTC (rev 26477)
+++ scummvm/trunk/engines/agos/script_e1.cpp	2007-04-15 00:12:09 UTC (rev 26478)
@@ -990,7 +990,7 @@
 	state.surf_addr = getBackBuf();
 	state.surf_pitch = _dxSurfacePitch;
 
-	drawImages(&state);
+	drawImage(&state);
 }
 
 } // End of namespace AGOS

Modified: scummvm/trunk/engines/agos/vga.cpp
===================================================================
--- scummvm/trunk/engines/agos/vga.cpp	2007-04-14 18:51:38 UTC (rev 26477)
+++ scummvm/trunk/engines/agos/vga.cpp	2007-04-15 00:12:09 UTC (rev 26478)
@@ -578,30 +578,20 @@
 }
 
 void AGOSEngine::vc10_draw() {
-	byte *p2;
-	uint width, height;
-	byte flags;
 	VC10_state state;
 
 	state.image = (int16)vcReadNextWord();
-	if (state.image == 0)
-		return;
 
+	state.palette = 0;
 	if (getGameType() == GType_FF || getGameType() == GType_PP) {
-		state.palette = (_vcPtr[0] * 16);
 		_vcPtr += 2;
 	} else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
 		state.palette = (_vcPtr[1] * 16);
 		_vcPtr += 2;
-	} else {
-		state.palette = 0;
 	}
 
 	state.x = (int16)vcReadNextWord();
-	state.x -= _scrollX;
-
 	state.y = (int16)vcReadNextWord();
-	state.y -= _scrollY;
 
 	if (getGameType() == GType_SIMON2 || getGameType() == GType_FF || getGameType() == GType_PP) {
 		state.flags = vcReadNextByte();
@@ -609,11 +599,25 @@
 		state.flags = vcReadNextWord();
 	}
 
-	if (state.image < 0)
-		state.image = vcReadVar(-state.image);
+	drawImage_init(&state);
+}
 
-	p2 = _curVgaFile2 + state.image * 8;
-	state.depack_src = _curVgaFile2 + readUint32Wrapper(p2);
+void AGOSEngine::drawImage_init(VC10_state *state) {
+	if (state->image == 0)
+		return;
+
+	byte *p2;
+	uint width, height;
+	byte flags;
+
+	state->x -= _scrollX;
+	state->y -= _scrollY;
+
+	if (state->image < 0)
+		state->image = vcReadVar(-state->image);
+
+	p2 = _curVgaFile2 + state->image * 8;
+	state->depack_src = _curVgaFile2 + readUint32Wrapper(p2);
 	if (getGameType() == GType_FF || getGameType() == GType_PP) {
 		width = READ_LE_UINT16(p2 + 6);
 		height = READ_LE_UINT16(p2 + 4) & 0x7FFF;
@@ -628,74 +632,74 @@
 		return;
 
 	if (_dumpImages)
-		dumpSingleBitmap(_vgaCurZoneNum, state.image, state.depack_src, width, height,
-											 state.palette);
-	state.width = state.draw_width = width;		/* cl */
-	state.height = state.draw_height = height;	/* ch */
+		dumpSingleBitmap(_vgaCurZoneNum, state->image, state->depack_src, width, height,
+											 state->palette);
+	state->width = state->draw_width = width;	/* cl */
+	state->height = state->draw_height = height;	/* ch */
 
-	state.depack_cont = -0x80;
+	state->depack_cont = -0x80;
 
-	state.x_skip = 0;				/* colums to skip = bh */
-	state.y_skip = 0;				/* rows to skip   = bl */
+	state->x_skip = 0;				/* colums to skip = bh */
+	state->y_skip = 0;				/* rows to skip   = bl */
 
 	if (getFeatures() & GF_PLANAR) {
-		state.depack_src = convertImage(&state, ((flags & 0x80) != 0));
+		state->depack_src = convertImage(state, ((flags & 0x80) != 0));
 
 		// converted planar clip is already uncompressed
-		if (state.flags & kDFCompressedFlip) {
-			state.flags &= ~kDFCompressedFlip;
-			state.flags |= kDFFlip;
+		if (state->flags & kDFCompressedFlip) {
+			state->flags &= ~kDFCompressedFlip;
+			state->flags |= kDFFlip;
 		}
-		if (state.flags & kDFCompressed) {
-			state.flags &= ~kDFCompressed;
+		if (state->flags & kDFCompressed) {
+			state->flags &= ~kDFCompressed;
 		}
 	} else if (getGameType() == GType_FF || getGameType() == GType_PP) {
 		if (flags & 0x80) {
-			state.flags |= kDFCompressed;
+			state->flags |= kDFCompressed;
 		}
 	} else {
-		if (flags & 0x80 && !(state.flags & kDFCompressedFlip)) {
-			if (state.flags & kDFFlip) {
-				state.flags &= ~kDFFlip;
-				state.flags |= kDFCompressedFlip;
+		if (flags & 0x80 && !(state->flags & kDFCompressedFlip)) {
+			if (state->flags & kDFFlip) {
+				state->flags &= ~kDFFlip;
+				state->flags |= kDFCompressedFlip;
 			} else {
-				state.flags |= kDFCompressed;
+				state->flags |= kDFCompressed;
 			}
 		}
 	}
 
 	uint maxWidth = (getGameType() == GType_FF || getGameType() == GType_PP) ? 640 : 20;
 	if ((getGameType() == GType_SIMON2 || getGameType() == GType_FF) && width > maxWidth) {
-		horizontalScroll(&state);
+		horizontalScroll(state);
 		return;
 	}
 	if (getGameType() == GType_FF && height > 480) {
-		verticalScroll(&state);
+		verticalScroll(state);
 		return;
 	}
 
 	if (getGameType() != GType_FF && getGameType() != GType_PP) {
-		if (state.flags & kDFCompressedFlip) {
-			state.depack_src = vc10_uncompressFlip(state.depack_src, width, height);
-		} else if (state.flags & kDFFlip) {
-			state.depack_src = vc10_flip(state.depack_src, width, height);
+		if (state->flags & kDFCompressedFlip) {
+			state->depack_src = vc10_uncompressFlip(state->depack_src, width, height);
+		} else if (state->flags & kDFFlip) {
+			state->depack_src = vc10_flip(state->depack_src, width, height);
 		}
 	}
 
-	state.surf2_addr = getFrontBuf();
-	state.surf2_pitch = _dxSurfacePitch;
+	state->surf2_addr = getFrontBuf();
+	state->surf2_pitch = _dxSurfacePitch;
 
-	state.surf_addr = getBackBuf();
-	state.surf_pitch = _dxSurfacePitch;
+	state->surf_addr = getBackBuf();
+	state->surf_pitch = _dxSurfacePitch;
 
 	if (getGameType() == GType_FF || getGameType() == GType_PP) {
-		drawImages_Feeble(&state);
+		drawImage_Feeble(state);
 	} else if (getFeatures() & GF_32COLOR) {
-		drawImages_Amiga(&state);
+		drawImage_Amiga(state);
 	} else if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
-		drawImages_Simon(&state);
+		drawImage_Simon(state);
 	} else {
-		drawImages(&state);
+		drawImage(state);
 	}
 }
 

Modified: scummvm/trunk/engines/agos/vga.h
===================================================================
--- scummvm/trunk/engines/agos/vga.h	2007-04-14 18:51:38 UTC (rev 26477)
+++ scummvm/trunk/engines/agos/vga.h	2007-04-15 00:12:09 UTC (rev 26478)
@@ -134,6 +134,8 @@
 	int8 depack_cont;
 
 	byte depack_dest[480];
+
+	VC10_state() { memset(this, 0, sizeof(*this)); }
 };
 
 byte *vc10_depackColumn(VC10_state *vs);


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