Add index for HE C++ games.

Enable all HE games again.

svn-id: r14939
This commit is contained in:
Travis Howell 2004-09-07 12:21:54 +00:00
parent 44ab28cec5
commit c6e0afadf0
2 changed files with 55 additions and 17 deletions

View file

@ -571,6 +571,11 @@ void ScummEngine::readIndexFile() {
readResTypeList(rtImage, MKID('AWIZ'), "images");
break;
case MKID('DIRT'):
_fileHandle.seek(itemsize - 8, SEEK_CUR);
warning("DIRT index block not yet handled, skipping");
break;
case MKID('DISK'):
_fileHandle.seek(itemsize - 8, SEEK_CUR);
warning("DISK index block not yet handled, skipping");
@ -2288,6 +2293,42 @@ void ScummEngine::readMAXS(int blockSize) {
_numGlobalScripts = 2000;
_shadowPaletteSize = NUM_SHADOW_PALETTE * 256;
} else if (_heversion >= 70 && (blockSize == 44 + 8)) { // C++ based engine
_numVariables = _fileHandle.readUint16LE();
_fileHandle.readUint16LE(); // not used in spydemo
_fileHandle.readUint16LE(); // _numLocalVariables ?
_numLocalObjects = _fileHandle.readUint16LE();
_numArray = _fileHandle.readUint16LE();
_fileHandle.readUint16LE(); // unknown
_fileHandle.readUint16LE(); // unknown
_numFlObject = _fileHandle.readUint16LE();
_numInventory = _fileHandle.readUint16LE();
_numRooms = _fileHandle.readUint16LE();
_numScripts = _fileHandle.readUint16LE();
_numSounds = _fileHandle.readUint16LE();
_numCharsets = _fileHandle.readUint16LE();
_numCostumes = _fileHandle.readUint16LE();
_numGlobalObjects = _fileHandle.readUint16LE();
_numImages = _fileHandle.readUint16LE();
_fileHandle.readUint16LE(); // unknown
_fileHandle.readUint16LE(); // _numLocalScriptOffsets
_fileHandle.readUint16LE(); // unknown
_fileHandle.readUint16LE(); // unknown
_fileHandle.readUint16LE(); // unknown
_fileHandle.readUint16LE(); // _numTalkie
/* TODO check these values */
_objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
_numNewNames = 10;
_numRoomVariables = 64;
_objectRoomTable = (byte *)calloc(_numGlobalObjects * 4, 1);
_numGlobalScripts = 200;
_shadowPaletteSize = 256;
} else if (_heversion >= 70 && (blockSize == 38 + 8)) { // Scummsys.9x
_numVariables = _fileHandle.readUint16LE();
_fileHandle.readUint16LE(); // not used in spydemo
@ -2306,7 +2347,7 @@ void ScummEngine::readMAXS(int blockSize) {
_numGlobalObjects = _fileHandle.readUint16LE();
_numImages = _fileHandle.readUint16LE();
_fileHandle.readUint16LE(); // unknown
_fileHandle.readUint16LE(); // _numLocalScripts?
_fileHandle.readUint16LE(); // _numLocalScriptOffsets
_fileHandle.readUint16LE(); // unknown
/* TODO check these values */
@ -2320,8 +2361,6 @@ void ScummEngine::readMAXS(int blockSize) {
_numGlobalScripts = 200;
_shadowPaletteSize = 256;
} else if (_heversion >= 70 && (blockSize == 44 + 8)) { // C++ based engine
error("MAXS blocks from C++ based games not yet supported");
} else if (_heversion >= 70 && blockSize > 38) { // sputm7.2
if (blockSize != 32 + 8)
error("MAXS block of size %d not supported, please report", blockSize);