Opened 23 months ago

Closed 23 months ago

Last modified 23 months ago

#9864 closed defect (wontfix)

SCI: Torin: Send to invalid selector at Lycentia doorway 5th world

Reported by: g5ppc Owned by: csnover
Priority: blocker Component: Engine: SCI
Keywords: sci32 Cc:
Game: Torin's Passage

Description

After the Dreep creature moved offscreen, Torin can click to climb around the platform and enter the upside down door. After the animation for this, the console appears with error "Send to invalid selector 0x4f7 (holdTime) of object at 0065:167c!"

build is 1.10.0git3562-g5d1b527829 on Win 7 SP1 x64.
Game is French PointSoft release with TORINPAT applied.

Attachments (1)

torin-cd-win-fr.027 (61.1 KB) - added by g5ppc 23 months ago.
savegame, click on doorway to crash

Download all attachments as: .zip

Change History (6)

Changed 23 months ago by g5ppc

Attachment: torin-cd-win-fr.027 added

savegame, click on doorway to crash

comment:1 Changed 23 months ago by csnover

Priority: normalblocker
Summary: Send to invalid selector at Lycentia doorway 5th worldSCI: Torin: Send to invalid selector at Lycentia doorway 5th world

comment:2 Changed 23 months ago by csnover

Thanks for your report!

So.

This PointSoft release has a different selector vocab than the other releases of Torin. Most of the selectors are the same, but these 41 are different:

SelectorSierraPointSoft
4bf flag bSwing
4c0 toggle flag
4c1 oFace toggle
4c2 bSwing oFace
4c8 nPointOn nSound
4c9 nMusic nPointOn
4ca nPointLeft raiseHands
4cb nPointTo lowerHands
4cc oAvoiding bLeftHandOut
4cd bAvoid bRightHandOut
4ce nLastX oLeftHand
4cf nLastY oRightHand
4d0 oMusic bSinging
4d1 oSound oSingCuee
4d2 bExcusedSelf curPrayer
4d3 curPrayer unselect
4d4 unloadSound getOneHigher
4d5 nSound getTwoHigher
4d6 raiseHands switchWith
4d7 lowerHands sing
4d8 bLeftHandOut stopSinging
4d9 bRightHandOut setDisplay
4da oLeftHand getMyYOffset
4db oRightHand unlockAudio
4dc bSinging nGoingTo
4dd oSingCuee nComingFrom
4de unselect nMusic
4df getOneHigher nPointLeft
4e0 getTwoHigher nPointTo
4e1 switchWith oAvoiding
4e2 sing bAvoid
4e3 stopSinging nLastX
4e4 setDisplay nLastY
4e5 getMyYOffset oMusic
4e6 unlockAudio oSound
4e7 nGoingTo bExcusedSelf
4e8 nComingFrom unloadSound
4f5 holdStart stopCorder
4f6 holdTime holdStart
4f7 reallyDispose holdTime
4fe stopCorder reallyDispose

So, in this crash, reallyDispose selector in the Sierra release is instead holdTime in the PointSoft release, which is why this is crashing. This means that TORINPAT can't be applied to the PointSoft release without breaking the game.

I am not sure what the best path forward here is. There are only a few options I can think of, and none of them seem very good:

  1. Continue requiring TORINPAT for all releases, identify uses of the different selectors in the patch files and hot-patch them to the PointSoft selector values;
  2. Require TORINPAT for the Sierra releases and play whack-a-mole with the bugs in the PointSoft releases;
  3. Subsume TORINPAT into ScummVM so no extra patching is needed.

I will check to see if anyone else has some better ideas.

comment:3 Changed 23 months ago by g5ppc

How many games are unwinnable unless played in ScummVM? I know KQ5FR is one. Now this may be another.

comment:4 Changed 23 months ago by csnover

Owner: set to csnover
Resolution: wontfix
Status: newclosed

Since this issue is caused by applying TORINPAT, the solution for this for now is to not apply TORINPAT to the PointSoft release of the game. This will invalidate the save game on this ticket since the patch makes changes to system scripts, but hopefully now that #9797 is fixed with a hot-patch, no additional work will be necessary for this release to be completable. (If you encounter any more issues, please continue opening tickets for those.)

comment:5 Changed 23 months ago by g5ppc

Can confirm this seems fixed from a restart at the beginning of the chapter to ending.

Note: See TracTickets for help on using tickets.