The runtime code for this had previously relied on hot patching
volume file offsets at the moment that a resource was loaded,
instead of correcting file offsets when reading audio maps. The
code added for sanity checking audio volumes started to report
warnings because the offsets being received were for the original
uncompressed audio volume, which (naturally) is larger than the
compressed audio volume.
This commit also deduplicates code between addResource and
updateResource, and tweaks a validation-related error message for
improved clarity.
Fixes Trac#9764.
1. The chunk number was hard-coded to zero and inaccessible.
2. Running ResourceManager::getVolumeFile for a chunk resource
would always return nullptr instead of a stream of the chunk,
which made it impossible to generically validate that resources
being added were within bounds of the container file (or, in
this case, container chunk).
Phant1, PQ:SWAT, GK2, and Phant2 all have different audio maps
and audio volumes on each CD. In order to make this work within
ScummVM, where CDs are never swapped, each RESOURCE.AUD for these
games must be renamed to RESAUD.00x and each RESOURCE.SFX renamed
to RESSFX.00x.
Mac SCI1.1+ games should now start up. QFG1 and Hoyle4 are playable. GK1 starts its scripts, but errors out soon after. There are still some View bugs with each (somehow, view decompression seems to be adding a blank line after each line?).
*Much* thanks to Walter for his help.
svn-id: r55696
We might want to add a ResourceSource::_resMan member, but for
now I am not adding one on purpose; many more things might still
move between ResourceSource and ResourceManager, so we should
wait till the refactoring is complete.
svn-id: r49828
* Add new ResourceSource::findVolume() virtual method
* Rename ResourceManager::getVolume() to findVolume(),
and change it to use the new ResourceSource method
* Add some TODO comments pointing to further OOPification
possibilities
svn-id: r49815
In particular, renamed location_name to _name and made it const and
protected. Thus it cannot be changed after creation, and only read
access is now possible, via a getter method.
svn-id: r49810