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

kirben at users.sourceforge.net kirben at users.sourceforge.net
Tue Oct 3 00:33:45 CEST 2006


Revision: 24086
          http://svn.sourceforge.net/scummvm/?rev=24086&view=rev
Author:   kirben
Date:     2006-10-02 15:33:38 -0700 (Mon, 02 Oct 2006)

Log Message:
-----------
Add basic single slot load/save support for dimp/swampy for now

Modified Paths:
--------------
    scummvm/trunk/engines/agos/agos.cpp
    scummvm/trunk/engines/agos/agos.h
    scummvm/trunk/engines/agos/items.cpp
    scummvm/trunk/engines/agos/saveload.cpp

Modified: scummvm/trunk/engines/agos/agos.cpp
===================================================================
--- scummvm/trunk/engines/agos/agos.cpp	2006-10-02 22:28:02 UTC (rev 24085)
+++ scummvm/trunk/engines/agos/agos.cpp	2006-10-02 22:33:38 UTC (rev 24086)
@@ -569,7 +569,7 @@
 #endif
 		_tableMemSize = 200000;
 		_vgaBaseDelay = 5;
-		_numVars = 256;
+		_numVars = 255;
 	} else if (getGameType() == GType_SIMON2) {
 		gss = PTR(simon2_settings);
 		_tableIndexBase = 1580 / 4;
@@ -589,23 +589,25 @@
 			_musicIndexBase = 1128 / 4;
 		_soundIndexBase = 1660 / 4;
 		_vgaBaseDelay = 1;
-		_numVars = 256;
-	} else if (getGameType() == GType_ELVIRA) {
+		_numVars = 255;
+	} else if (getGameType() == GType_SIMON1) {
 		gss = PTR(simon1_settings);
+		_tableIndexBase = 1576 / 4;
+		_textIndexBase = 1460 / 4;
 		_numTextBoxes = 20;
-		_numVideoOpcodes = 56;
+		_numVideoOpcodes = 64;
 #ifndef PALMOS_68K
 		_vgaMemSize = 1000000;
 #else
 		_vgaMemSize = gVars->memory[kMemSimon1Games];
 #endif
 		_tableMemSize = 150000;
+		_musicIndexBase = 1316 / 4;
+		_soundIndexBase = 0;
 		_vgaBaseDelay = 1;
-		_numVars = 512;
-	} else {
+		_numVars = 255;
+	} else if (getGameType() == GType_WW) {
 		gss = PTR(simon1_settings);
-		_tableIndexBase = 1576 / 4;
-		_textIndexBase = 1460 / 4;
 		_numTextBoxes = 20;
 		_numVideoOpcodes = 64;
 #ifndef PALMOS_68K
@@ -614,10 +616,20 @@
 		_vgaMemSize = gVars->memory[kMemSimon1Games];
 #endif
 		_tableMemSize = 150000;
-		_musicIndexBase = 1316 / 4;
-		_soundIndexBase = 0;
 		_vgaBaseDelay = 1;
-		_numVars = 256;
+		_numVars = 255;
+	} else if (getGameType() == GType_ELVIRA) {
+		gss = PTR(simon1_settings);
+		_numTextBoxes = 20;
+		_numVideoOpcodes = 56;
+#ifndef PALMOS_68K
+		_vgaMemSize = 1000000;
+#else
+		_vgaMemSize = gVars->memory[kMemSimon1Games];
+#endif
+		_tableMemSize = 150000;
+		_vgaBaseDelay = 1;
+		_numVars = 512;
 	}
 
 	allocItemHeap();

Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h	2006-10-02 22:28:02 UTC (rev 24085)
+++ scummvm/trunk/engines/agos/agos.h	2006-10-02 22:33:38 UTC (rev 24086)
@@ -1196,7 +1196,7 @@
 
 	Item *getNextItemPtrStrange();
 
-	bool saveGame(uint slot, char *caption);
+	bool saveGame(uint slot, const char *caption);
 	bool loadGame(uint slot);
 
 	void openTextWindow();

Modified: scummvm/trunk/engines/agos/items.cpp
===================================================================
--- scummvm/trunk/engines/agos/items.cpp	2006-10-02 22:28:02 UTC (rev 24085)
+++ scummvm/trunk/engines/agos/items.cpp	2006-10-02 22:33:38 UTC (rev 24086)
@@ -2548,10 +2548,28 @@
 	if (_clockStopped != 0)
 		_gameTime += time(NULL) - _clockStopped;
 	_clockStopped = 0;
+
+	if (getGameId() == GID_DIMP) {
+		saveGame(1, (const char *)"dimp");
+	} else if (!getBitFlag(110)) {
+		// Swampy adventures
+		saveGame(1, (const char *)"swampy");
+	}
+
+	//saveHiScores()
 }
 
 void AGOSEngine::o4_loadUserGame() {
 	// 133: load usergame
+
+	// NoPatience or Jumble
+	if (getBitFlag(110)) {
+		//getHiScoreName();
+		return;
+	}
+
+	// XXX
+	loadGame(1);
 }
 
 void AGOSEngine::o4_saveOopsPosition() {

Modified: scummvm/trunk/engines/agos/saveload.cpp
===================================================================
--- scummvm/trunk/engines/agos/saveload.cpp	2006-10-02 22:28:02 UTC (rev 24085)
+++ scummvm/trunk/engines/agos/saveload.cpp	2006-10-02 22:33:38 UTC (rev 24086)
@@ -110,7 +110,11 @@
 char *AGOSEngine::genSaveName(int slot) {
 	static char buf[15];
 
-	if (getGameType() == GType_FF) {
+	if (getGameId() == GID_DIMP) {
+		sprintf(buf, "dimp.sav");
+	} else if (getGameType() == GType_PP) {
+		sprintf(buf, "swampy.sav");
+	} else if (getGameType() == GType_FF) {
 		if (slot == 999) {
 			// Restart state
 			if (getPlatform() == Common::kPlatformWindows)
@@ -576,7 +580,7 @@
 	undefineBox(0x7FFF);
 }
 
-bool AGOSEngine::saveGame(uint slot, char *caption) {
+bool AGOSEngine::saveGame(uint slot, const char *caption) {
 	Common::WriteStream *f;
 	uint item_index, num_item, i, j;
 	TimeEvent *te;
@@ -592,7 +596,7 @@
 		return false;
 	}
 
-	if (getGameType() == GType_FF) {
+	if (getGameType() == GType_FF || getGameType() == GType_PP) {
 		f->write(caption, 100);
 		curTime = time(NULL);
 	} else {
@@ -609,7 +613,7 @@
 		i++;
 	f->writeUint32BE(i);
 
-	if (_clockStopped)
+	if (getGameType() == GType_FF && _clockStopped)
 		gsc += ((uint32)time(NULL) - _clockStopped);
 	for (te = _firstTimeStruct; te; te = te->next) {
 		f->writeUint32BE(te->time - curTime + gsc);
@@ -650,8 +654,8 @@
 		}
 	}
 
-	// write the 255 variables
-	for (i = 0; i != 255; i++) {
+	// write the variables
+	for (i = 0; i != _numVars; i++) {
 		f->writeUint16BE(readVariable(i));
 	}
 
@@ -660,13 +664,19 @@
 		f->writeUint16BE(itemPtrToID(_itemStore[i]));
 	}
 
-	// Write the bits in array 1
-	for (i = 0; i != 16; i++)
-		f->writeUint16BE(_bitArray[i]);
+	if (getGameType() == GType_PP) {
+		// Write the bits in array 1
+		for (i = 0; i != 128; i++)
+			f->writeUint16BE(_bitArray[i]);
+	} else {
+		// Write the bits in array 1
+		for (i = 0; i != 16; i++)
+			f->writeUint16BE(_bitArray[i]);
 
-	// Write the bits in array 2
-	for (i = 0; i != 16; i++)
-		f->writeUint16BE(_bitArrayTwo[i]);
+		// Write the bits in array 2
+		for (i = 0; i != 16; i++)
+			f->writeUint16BE(_bitArrayTwo[i]);
+	}
 
 	// Write the bits in array 3
 	if (getGameType() == GType_FF) {
@@ -709,7 +719,7 @@
 		return false;
 	}
 
-	if (getGameType() == GType_FF) {
+	if (getGameType() == GType_FF || getGameType() == GType_PP) {
 		f->read(ident, 100);
 	} else {
 		f->read(ident, 18);
@@ -781,8 +791,8 @@
 	}
 
 
-	// read the 255 variables
-	for (i = 0; i != 255; i++) {
+	// read the variables
+	for (i = 0; i != _numVars; i++) {
 		writeVariable(i, f->readUint16BE());
 	}
 
@@ -791,13 +801,19 @@
 		_itemStore[i] = derefItem(f->readUint16BE());
 	}
 
-	// Read the bits in array 1
-	for (i = 0; i != 16; i++)
-		_bitArray[i] = f->readUint16BE();
+	if (getGameType() == GType_PP) {
+		// Read the bits in array 1
+		for (i = 0; i != 128; i++)
+			_bitArray[i] = f->readUint16BE();
+	} else {
+		// Read the bits in array 1
+		for (i = 0; i != 16; i++)
+			_bitArray[i] = f->readUint16BE();
 
-	// Read the bits in array 2
-	for (i = 0; i != 16; i++)
-		_bitArrayTwo[i] = f->readUint16BE();
+		// Read the bits in array 2
+		for (i = 0; i != 16; i++)
+			_bitArrayTwo[i] = f->readUint16BE();
+	}
 
 	// Read the bits in array 3
 	if (getGameType() == GType_FF) {


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