aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/game_v2.cpp
diff options
context:
space:
mode:
authorSven Hesse2006-11-27 14:19:30 +0000
committerSven Hesse2006-11-27 14:19:30 +0000
commit9afb08341c89d20f54de4b6c9efec69ab60fc79d (patch)
tree4a4ec7a00af1ff2cd88e0b328d69f2b5ec40cb49 /engines/gob/game_v2.cpp
parentb2fb23a134d7f6486bef0922159fa747411d9f14 (diff)
downloadscummvm-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.cpp23
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;