diff options
author | Vincent Hamm | 2002-03-25 01:20:05 +0000 |
---|---|---|
committer | Vincent Hamm | 2002-03-25 01:20:05 +0000 |
commit | 29f2188c2d625e90a47ea3aac1a5a553f4e1a460 (patch) | |
tree | 8cfc667f2614ea363dff2a5f3cd7329e2a395dd6 | |
parent | 29e08ae6ed450eb317f01e3b303fcdab436f053c (diff) | |
download | scummvm-rg350-29f2188c2d625e90a47ea3aac1a5a553f4e1a460.tar.gz scummvm-rg350-29f2188c2d625e90a47ea3aac1a5a553f4e1a460.tar.bz2 scummvm-rg350-29f2188c2d625e90a47ea3aac1a5a553f4e1a460.zip |
Moved the v3 specific version of readIndex
svn-id: r3817
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | gfx.cpp | 2 | ||||
-rw-r--r-- | resource.cpp | 125 | ||||
-rw-r--r-- | v3/resource.cpp | 127 |
4 files changed, 129 insertions, 127 deletions
@@ -15,7 +15,7 @@ OBJS = actor.o boxes.o costume.o gfx.o object.o resource.o \ saveload.o script.o scummvm.o sound.o string.o \ sys.o verbs.o sdl.o script_v1.o script_v2.o debug.o gui.o \ sound/imuse.o sound/fmopl.o sound/adlib.o sound/gmidi.o debugrl.o \ - akos.o vars.o insane.o gameDetecter.o + akos.o vars.o insane.o gameDetecter.o v3/resource.o DISTFILES=$(OBJS:.o=.cpp) Makefile scumm.h scummsys.h stdafx.h stdafx.cpp \ windows.cpp debugrl.h whatsnew.txt readme.txt copying.txt \ @@ -348,7 +348,7 @@ void Scumm::initBGBuffers() { ptr = findResource(MKID('RMIH'), findResource(MKID('RMIM'), room)); gdi._numZBuffer = READ_LE_UINT16(ptr+8) + 1; } - assert(gdi._numZBuffer>=1 && gdi._numZBuffer<=4); + assert(gdi._numZBuffer>=1 && gdi._numZBuffer<=5); itemsize = (_scrHeight + 4) * 40; size = itemsize * gdi._numZBuffer; diff --git a/resource.cpp b/resource.cpp index 96799d7e06..45f747e32e 100644 --- a/resource.cpp +++ b/resource.cpp @@ -322,131 +322,6 @@ void Scumm::readIndexFile() { openRoom(-1); } -void Scumm_v3::readIndexFile() { - uint16 blocktype; - uint32 itemsize; - int numblock = 0; - int num, i; - byte* _oldClass; - - debug(9, "readIndexFile()"); - - openRoom(-1); - openRoom(0); - - if (!(_features & GF_AFTER_V6)) { - while (!fileEof(_fileHandle)) { - itemsize = fileReadDwordLE(); - blocktype = fileReadWordLE(); - if (fileReadFailed(_fileHandle)) - break; - - switch(blocktype) { - case 0x4E52: - fileReadWordLE(); - break; - case 0x5230: - _numRooms = fileReadWordLE(); - break; - case 0x5330: - _numScripts = fileReadWordLE(); - break; - case 0x4E30: - _numSounds = fileReadWordLE(); - break; - case 0x4330: - _numCostumes = fileReadWordLE(); - break; - case 0x4F30: - _numGlobalObjects = fileReadWordLE(); - break; - } - fileSeek(_fileHandle, itemsize-8,SEEK_CUR); - } - clearFileReadFailed(_fileHandle); - fileSeek(_fileHandle, 0, SEEK_SET); - } - - /* I'm not sure for those values yet, they will have to be rechecked */ - - _numVariables = 800; /* 800 */ - _numBitVariables = 4096; /* 2048 */ - _numLocalObjects = 200; /* 200 */ - _numArray = 50; - _numVerbs = 100; - _numNewNames = 0; - _objectRoomTable = NULL; - _numCharsets = 9; /* 9 */ - _numInventory = 80; /* 80 */ - _numGlobalScripts = 200; - - _shadowPaletteSize = 256; - _shadowPalette = (byte*)alloc(_shadowPaletteSize); // stupid for now. Need to be removed later - _numFlObject = 50; - - allocateArrays(); - - while (1) { - itemsize = fileReadDwordLE(); - - if (fileReadFailed(_fileHandle)) - break; - - blocktype = fileReadWordLE(); - - numblock++; - - switch(blocktype) { - - case 0x4E52: - fileSeek(_fileHandle, itemsize-6,SEEK_CUR); - break; - - case 0x5230: - readResTypeList(rtRoom,MKID('ROOM'),"room"); - break; - - case 0x5330: - readResTypeList(rtScript,MKID('SCRP'),"script"); - break; - - case 0x4E30: - readResTypeList(rtSound,MKID('SOUN'),"sound"); - break; - - case 0x4330: - readResTypeList(rtCostume,MKID('COST'),"costume"); - break; - - case 0x4F30: - num = fileReadWordLE(); - assert(num == _numGlobalObjects); - for (i=0; i<num; i++) { /* not too sure about all that */ - _oldClass=(byte*)&_classData[i]; - _oldClass[0]=fileReadByte(); - _oldClass[1]=fileReadByte(); - _oldClass[2]=fileReadByte(); - _objectOwnerTable[i] = fileReadByte(); - // _objectStateTable[i] = fileReadByte(); - _objectOwnerTable[i] &= OF_OWNER_MASK; - } - -#if defined(SCUMM_BIG_ENDIAN) - for (i=0; i<num; i++) { - _classData[i] = FROM_LE_32(_classData[i]); - } -#endif - break; - - default: - error("Bad ID %c%c found in directory!", blocktype&0xFF, blocktype>>8); - return; - } - } - - openRoom(-1); -} - void Scumm::readArrayFromIndexFile() { int num; int a,b,c; diff --git a/v3/resource.cpp b/v3/resource.cpp new file mode 100644 index 0000000000..28a2787269 --- /dev/null +++ b/v3/resource.cpp @@ -0,0 +1,127 @@ +#include"../stdafx.h" +#include"../scumm.h" + + +void Scumm_v3::readIndexFile() { + uint16 blocktype; + uint32 itemsize; + int numblock = 0; + int num, i; + byte* _oldClass; + + debug(9, "readIndexFile()"); + + openRoom(-1); + openRoom(0); + + if (!(_features & GF_AFTER_V6)) { + while (!fileEof(_fileHandle)) { + itemsize = fileReadDwordLE(); + blocktype = fileReadWordLE(); + if (fileReadFailed(_fileHandle)) + break; + + switch(blocktype) { + case 0x4E52: + fileReadWordLE(); + break; + case 0x5230: + _numRooms = fileReadWordLE(); + break; + case 0x5330: + _numScripts = fileReadWordLE(); + break; + case 0x4E30: + _numSounds = fileReadWordLE(); + break; + case 0x4330: + _numCostumes = fileReadWordLE(); + break; + case 0x4F30: + _numGlobalObjects = fileReadWordLE(); + break; + } + fileSeek(_fileHandle, itemsize-8,SEEK_CUR); + } + clearFileReadFailed(_fileHandle); + fileSeek(_fileHandle, 0, SEEK_SET); + } + + /* I'm not sure for those values yet, they will have to be rechecked */ + + _numVariables = 800; /* 800 */ + _numBitVariables = 4096; /* 2048 */ + _numLocalObjects = 200; /* 200 */ + _numArray = 50; + _numVerbs = 100; + _numNewNames = 0; + _objectRoomTable = NULL; + _numCharsets = 9; /* 9 */ + _numInventory = 80; /* 80 */ + _numGlobalScripts = 200; + + _shadowPaletteSize = 256; + _shadowPalette = (byte*)alloc(_shadowPaletteSize); // stupid for now. Need to be removed later + _numFlObject = 50; + allocateArrays(); + + while (1) { + itemsize = fileReadDwordLE(); + + if (fileReadFailed(_fileHandle)) + break; + + blocktype = fileReadWordLE(); + + numblock++; + + switch(blocktype) { + + case 0x4E52: + fileSeek(_fileHandle, itemsize-6,SEEK_CUR); + break; + + case 0x5230: + readResTypeList(rtRoom,MKID('ROOM'),"room"); + break; + + case 0x5330: + readResTypeList(rtScript,MKID('SCRP'),"script"); + break; + + case 0x4E30: + readResTypeList(rtSound,MKID('SOUN'),"sound"); + break; + + case 0x4330: + readResTypeList(rtCostume,MKID('COST'),"costume"); + break; + + case 0x4F30: + num = fileReadWordLE(); + assert(num == _numGlobalObjects); + for (i=0; i<num; i++) { /* not too sure about all that */ + _oldClass=(byte*)&_classData[i]; + _oldClass[0]=fileReadByte(); + _oldClass[1]=fileReadByte(); + _oldClass[2]=fileReadByte(); + _objectOwnerTable[i] = fileReadByte(); + // _objectStateTable[i] = fileReadByte(); + _objectOwnerTable[i] &= OF_OWNER_MASK; + } + +#if defined(SCUMM_BIG_ENDIAN) + for (i=0; i<num; i++) { + _classData[i] = FROM_LE_32(_classData[i]); + } +#endif + break; + + default: + error("Bad ID %c%c found in directory!", blocktype&0xFF, blocktype>>8); + return; + } + } + + openRoom(-1); +} |