Menu

#6097 PUTTZOO: Raft disappearing

open
nobody
5
2014-10-29
2012-07-09
Lego King
No

ScummVM version: 1.50pre11-g382f554
Bug details: This bug occurs in the original and in ScummVM. To my knowledge, it only occurs in the 1999 re-release of the game (Yeah, seriously, they CREATED a bug in a re-release. Figure that one out). The MAXS has a size of 46, so I don't know which engine it runs on. I have attached a save game below. Extract those two files out of the zip and place them into your save directory. Now, when you open the save file (Press L during gameplay), just click on the land on Putt-Putt's right (not your right, his). He should start talking. Now skip it using escape. When you do this, the raft disappears and you have no way of getting it back. Since you couldn't have possibly done anything else by this point, you're stuck and have to restart, making this game-breaking.
Version: Windows Updated/English
Platform: Win32

Discussion

  • Lego King

    Lego King - 2012-07-09

    The save files for this bug.

     
  • Bharat

    Bharat - 2012-07-23

    Hi can you assign this bug to me. I want to look into it.

     
  • Willem Jan Palenstijn

    That's much appreciated. We don't really formally assign bugs to people, but you can report your findings here.

     
  • Johannes Schickel

    • summary: SCUMM: Raft disappearing in Puttzoo --> PUTTZOO: Raft disappearing
     
  • Ben

    Ben - 2014-09-10

    The cause of this can be found in script 206 of room 35:

    Original 206 script:

    [00DA] (43) var244 = 35
    [00DF] (5E) startScript(1,201,[1])
    [00E7] (5C) until (!isScriptRunning(201)) {
    [00EE] (6C) breakHere()
    [00EF] (**) }

    Buggy 206 script:

    [00DA] (5D) if (var244 == 35) {
    [00E3] (5E) startScript(1,201,[1])
    [00EB] (5C) until (!isScriptRunning(201)) {
    [00F2] (6C) breakHere()
    [00F3] ( ) }
    [00F6] (73) } else {
    [00F9] (5E) startScript(1,201,[0])
    [0101] (5C) until (!isScriptRunning(201)) {
    [0108] (6C) breakHere()
    [0109] ( ) }
    [010C] ( ) }

    Calling script 201 with 0 paramater causes the raft being sent to the void. It even tells you this somewhere :

    Script 206:
    [00E5] (B6) printDebug.msg("Don't use to-the-void on selected-actor!!")
    and
    [0113] (B6) printDebug.msg("killed actor, drawing gone raft")

     
  • Ben

    Ben - 2014-09-10

    Var244 is the location of the raft. It is possible to be at that location without the raft there so they actually tried to fix a bug with this code. However the new bug they introduced by fixing the old one is earlier in the code:

    [0000] (6B) cursorCommand.userPutOff()
    [0002] (6B) cursorCommand.cursorOff()
    [0004] (95) beginOverride()
    [0005] (73) jump b8
    [0008] (5D) if (!roomvar66) /*00A5*/ {
    [000F] (BB)   talkEgo("@T44692137,22979@Well, Pep, it looks like we made it to dry land!")
    [0052] (A9)   wait.waitForMessage()
    [0054] (BB)   talkEgo("@T44715116,25848@I wonder if we'll find any of the missing baby animals here.")
    [00A3] (A9)   wait.waitForMessage()
    [00A5] (  ) }
    [00A5] (5E) startScript(1,202,[3])
    [00AD] (5C) until (!isScriptRunning(202)) /*00B8*/ {
    [00B4] (6C)   breakHere()
    [00B5] (  ) }
    [00B8] (5D) if (VAR_OVERRIDE) /*010F*/ {
    

    Script 202 sets Var244 to 35, but that script does not get executed if you press escape while Putt Putt is talking because the jump b8 at [0005] jumps over this code. Changing this jump to a jump to A5 should fix this bug.

     
  • digitall

    digitall - 2014-10-26

    Ben has submitted a fix for this as a Pull Request here:
    https://github.com/scummvm/scummvm/pull/506

    Once this is merged, this item can be closed as fixed.

     
  • kirben

    kirben - 2014-10-28

    This bug effects the HE98.5 version of the game too, which uses different script numbers and offsets. The HE100 version of the game isn't effected though, since it doesn't allow the scene to be skipped.

    The patch offered solved the missing raft, but no longer allow the complete scene to be skipped past. Maybe we could alter the variable directly, like the attached patch?

     
  • Ben

    Ben - 2014-10-28

    That sounds even better, but I think your mixing up the script number with the raft location var. I think your patch should be like this...

     
  • kirben

    kirben - 2014-10-29

    Yes, I made an error with the location variable, since the location variable (var202) is different in the HE98.5 version.

    Also which HE version of the game was your fix based off? the initial bug report only mentioned the HE99 version was effected, but your fix seems based off an earlier version of the game, judging by lower script numbers.