Opened 7 months ago

Closed 7 months ago

#10510 closed defect (fixed)

SHERLOCK: Scalpel quits when trying to load uncompressed animations

Reported by: bonki Owned by: dreammaster
Priority: blocker Component: Engine: Sherlock
Keywords: Cc:
Game: Sherlock Holmes: Case of the Serrated Scalpel

Description

Scalpel is currently unplayable due to the changes in commit 20d5a67f8b71c668ca304b85c1d8b91759922031.

Symptom:

To reproduce start a new game and try leaving the room:

$ ./scummvm 
User picked target 'scalpel' (gameid 'scalpel')...
  Looking for a plugin supporting this gameid... Sherlock Engine
  Starting 'The Case of the Serrated Scalpel'
Could not load file - 04EXIT2.vgs!

Analysis:

ScalpelScene::startCAnim() tries to cache (not solely) uncompressed animation data with a special offset via Resources::addToCache() which in turn calls Cache::load() which doesn't actually load uncompressed resources anymore.
This leads to a cache miss in Resources::load() which then tries to load the resource itself which fails because it doesn't do the same thing as startCAnim().

Backtrace:

#0  error (s=0x6e6d8c "Could not load file - %s") at common/textconsole.cpp:67
#1  0x00000000004ae8f7 in Sherlock::Resources::load (this=0xe0b2d0, filename=...) at engines/sherlock/resources.cpp:185
#2  0x00000000004994ad in Sherlock::ImageFile::ImageFile (this=0x1f934f0, name=..., skipPal=false, animImages=false) at engines/sherlock/image_file.cpp:41
#3  0x00000000004c8bad in Sherlock::Scalpel::ScalpelScene::startCAnim (this=0x1ef3310, cAnimNum=8, playRate=1) at engines/sherlock/scalpel/scalpel_scene.cpp:596
#4  0x000000000043098f in Sherlock::UserInterface::checkAction (this=0x1f18430, action=..., objNum=10, fixedTextActionId=Sherlock::kFixedTextAction_Open) at engines/sherlock/user_interface.cpp:175
#5  0x0000000000459a33 in Sherlock::Scalpel::ScalpelUserInterface::doMiscControl (this=0x1f18430, allowed=2) at engines/sherlock/scalpel/scalpel_user_interface.cpp:1539
#6  0x000000000045414b in Sherlock::Scalpel::ScalpelUserInterface::handleInput (this=0x1f18430) at engines/sherlock/scalpel/scalpel_user_interface.cpp:386
#7  0x0000000000425ec9 in Sherlock::SherlockEngine::handleInput (this=0x11adba0) at engines/sherlock/sherlock.cpp:202
#8  0x0000000000425d7f in Sherlock::SherlockEngine::sceneLoop (this=0x11adba0) at engines/sherlock/sherlock.cpp:181
#9  0x0000000000425c47 in Sherlock::SherlockEngine::run (this=0x11adba0) at engines/sherlock/sherlock.cpp:165
#10 0x000000000040cfa5 in runGame (plugin=0xaded20, system=..., edebuglevels=...) at base/main.cpp:264
#11 0x000000000040e16f in scummvm_main (argc=1, argv=0x7fffffffe2e8) at base/main.cpp:530
#12 0x000000000040b132 in main (argc=1, argv=0x7fffffffe2e8) at backends/platform/sdl/posix/posix-main.cpp:45

Change History (2)

comment:1 Changed 7 months ago by bonki

Owner: set to dreammaster

comment:2 Changed 7 months ago by dreammaster

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.