Menu

#5567 BASS: Invalid Mode when giving shades to travel agent

Beneath a Steel Sky
closed-fixed
7
2011-09-12
2011-01-01
No

Please see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=462595 for a savegame and a complete step of instructions leading to the invalid mode.

Cheers,
Moritz

Discussion

  • Torbjörn Andersson

    • summary: giving glasses to travel agent 4 times in a row leads to inv --> BASS: Invalid Mode when giving shades to travel agent
     
  • Torbjörn Andersson

    I would guess it's a script bug (unless it's a bug in sky.cpt like the Blount animation in bug #1507756, but I have no idea how to tell the difference). At least for me, the travel agent doesn't react at all when I try to give him the shades. For every other object I try, there is a brief exchange where Robert offers him the object and he - usually - declines.

    In either case, it hits the Logic::fnTheyStartSub() function, where cpt->mode is increased by 4 and it sets some "magic" values to the Compact object depending on what the mode is. My guess is that it's supposed to set cpt->actionSub and cpt->actionSub_off to tell it to run some script, and when the script is finished it's supposed to decrease cpt->mode again; see Logic::logicScript().

    But for the shades, this never happens so the next time cpt->mode gets increased again. Eventually, it reaches an undefined value.

    Unfortunately, since I don't know enough about how the sky engine works all I can do is quote The Nightmare Before Christmas and say, "Interesting reaction... but what does it mean?!"

     
  • digitall

    digitall - 2011-01-03

    Savegame for Replication taken from Debian Bug

     
  • digitall

    digitall - 2011-01-03

    Information for replication taken from Debian Bug :
    Version: 0.0372-3

    Giving the dark glasses to the man in the travel agency 4 times in a row
    leads to an invalid mode, turning on the debugger and exiting the
    debugger ends the program. Here are steps to reproduce this:

    0) Backup your own .scummvm directory and put the saved-state files I am
    (SKY-VM.SAV and SKY-VM.013) attaching into .scummvm directory.
    1) start game with command `sky`
    2) restore following game with F5:
    14: restarted, almost with ticket
    3) Give dark glasses to the man (travel agent). Nothing will happen.
    4) Give glasses to the man 3 more times.
    5) Upon the fourth attempt, The debugger starts automatically, saying
    ...
    Debugger started, type 'exit' to return to the game.
    ...
    ERROR: Invalid Mode (16)
    ...

     
  • digitall

    digitall - 2011-01-03

    This bug seems to derive from a corrupt gamestate given by the attached savegame.

    In more plain English, it should not be possible IMHO to have the "Dark Glasses" i.e. Shades when you get to the Travel Agent.

    You get them from Reich's corpse when leaving the Recycling Centre on the top level, but to get to the Travel Agent which is at the right of the middle level, you need to power the Elevator.
    To do this, you need to enable the power, which requires the Plastic Explosive from the Factory Storeroom.
    However, upon leaving the Factory Storeroom, Potts will search you and take a liking to the Dark Glasses which you
    gladly give him.
    This is based on Original Interpreter 0.0372CD.

    Will check in latest ScummVM HEAD.

     
  • digitall

    digitall - 2011-01-03

    Ah, I am incorrect. It is possible, though not the most direct game path.
    You need to not search Reich's Corpse in the Furnace Room until after you have got the Plastic Explosive and thus been searched by Potts. This allows you to retain the Dark Glasses.

     
  • digitall

    digitall - 2011-01-04

    Replicated in Original Interpreter 0.0372 under DOSBox.
    Though this takes about 10-12 offers of the Dark Glasses to the Travel Agent to crash the interpreter with :
    Fatal System Error
    cs:eip = 2b:be010e
    Sorry!

    Am attaching Original Interpreter savegame for replication. Will look at implementing a workaround...

     
  • digitall

    digitall - 2011-01-04

    Original Interpreter Savegame for Replication

     
  • digitall

    digitall - 2011-01-04

    Original Interpreter Save Index for Replication

     
  • Eugene Sandulenko

    • priority: 5 --> 7
     
  • Eugene Sandulenko

    This bug is nice to get fixed before the release. Raising priority for keeping the track.

     
  • Joost Peters

    Joost Peters - 2011-09-12

    Should be fixed in 2eb624b

     
  • Joost Peters

    Joost Peters - 2011-09-12
    • labels: --> Script bugs
    • assigned_to: nobody --> joostp
    • status: open --> closed-fixed
     
MongoDB Logo MongoDB