Fix o6_writeFile.

svn-id: r13920
This commit is contained in:
Eugene Sandulenko 2004-06-01 20:59:14 +00:00
parent cd0c2dfdeb
commit 6a314c99a9

View file

@ -1198,9 +1198,11 @@ void ScummEngine_v6he::o6_rename() {
int ScummEngine_v6he::readFileToArray(int slot, int32 size) { int ScummEngine_v6he::readFileToArray(int slot, int32 size) {
if (size == 0) if (size == 0)
size = _hFileTable[slot].size() - _hFileTable[slot].pos(); size = _hFileTable[slot].size() - _hFileTable[slot].pos();
writeVar(0, 0); writeVar(0, 0);
ArrayHeader *ah = defineArray(0, rtCostume, 0, size); // define size as size-1 because in defineArray it gets incremented
ArrayHeader *ah = defineArray(0, rtCostume, 0, size-1);
_hFileTable[slot].read(ah->data, size); _hFileTable[slot].read(ah->data, size);
return readVar(0); return readVar(0);
@ -1231,9 +1233,8 @@ void ScummEngine_v6he::o6_readFile() {
void ScummEngine_v6he::writeFileFromArray(int slot, int resID) { void ScummEngine_v6he::writeFileFromArray(int slot, int resID) {
ArrayHeader *ah = (ArrayHeader *)getResourceAddress(rtString, resID); ArrayHeader *ah = (ArrayHeader *)getResourceAddress(rtString, resID);
// FIXME: hack for proper size: / 2 - 5 int32 size = FROM_LE_16(ah->dim1) * FROM_LE_16(ah->dim2);
// does it really needed? Needs checking
int32 size = getResourceSize(rtString, resID) / 2 - 5;
_hFileTable[slot].write(ah->data, size); _hFileTable[slot].write(ah->data, size);
} }
@ -1262,10 +1263,10 @@ void ScummEngine_v6he::o6_setVolume() {
int soundVolumeMaster; int soundVolumeMaster;
int volume = pop(); int volume = pop();
switch (subOp) { switch (subOp) {
case 222: case 0xde:
_mixer->setMusicVolume(volume); _mixer->setMusicVolume(volume);
break; break;
case 224: case 0xe0:
soundVolumeMaster = ConfMan.getInt("master_volume"); soundVolumeMaster = ConfMan.getInt("master_volume");
_mixer->setVolume(volume * soundVolumeMaster / 255); _mixer->setVolume(volume * soundVolumeMaster / 255);
break; break;