aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2005-04-18 11:19:54 +0000
committerTravis Howell2005-04-18 11:19:54 +0000
commit8d01148b797f66af457434284b3a41bd18b86098 (patch)
tree206d028858ad6938e444a1cf1bcea8f6a69f2201
parent769b2fed4625828e7572f96d95727f79ad34f79e (diff)
downloadscummvm-rg350-8d01148b797f66af457434284b3a41bd18b86098.tar.gz
scummvm-rg350-8d01148b797f66af457434284b3a41bd18b86098.tar.bz2
scummvm-rg350-8d01148b797f66af457434284b3a41bd18b86098.zip
Sound size should only include sound data.
svn-id: r17667
-rw-r--r--scumm/script_v100he.cpp12
-rw-r--r--scumm/script_v72he.cpp11
-rw-r--r--scumm/script_v80he.cpp21
3 files changed, 23 insertions, 21 deletions
diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp
index 9fd166246d..1494cdc40f 100644
--- a/scumm/script_v100he.cpp
+++ b/scumm/script_v100he.cpp
@@ -2191,6 +2191,7 @@ void ScummEngine_v100he::o100_writeFile() {
}
void ScummEngine_v100he::o100_getResourceSize() {
+ const byte *ptr;
int size, type;
int resid = pop();
@@ -2214,15 +2215,18 @@ void ScummEngine_v100he::o100_getResourceSize() {
int offs;
_sound->getHEMusicDetails(resid, offs, size);
push(size);
- return;
+ } else {
+ ptr = getResourceAddress(rtSound, resid);
+ assert(ptr);
+ size = READ_BE_UINT32(ptr + 4) - 40;
+ push(size);
}
- type = rtSound;
- break;
+ return;
default:
error("o100_getResourceSize: default type %d", subOp);
}
- const byte *ptr = getResourceAddress(type, resid);
+ ptr = getResourceAddress(type, resid);
assert(ptr);
size = READ_BE_UINT32(ptr + 4) - 8;
push(size);
diff --git a/scumm/script_v72he.cpp b/scumm/script_v72he.cpp
index f69587084b..b20716e850 100644
--- a/scumm/script_v72he.cpp
+++ b/scumm/script_v72he.cpp
@@ -2163,13 +2163,12 @@ void ScummEngine_v72he::o72_getResourceSize() {
int offs;
_sound->getHEMusicDetails(resid, offs, size);
push(size);
- return;
+ } else {
+ const byte *ptr = getResourceAddress(rtSound, resid);
+ assert(ptr);
+ size = READ_BE_UINT32(ptr + 4) - 40;
+ push(size);
}
-
- const byte *ptr = getResourceAddress(rtSound, resid);
- assert(ptr);
- size = getResourceDataSize(ptr);
- push(size);
}
void ScummEngine_v72he::o72_setFilePath() {
diff --git a/scumm/script_v80he.cpp b/scumm/script_v80he.cpp
index 875d900091..8e523d90dc 100644
--- a/scumm/script_v80he.cpp
+++ b/scumm/script_v80he.cpp
@@ -806,6 +806,7 @@ void ScummEngine_v80he::o80_pickVarRandom() {
}
void ScummEngine_v80he::o80_getResourceSize() {
+ const byte *ptr;
int size, type;
int resid = pop();
@@ -817,10 +818,13 @@ void ScummEngine_v80he::o80_getResourceSize() {
int offs;
_sound->getHEMusicDetails(resid, offs, size);
push(size);
- return;
+ } else {
+ ptr = getResourceAddress(rtSound, resid);
+ assert(ptr);
+ size = READ_BE_UINT32(ptr + 4) - 40;
+ push(size);
}
- type = rtSound;
- break;
+ return;
case 14:
type = rtRoomImage;
break;
@@ -837,14 +841,9 @@ void ScummEngine_v80he::o80_getResourceSize() {
error("o80_getResourceSize: default type %d", subOp);
}
- const byte *ptr = getResourceAddress(type, resid);
- if (ptr) {
- size = getResourceDataSize(ptr);
- } else {
- debug(0, "o80_getResourceSize: invalid resource type %d id %d", type, resid);
- size = 0;
- }
-
+ ptr = getResourceAddress(type, resid);
+ assert(ptr);
+ size = READ_BE_UINT32(ptr + 4) - 8;
push(size);
}