aboutsummaryrefslogtreecommitdiff
path: root/engines/teenagent
diff options
context:
space:
mode:
authorD G Turner2012-07-13 10:12:34 +0100
committerD G Turner2012-07-13 10:14:38 +0100
commit9669b73ca811af9672215748e92acb3f77805b75 (patch)
treedb3906a30c308fa036cd9461ca67b4487346f32b /engines/teenagent
parent85cf79a57f52c15f9f214ba8ea924bc0b68b7c02 (diff)
downloadscummvm-rg350-9669b73ca811af9672215748e92acb3f77805b75.tar.gz
scummvm-rg350-9669b73ca811af9672215748e92acb3f77805b75.tar.bz2
scummvm-rg350-9669b73ca811af9672215748e92acb3f77805b75.zip
TEENAGENT: Add symbols for savestate region.
Diffstat (limited to 'engines/teenagent')
-rw-r--r--engines/teenagent/resources.h4
-rw-r--r--engines/teenagent/teenagent.cpp15
2 files changed, 11 insertions, 8 deletions
diff --git a/engines/teenagent/resources.h b/engines/teenagent/resources.h
index cc0d1ebe79..e1540f8500 100644
--- a/engines/teenagent/resources.h
+++ b/engines/teenagent/resources.h
@@ -43,6 +43,10 @@ const uint16 csAddr_rejectMsg = 0xa4d6;
// Reject Messages Address Pointers : (4 * 2-byte) = 0x339e to 0x33a5
const uint16 dsAddr_rejectMsg = 0x339e;
+// Save State Region : 0x6478 to 0xdbf1
+const uint16 dsAddr_saveState = 0x6478;
+const uint16 saveStateSize = 0x777a;
+
class Resources {
public:
void deinit();
diff --git a/engines/teenagent/teenagent.cpp b/engines/teenagent/teenagent.cpp
index ddcefb3607..bf626e2aff 100644
--- a/engines/teenagent/teenagent.cpp
+++ b/engines/teenagent/teenagent.cpp
@@ -228,20 +228,19 @@ Common::Error TeenAgentEngine::loadGameState(int slot) {
if (!in)
return Common::kReadPermissionDenied;
- const uint dataSize = 0x777a;
- assert(res->dseg.size() >= 0x6478 + dataSize);
+ assert(res->dseg.size() >= dsAddr_saveState + saveStateSize);
- char *data = (char *)malloc(dataSize);
+ char *data = (char *)malloc(saveStateSize);
if (!data)
error("[TeenAgentEngine::loadGameState] Cannot allocate buffer");
in->seek(0);
- if (in->read(data, dataSize) != dataSize) {
+ if (in->read(data, saveStateSize) != saveStateSize) {
free(data);
return Common::kReadingFailed;
}
- memcpy(res->dseg.ptr(0x6478), data, dataSize);
+ memcpy(res->dseg.ptr(dsAddr_saveState), data, saveStateSize);
free(data);
@@ -271,9 +270,9 @@ Common::Error TeenAgentEngine::saveGameState(int slot, const Common::String &des
res->dseg.set_word(0x64af, pos.x);
res->dseg.set_word(0x64b1, pos.y);
- assert(res->dseg.size() >= 0x6478 + 0x777a);
- strncpy((char *)res->dseg.ptr(0x6478), desc.c_str(), 0x16);
- out->write(res->dseg.ptr(0x6478), 0x777a);
+ assert(res->dseg.size() >= dsAddr_saveState + saveStateSize);
+ strncpy((char *)res->dseg.ptr(dsAddr_saveState), desc.c_str(), 0x16);
+ out->write(res->dseg.ptr(dsAddr_saveState), saveStateSize);
if (!Graphics::saveThumbnail(*out))
warning("saveThumbnail failed");