[Scummvm-cvs-logs] scummvm master -> f20b8ecaa121afd437fd9d15c71881ff4f3d2696

Kirben kirben at optusnet.com.au
Thu Oct 6 15:12:06 CEST 2011


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
f20b8ecaa1 AGOS: Fix dumping all images option.


Commit: f20b8ecaa121afd437fd9d15c71881ff4f3d2696
    https://github.com/scummvm/scummvm/commit/f20b8ecaa121afd437fd9d15c71881ff4f3d2696
Author: Travis Howell (kirben at optusnet.com.au)
Date: 2011-10-06T06:04:08-07:00

Commit Message:
AGOS: Fix dumping all images option.

Changed paths:
    engines/agos/agos.cpp
    engines/agos/agos.h
    engines/agos/debug.cpp
    engines/agos/feeble.cpp



diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp
index 465b6e0..73a37e4 100644
--- a/engines/agos/agos.cpp
+++ b/engines/agos/agos.cpp
@@ -165,6 +165,7 @@ AGOSEngine::AGOSEngine(OSystem *system, const AGOSGameDescription *gd)
 	_numMusic = 0;
 	_numSFX = 0;
 	_numSpeech = 0;
+	_numZone = 0;
 
 	_numBitArray1 = 0;
 	_numBitArray2 = 0;
@@ -732,6 +733,8 @@ void AGOSEngine_PuzzlePack::setupGame() {
 	_numTextBoxes = 40;
 	_numVars = 2048;
 
+	_numZone = 450;
+
 	AGOSEngine::setupGame();
 }
 #endif
@@ -766,6 +769,7 @@ void AGOSEngine_Simon2::setupGame() {
 	_numMusic = 93;
 	_numSFX = 222;
 	_numSpeech = 11997;
+	_numZone = 140;
 
 	AGOSEngine::setupGame();
 }
@@ -792,6 +796,7 @@ void AGOSEngine_Simon1::setupGame() {
 	_numMusic = 34;
 	_numSFX = 127;
 	_numSpeech = 3623;
+	_numZone = 164;
 
 	AGOSEngine::setupGame();
 }
@@ -812,6 +817,7 @@ void AGOSEngine_Waxworks::setupGame() {
 	_numVars = 255;
 
 	_numMusic = 26;
+	_numZone = 155;
 
 	AGOSEngine::setupGame();
 }
@@ -831,6 +837,7 @@ void AGOSEngine_Elvira2::setupGame() {
 	_numVars = 255;
 
 	_numMusic = 9;
+	_numZone = 99;
 
 	AGOSEngine::setupGame();
 }
@@ -847,6 +854,7 @@ void AGOSEngine_Elvira1::setupGame() {
 	_numVars = 512;
 
 	_numMusic = 14;
+	_numZone = 74;
 
 	AGOSEngine::setupGame();
 }
@@ -860,6 +868,8 @@ void AGOSEngine_PN::setupGame() {
 	_vgaPeriod = 50;
 	_numVars = 256;
 
+	_numZone = 26;
+
 	AGOSEngine::setupGame();
 }
 
diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index ec979ab..cf75842 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -257,6 +257,7 @@ protected:
 
 	uint8 _numMusic, _numSFX;
 	uint16 _numSpeech;
+	uint16 _numZone;
 
 	uint8 _numBitArray1, _numBitArray2, _numBitArray3, _numItemStore;
 	uint16 _numVars;
diff --git a/engines/agos/debug.cpp b/engines/agos/debug.cpp
index 18c4736..841ac6b 100644
--- a/engines/agos/debug.cpp
+++ b/engines/agos/debug.cpp
@@ -297,20 +297,18 @@ void AGOSEngine::dumpVgaScriptAlways(const byte *ptr, uint16 res, uint16 id) {
 }
 
 void AGOSEngine::dumpAllVgaImageFiles() {
-	uint8 start = (getGameType() == GType_PN) ? 0 : 2;
-	uint16 end = (getGameType() == GType_PN) ? 26 : 450;
+	const uint8 start = (getGameType() == GType_PN) ? 0 : 2;
 
-	for (int z = start; z < end; z++) {
+	for (int z = start; z < _numZone; z++) {
 		loadZone(z, false);
 		dumpVgaBitmaps(z);
 	}
 }
 
 void AGOSEngine::dumpAllVgaScriptFiles() {
-	uint8 start = (getGameType() == GType_PN) ? 0 : 2;
-	uint16 end = (getGameType() == GType_PN) ? 26 : 450;
+	const uint8 start = (getGameType() == GType_PN) ? 0 : 2;
 
-	for (int z = start; z < end; z++) {
+	for (int z = start; z < _numZone; z++) {
 		uint16 zoneNum = (getGameType() == GType_PN) ? 0 : z;
 		loadZone(z, false);
 
@@ -516,7 +514,7 @@ void AGOSEngine::dumpBitmap(const char *filename, const byte *offs, uint16 w, ui
 			dst += w;
 			src += w;
 		}
-	} else if ((getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) && w == 320 && (h == 134 || h == 200)) {
+	} else if ((getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) && w == 320 && (h == 134 || h == 135 || h == 200)) {
 		for (j = 0; j != h; j++) {
 			uint16 count = w / 8;
 
@@ -620,7 +618,7 @@ void AGOSEngine::palLoad(byte *pal, const byte *vga1, int a, int b) {
 
 void AGOSEngine::dumpVgaBitmaps(uint16 zoneNum) {
 	uint16 width, height, flags;
-	uint32 offs, curOffs = 0;
+	uint32 offs, offsEnd;
 	const byte *p2;
 	byte pal[768];
 
@@ -636,7 +634,11 @@ void AGOSEngine::dumpVgaBitmaps(uint16 zoneNum) {
 	memset(pal, 0, sizeof(pal));
 	palLoad(pal, vga1, 0, 0);
 
-	for (int i = 1; ; i++) {
+	offsEnd = readUint32Wrapper(vga2 + 8);
+	for (uint i = 1; ; i++) {
+		if ((i * 8) >= offsEnd)
+			break;
+
 		p2 = vga2 + i * 8;
 		offs = readUint32Wrapper(p2);
 
@@ -650,10 +652,8 @@ void AGOSEngine::dumpVgaBitmaps(uint16 zoneNum) {
 		}
 
 		debug(1, "Zone %d: Image %d. Offs= %d Width=%d, Height=%d, Flags=0x%X", zoneNum, i, offs, width, height, flags);
-		if (offs < curOffs || offs >= imageBlockSize || width == 0 || height == 0)
-			return;
-
-		curOffs = offs;
+		if (offs >= imageBlockSize || width == 0 || height == 0)
+			break;
 
 		/* dump bitmap */
 		char buf[40];
diff --git a/engines/agos/feeble.cpp b/engines/agos/feeble.cpp
index e9a91e3..4608969 100644
--- a/engines/agos/feeble.cpp
+++ b/engines/agos/feeble.cpp
@@ -69,6 +69,7 @@ void AGOSEngine_Feeble::setupGame() {
 	_numVars = 255;
 
 	_numSpeech = 10000;
+	_numZone = 450;
 
 	AGOSEngine::setupGame();
 }






More information about the Scummvm-git-logs mailing list