diff options
| author | Filippos Karapetis | 2010-06-24 09:52:08 +0000 | 
|---|---|---|
| committer | Filippos Karapetis | 2010-06-24 09:52:08 +0000 | 
| commit | 0fb54293181d76d5b84cb7da5ff54c883630bf86 (patch) | |
| tree | d33b91e0b8c4e9495803bc15faa28a25657bfd58 /engines/sci/engine/seg_manager.cpp | |
| parent | aa0c86e7557fbe68d33dec52139015562004742f (diff) | |
| download | scummvm-rg350-0fb54293181d76d5b84cb7da5ff54c883630bf86.tar.gz scummvm-rg350-0fb54293181d76d5b84cb7da5ff54c883630bf86.tar.bz2 scummvm-rg350-0fb54293181d76d5b84cb7da5ff54c883630bf86.zip | |
Initialize the stack with 'S' or 's' characters, like SSCI does (ultimately, we should not change the stack again like we do in op_link - this is what Sierra is doing). Some cleanup
svn-id: r50207
Diffstat (limited to 'engines/sci/engine/seg_manager.cpp')
| -rw-r--r-- | engines/sci/engine/seg_manager.cpp | 8 | 
1 files changed, 7 insertions, 1 deletions
| diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp index 5371238304..b464438553 100644 --- a/engines/sci/engine/seg_manager.cpp +++ b/engines/sci/engine/seg_manager.cpp @@ -402,6 +402,12 @@ DataStack *SegManager::allocateStack(int size, SegmentId *segid) {  	retval->_entries = (reg_t *)calloc(size, sizeof(reg_t));  	retval->_capacity = size; +	// SSCI initializes the stack with "S" characters (uppercase S in SCI0-SCI1, +	// lowercase s in SCI0 and SCI11) - probably stands for "stack" +	byte filler = (getSciVersion() >= SCI_VERSION_01 && getSciVersion() <= SCI_VERSION_1_LATE) ? 'S' : 's'; +	for (int i = 0; i < size; i++) +		retval->_entries[i] = make_reg(0, filler); +  	return retval;  } @@ -448,7 +454,7 @@ byte *SegManager::getHunkPointer(reg_t addr) {  	HunkTable *ht = (HunkTable *)getSegment(addr.segment, SEG_TYPE_HUNK);  	if (!ht || !ht->isValidEntry(addr.offset)) { -		warning("getHunkPointer() with invalid handle"); +		warning("getHunkPointer() with invalid handle %04x:%04x", PRINT_REG(addr));  		return NULL;  	} | 
