aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/engine/savegame.cpp6
-rw-r--r--engines/sci/engine/seg_manager.h5
2 files changed, 4 insertions, 7 deletions
diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp
index c916aa0b4e..8278730d61 100644
--- a/engines/sci/engine/savegame.cpp
+++ b/engines/sci/engine/savegame.cpp
@@ -555,16 +555,18 @@ static bool clone_entry_used(CloneTable *table, int n) {
static void load_script(EngineState *s, SegmentId seg) {
Resource *script, *heap = NULL;
Script *scr = (Script *)(s->seg_manager->_heap[seg]);
+ assert(scr);
scr->buf = (byte *)malloc(scr->buf_size);
+ assert(scr->buf);
script = s->resmgr->findResource(kResourceTypeScript, scr->nr, 0);
if (s->version >= SCI_VERSION(1,001,000))
heap = s->resmgr->findResource(kResourceTypeHeap, scr->nr, 0);
- s->seg_manager->mcpyInOut(0, script->data, script->size, seg, SEG_ID);
+ memcpy(scr->buf, script->data, script->size);
if (s->seg_manager->isSci1_1)
- s->seg_manager->mcpyInOut(scr->script_size, heap->data, heap->size, seg, SEG_ID);
+ memcpy(scr->buf + scr->script_size, heap->data, heap->size);
}
// FIXME: The following should likely become a SegManager method
diff --git a/engines/sci/engine/seg_manager.h b/engines/sci/engine/seg_manager.h
index 4e7ae1d765..f68fa6a23a 100644
--- a/engines/sci/engine/seg_manager.h
+++ b/engines/sci/engine/seg_manager.h
@@ -249,11 +249,6 @@ public:
// Returns : (int16) The value read from the specified location
int16 getHeap(reg_t reg);
- // Writes a 16 bit value into a script's heap representation
- // Parameters: (reg_t) reg: The address to write to
- // (int16) value: The value to write
- //void putHeap(reg_t reg, int16 value);
-
// Copies a byte string into a script's heap representation
// Parameters: (int) dst: The script-relative offset of the destination area
// (const void *) src: Pointer to the data source location