[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