more v1 load directory ...

svn-id: r8274
This commit is contained in:
Paweł Kołodziejski 2003-06-02 18:15:09 +00:00
parent 0bf6779189
commit 6dbd36d668
3 changed files with 43 additions and 11 deletions

View file

@ -25,13 +25,15 @@
#include "resource.h" #include "resource.h"
void Scumm_v2::readClassicIndexFile() { void Scumm_v2::readClassicIndexFile() {
if (_gameId == GID_MANIAC) { int i;
if (_gameId == GID_MANIAC64) {
_numGlobalObjects = 800; _numGlobalObjects = 800;
_numRooms = 55; _numRooms = 55;
_numCostumes = 35; _numCostumes = 35;
_numScripts = 200; _numScripts = 200;
_numSounds = 100; _numSounds = 100;
} else if (_gameId == GID_ZAK) { } else if (_gameId == GID_ZAK64) {
_numGlobalObjects = 775; _numGlobalObjects = 775;
_numRooms = 61; _numRooms = 61;
_numCostumes = 37; _numCostumes = 37;
@ -51,15 +53,43 @@ void Scumm_v2::readClassicIndexFile() {
_palManipIntermediatePal = 0; // Will allocate when needed _palManipIntermediatePal = 0; // Will allocate when needed
_fileHandle.readUint16LE(); /* version magic number */ _fileHandle.readUint16LE(); /* version magic number */
for (int i = 0; i != _numGlobalObjects; i++) { for (i = 0; i != _numGlobalObjects; i++) {
byte tmp = _fileHandle.readByte(); byte tmp = _fileHandle.readByte();
_objectOwnerTable[i] = tmp & OF_OWNER_MASK; _objectOwnerTable[i] = tmp & OF_OWNER_MASK;
_objectStateTable[i] = tmp >> OF_STATE_SHL; _objectStateTable[i] = tmp >> OF_STATE_SHL;
} }
readResTypeList(rtRoom, MKID('ROOM'), "room");
readResTypeList(rtCostume, MKID('COST'), "costume"); for (i = 0; i < _numRooms; i++) {
readResTypeList(rtScript, MKID('SCRP'), "script"); res.roomno[rtRoom][i] = i;
readResTypeList(rtSound, MKID('SOUN'), "sound"); _fileHandle.seek(_numRooms, SEEK_CUR);
}
for (i = 0; i < _numCostumes; i++) {
res.roomno[rtCostume][i] = _fileHandle.readByte();
}
for (i = 0; i < _numCostumes; i++) {
res.roomoffs[rtCostume][i] = _fileHandle.readUint16LE();
if (res.roomoffs[rtCostume][i] == 0xFFFF)
res.roomoffs[rtCostume][i] = 0xFFFFFFFF;
}
for (i = 0; i < _numScripts; i++) {
res.roomno[rtScript][i] = _fileHandle.readByte();
}
for (i = 0; i < _numScripts; i++) {
res.roomoffs[rtScript][i] = _fileHandle.readUint16LE();
if (res.roomoffs[rtScript][i] == 0xFFFF)
res.roomoffs[rtScript][i] = 0xFFFFFFFF;
}
for (i = 0; i < _numSounds; i++) {
res.roomno[rtSound][i] = _fileHandle.readByte();
}
for (i = 0; i < _numSounds; i++) {
res.roomoffs[rtSound][i] = _fileHandle.readUint16LE();
if (res.roomoffs[rtSound][i] == 0xFFFF)
res.roomoffs[rtSound][i] = 0xFFFFFFFF;
}
} }
void Scumm_v2::readEnhancedIndexFile() { void Scumm_v2::readEnhancedIndexFile() {

View file

@ -181,8 +181,8 @@ enum ScummGameId {
GID_CMI, GID_CMI,
GID_MANIAC, GID_MANIAC,
GID_ZAK, GID_ZAK,
//GID_MANIAC64, GID_MANIAC64,
//GID_ZAK64, GID_ZAK64,
GID_PUTTDEMO GID_PUTTDEMO
}; };

View file

@ -61,8 +61,10 @@ extern uint16 _debugLevel;
static const VersionSettings scumm_settings[] = { static const VersionSettings scumm_settings[] = {
/* Scumm Version 1 */ /* Scumm Version 1 */
// {"maniac64", "Maniac Mansion (C64)", GID_MANIAC64, 1, 0, 0,}, {"maniac64", "Maniac Mansion (C64)", GID_MANIAC64, 1, 0, 0,
// {"zak64", "Zak McKracken and the Alien Mindbenders (C64)", GID_ZAK64, 1, 0, 0,}, GF_AFTER_V1 | GF_AFTER_V2 | GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALLING, "00.LFL"},
{"zak64", "Zak McKracken and the Alien Mindbenders (C64)", GID_ZAK64, 1, 0, 0,
GF_AFTER_V1 | GF_AFTER_V2 | GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALLING, "00.LFL"},
/* Scumm Version 2 */ /* Scumm Version 2 */
{"maniac", "Maniac Mansion", GID_MANIAC, 2, 0, 0, {"maniac", "Maniac Mansion", GID_MANIAC, 2, 0, 0,