aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/resource.h
AgeCommit message (Collapse)Author
2017-06-09SCI: Add serialization for ResourceIdColin Snover
2017-05-13SCI: Suppress resource warnings when running fallback detectionColin Snover
For the moment, only warn about bad resources when a game is actually starting, since unknown but valid resources being detected by the fallback detector currently also trigger the warning.
2017-05-13SCI: Dispose uncached volume file streamsColin Snover
The stream returned by a call to ResourceManager::getVolumeFile either MUST (when returning an I/O stream from a Common::FSNode) or must NOT (when returning a Common::File *) be deleted by the caller, depending upon some internal implementation details of ResourceSource that should never have been exposed to callers. FSNode streams that should have been deleted were not being deleted all the time, which leaked and eventually caused ScummVM to run out of FDs. This commit improves this situation by shielding callers from these internal details by centralizing the destruction logic in one place, so FSNode read streams stop being leaked and callers no longer need to know stuff about the internals of the ResourceSource they are trying to read in order to avoid leaking or breaking the volume file cache. Fixes Trac#9782.
2017-05-10SCI: Fix reading of Rave data from compressed KQ6 audio volumesColin Snover
Refs Trac#9764.
2017-05-08SCI: Fix unnecessary copy of Common::StringColin Snover
2017-05-08SCI: Improve detection and reporting of resource errorsColin Snover
Simple assertions in the resource manager are not sufficient to track down resource corruption issues, and some error conditions that were being checked already were either ignored or only raised as warnings that casual users would be unlikely to see. Ideally, error handling in ResourceManager would be improved to the point where errors would correctly propagate out of it (so the warning dialogue could be displayed from outside), but right now error codes are dropped all over the place, and it would take more effort to fix that without much benefit for the current situation. If/until someone has the energy to fix that, the warning dialogue is simply shown from ResourceManager::scanNewSources. Refs Trac#9764.
2017-04-23SCI: Implement fallback detection for SCI3Colin Snover
2017-04-22SCI: Add alloc_list command to debuggerColin Snover
This command lists all resources that are currently loaded into memory, plus the number of locks that exist on each loaded resource.
2017-03-30SCI: Protect and clarify the purpose of Resource _header dataColin Snover
2017-03-30SCI32: Fix audio, wave, VMD, Duck, CLUT, TGA, ZZZ, Etc patchesColin Snover
Specifically, audio patches are used in at least PQ:SWAT (40103.AUD), Lighthouse (9103.AUD), and the GK2 demo (300.AUD).
2017-03-30SCI32: Ignore invalid audio map entries in GK2Colin Snover
The invalid entries, which are on CD 6, appear to correspond to audio that's on CD 4 (though not with the correct offset for CD 4's RESOURCE.AUD). Skipping the invalid map entries on CD 6 should cause these audio files to be loaded from the CD 4 audio bundle if they are requested during chapter six since ScummVM combines resources from all CDs and matches on their IDs.
2017-03-27SCI: Implement bounds-checked reads of game resourcesColin Snover
2017-01-09SCI32: Fix kSetLanguageColin Snover
2016-12-03SCI: Remove use of snprintfColin Snover
2016-11-02SCI: Remove old SCI32 hires detection heuristicColin Snover
2016-08-19SCI32: Enable multi-disc audio resourcesColin Snover
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.
2016-08-19SCI32: Partially implement kCDColin Snover
2016-06-20SCI32: Rewrite digital audio engineColin Snover
This provides a complete implementation of kDoAudio through SCI2.1mid, plus partial implementation of SCI3 features. Digital audio calls shunted through kDoSound have also been updated to go through the SCI32 audio mixer, though these shunts are a bit hacky because the ScummVM implementation of kDoSound does not currently match how SSCI kDoSound is designed. It is probably possible in the future to just replace the SCI1.1 audio code (audio.cpp) with the new SCI32 code, since the major differences seem to be that (1) SCI1.1 only supported one digital audio playback channel (this is configurable already), (2) it had extra commands for CD audio playback and queued sample playback.
2016-02-20SCI: Fix a regression in the fallback detector. Some cleanupFilippos Karapetis
Removed the superfluous initForDetection() function, which was not updated in commit 2f17ba2b0ab77ef939c21efa04f7aaafccbd0c37 and caused the fallback detector to crash because of uninitialized variables
2016-02-18SCI: Increase LRU resource cache for SCI32 gamesColin Snover
A single picture in SCI32 is often larger than the 256KiB limit, meaning that the cache is useless for these games -- which is bad, because the renderer works directly off raw resource data so it must be decompressed and in-cache for rendering performance to be acceptable.
2015-12-29SCI32: split up SCI2.1 into EARLY/MIDDLE/LATEMartin Kiewitz
- Detection works via signatures (couldn't find a better way) - new kString subcalls were introduced SCI2.1 LATE - kString now has signatures and is split via subcall table - kString fix, so that KQ7 doesn't crash, when starting a chapter - Sci2StringFunctionType removed, because no longer needed
2015-02-15SCI: Use sound resource priority by default for songsWillem Jan Palenstijn
SCI1 sound resources can have an embedded priority. We now use that by default, unless an explicit DoSound/SetPriority call overrides it. Thanks waltervn. This fixes relative priority of songs in at least PQ3 room 29. Also increase savegame version to 33.
2014-10-18SCI: Separate the rest of the detection-only functionsFilippos Karapetis
This should fix bug #6717 - "SCI fallback detection assert failure"
2014-10-18SCI: Rename the version of addAppropriateSources() used in detectionFilippos Karapetis
2014-02-18SCI: Make GPL headers consistent in themselves.Johannes Schickel
2013-12-31SCI: Rewrite MIDI channel remappingWillem Jan Palenstijn
This adds MIDI state tracking to allow channels to be temporarily unmapped and later re-mapped when there are free device channels available again.
2013-12-10SCI: Add handling for the RAVE resource type, found in KQ6CDFilippos Karapetis
This contains the sync data in the Windows version of KQ6CD. Note that currently the sync36 resource is 2 bytes bigger (it contains 2 bytes from the RAVE resource). Some test code has also been added to dump the RAVE sync resources
2013-11-23SCI: Janitorial - Fix spacing errorsStrangerke
2012-05-15SCI: Resolve some resource related FIXMEsFilippos Karapetis
These were introduced in 4f6d42d. The odd comment dates back to FreeSCI, as far as our history goes, and seems to be a leftover from an old refactoring during FreeSCI's history
2012-05-13SCI: Add a few FIXMEsWillem Jan Palenstijn
2012-01-15SCI: Clean up some memory management and loopsWillem Jan Palenstijn
2011-10-19SCI: Move the palette merging checking code inside the GfxPalette classFilippos Karapetis
2011-05-12GIT: Clean up: Suppress SVN tags, now uselessstrangerke
2011-03-04SCI: Some palette related changesmd5
- Moved palette color count inside the GfxPalette class - Enabled all of the kPalette subops for 16 color SCI1 games, apart from the ones for intensity palette animation, and palette resource loading - Removed isVGA() and isAmiga32color() methods from the resource manager - they ended up in having inconsistent code
2011-02-16SCI: Add support for the KQ5 FM Towns resource formatMatthew Hoops
Thanks to alexbevi for providing details on the format
2011-02-10SCI: Added resource manager support for changing the audio directory ↵Filippos Karapetis
dynamically. Also, moved some audio-specific resource code inside resource_audio.cpp This functionality is used by kSetLanguage(), called when switching the language in MUMG Deluxe from the game's main menu. svn-id: r55872
2011-02-10SCI: Renamed addInternalSources -> addAudioSources and separated the script ↵Filippos Karapetis
chunk loading code svn-id: r55866
2010-11-13SCI: Update resource types for SCI2.1/3Matthew Hoops
svn-id: r54220
2010-11-09SCI: Fixed the fallback detector againFilippos Karapetis
This is a regression from r54155, as we previously ignored the result of addInternalSources() in the fallback detector svn-id: r54163
2010-11-09SCI: Add resource manager support for SCI3 games.Lars Skovlund
ScummVM now rejects them properly instead of spewing lots of unintelligible stuff. svn-id: r54155
2010-09-10SCI: Some changes regarding resourcesFilippos Karapetis
- Renamed the debug command "resource_size" to "resource_info", as it now provides the location of where a specified resource is found (i.e. the resource.xxx file, or the file name itself, if the resource is a patch) - "duskdump" shows the original location of dumped resources - loadResource() now shows the location of files that couldn't be loaded svn-id: r52667
2010-09-09SCI: Fix digital track regression from r52662.Walter van Niftrik
svn-id: r52666
2010-09-09SCI: Fix last MIDI channel number for adlib driverWalter van Niftrik
svn-id: r52662
2010-09-04SCI: doing detectDoSoundType() properly sci0earlyMartin Kiewitz
checking, if sound resources are sci0early or late for sci0early games instead of hardcoding lsl2 svn-id: r52514
2010-08-19SCI: Added checking for the existence of a GM track, to determine if device ↵Filippos Karapetis
ID 7 or 12 should be used. Fixes the GM music in the demo of QFG3, which is using an in-between version of SCI1 and SCI1.1 svn-id: r52211
2010-08-03SCI: Add support for SCI2.1 chunk resourcesMatthew Hoops
And if no scripts are present, but chunk 0 is present, load resources from there. This fixes the Lighthouse SCI2.1 demo. svn-id: r51696
2010-07-26SCI: Fixed bug #3034536 - "AMIGAOS4: SCI - Compiler error".Filippos Karapetis
svn-id: r51302
2010-07-18Fix typo.Matthew Hoops
svn-id: r50974
2010-07-18In SCI2.1, the type numbers inside resource maps/patches have changed ↵Matthew Hoops
slightly. We no longer use the number Sierra gives us directly, but use a function to convert to our ResourceType enum based on version. This allows us to read the chunk type from SCI2.1 (a form of script). Also, allow debugging of Mac-specific resources from the console. svn-id: r50973
2010-07-02Added handling for kLock called with resource id -1 (unlock all resources of ↵Filippos Karapetis
the requested type). Happens e.g. in KQ6 and LSL6 svn-id: r50595