diff options
author | Sven Hesse | 2006-11-27 14:19:30 +0000 |
---|---|---|
committer | Sven Hesse | 2006-11-27 14:19:30 +0000 |
commit | 9afb08341c89d20f54de4b6c9efec69ab60fc79d (patch) | |
tree | 4a4ec7a00af1ff2cd88e0b328d69f2b5ec40cb49 /engines/gob/game_v2.cpp | |
parent | b2fb23a134d7f6486bef0922159fa747411d9f14 (diff) | |
download | scummvm-rg350-9afb08341c89d20f54de4b6c9efec69ab60fc79d.tar.gz scummvm-rg350-9afb08341c89d20f54de4b6c9efec69ab60fc79d.tar.bz2 scummvm-rg350-9afb08341c89d20f54de4b6c9efec69ab60fc79d.zip |
- Properly implemented o2_getCDTrackPos()
- Each save has now its own file (.s??). They also should be endian-safe now
(Can be disabled for testing by uncommenting #define GOB_ORIGSAVES in gob.cpp)
- General endianness-fixes
svn-id: r24794
Diffstat (limited to 'engines/gob/game_v2.cpp')
-rw-r--r-- | engines/gob/game_v2.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/engines/gob/game_v2.cpp b/engines/gob/game_v2.cpp index 80dfa5c50f..b64c9629fb 100644 --- a/engines/gob/game_v2.cpp +++ b/engines/gob/game_v2.cpp @@ -55,9 +55,9 @@ void Game_v2::playTot(int16 skipPlay) { int16 nestLevel; int32 variablesCount; int32 totSize; + int32 i; char *filePtr; char *savedIP; - int16 i; oldNestLevel = _vm->_inter->_nestLevel; oldBreakFrom = _vm->_inter->_breakFromLevel; @@ -199,7 +199,9 @@ void Game_v2::playTot(int16 skipPlay) { if (_vm->_global->_inter_variables == 0) { variablesCount = READ_LE_UINT32((char *)_totFileData + 0x2c); _vm->_global->_inter_variables = new char[variablesCount * 4]; - memset(_vm->_global->_inter_variables, 0, variablesCount * 4); + _vm->_global->_inter_variablesSizes = new byte[variablesCount * 4]; + for (i = 0; i < variablesCount; i++) + WRITE_VAR(i, 0); } _vm->_global->_inter_execPtr = (char *)_totFileData; @@ -479,6 +481,7 @@ int16 Game_v2::checkCollisions(char handleMouse, int16 deltaTime, int16 *pResId, &_mouseButtons, handleMouse); // TODO: What of this is needed? + // Scrolling? int16 width; int16 height; int16 sWidth; @@ -1145,13 +1148,12 @@ void Game_v2::collisionsBlock(void) { if ((_collisionAreas[i].flags & 0x0f) > 8) { char *ptr; - strcpy(_tempStr, - _vm->_global->_inter_variables + _collisionAreas[i].key); + strcpy(_tempStr, GET_VARO_STR(_collisionAreas[i].key)); while ((ptr = strchr(_tempStr, ' ')) != 0) { _vm->_util->cutFromStr(_tempStr, (ptr - _tempStr), 1); ptr = strchr(_tempStr, ' '); } - strcpy(_vm->_global->_inter_variables + _collisionAreas[i].key, _tempStr); + WRITE_VARO_STR(_collisionAreas[i].key, _tempStr); if (_vm->_language == 2) { // loc_16080 warning("GOB2 Stub! Game_v2::collisionsBlock(), language == 2"); } @@ -1161,7 +1163,7 @@ void Game_v2::collisionsBlock(void) { (_collisionAreas[i].flags & 0x0f) <= 8) { str = descArray[var_24].ptr; - strcpy(_tempStr, _vm->_global->_inter_variables + _collisionAreas[i].key); + strcpy(_tempStr, GET_VARO_STR(_collisionAreas[i].key)); if ((_collisionAreas[i].flags & 0x0f) < 7) _vm->_util->prepareStr(_tempStr); @@ -1250,7 +1252,7 @@ int16 Game_v2::multiEdit(int16 time, int16 index, int16 *pCurPos, InputDesc * in if ((collArea->flags & 0x0F) > 10) continue; - strcpy(_tempStr, _vm->_global->_inter_variables + collArea->key); + strcpy(_tempStr, GET_VARO_STR(collArea->key)); _vm->_draw->_destSpriteX = collArea->left; _vm->_draw->_destSpriteY = collArea->top; @@ -1281,9 +1283,8 @@ int16 Game_v2::multiEdit(int16 time, int16 index, int16 *pCurPos, InputDesc * in descInd++; } - for (i = 0; i < 40; i++) { + for (i = 0; i < 40; i++) WRITE_VAR_OFFSET(i * 4 + 0x44, 0); - } while (1) { descInd = 0; @@ -1319,8 +1320,8 @@ int16 Game_v2::multiEdit(int16 time, int16 index, int16 *pCurPos, InputDesc * in collArea->right - collArea->left + 1, collArea->bottom - collArea->top + 1, inpDesc[*pCurPos].backColor, inpDesc[*pCurPos].frontColor, - _vm->_global->_inter_variables + collArea->key, - inpDesc[*pCurPos].fontIndex, collArea->flags, &time, collResId, collIndex); + GET_VARO_STR(collArea->key), inpDesc[*pCurPos].fontIndex, + collArea->flags, &time, collResId, collIndex); if (_vm->_inter->_terminate) return 0; |