mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-03 09:23:37 +00:00
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
This commit is contained in:
parent
aa0c86e755
commit
0fb5429318
@ -540,7 +540,7 @@ reg_t kBaseSetter(EngineState *s, int argc, reg_t *argv) {
|
||||
|
||||
// WORKAROUND for a problem in LSL1VGA. This allows the casino door to be opened,
|
||||
// till the actual problem is found
|
||||
if (g_sci->getGameId() == "lsl1sci" && s->currentRoomNumber() == 300) {
|
||||
if (s->currentRoomNumber() == 300 && g_sci->getGameId() == "lsl1sci") {
|
||||
int top = readSelectorValue(s->_segMan, object, SELECTOR(brTop));
|
||||
writeSelectorValue(s->_segMan, object, SELECTOR(brTop), top + 2);
|
||||
}
|
||||
|
@ -115,8 +115,7 @@ static void checkListPointer(SegManager *segMan, reg_t addr) {
|
||||
|
||||
reg_t kNewList(EngineState *s, int argc, reg_t *argv) {
|
||||
reg_t listbase;
|
||||
List *l;
|
||||
l = s->_segMan->allocateList(&listbase);
|
||||
List *l = s->_segMan->allocateList(&listbase);
|
||||
l->first = l->last = NULL_REG;
|
||||
debugC(2, kDebugLevelNodes, "New listbase at %04x:%04x", PRINT_REG(listbase));
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user