Menu

#4213 FW: half walking speed in a screen

Future Wars
closed-fixed
5
2009-07-13
2009-03-06
glorifindel
No

I'm using the italian Amiga version of Future Wars on ScummVM 0.13 stable (Win32).
When the main character enter a certain screen (see screenshot) he walks at half speed (this issue doesn't occur when exiting this screen)

Discussion

  • glorifindel

    glorifindel - 2009-03-06
     
  • glorifindel

    glorifindel - 2009-03-06

    File Added: fw-amiga-it.3

     
  • glorifindel

    glorifindel - 2009-03-06

    Savegame of the location

     
  • glorifindel

    glorifindel - 2009-03-06
    • labels: --> Actor behavior
    • milestone: --> Future Wars
     
  • Eugene Sandulenko

    Kari, could you look into it?

     
  • Eugene Sandulenko

    • assigned_to: nobody --> buddha_
     
  • Kari Salminen

    Kari Salminen - 2009-07-13

    Fixed in the SVN trunk in revision 42439.

    Glorifindel: Please, if you could test the game on a real Amiga or under an Amiga emulator to see if the speed is halved in the given scene when running the original executable that'd be nice to know. Also if you could check whether the speed is halved in any other scenes when running the game under ScummVM that'd be nice to know too (And please if you do find such places, gather the information about them into a bug report and submit it). Thanks!

    Information about the bug's cause and how it was fixed:

    WORKAROUND for bug #2669415 ("FW: half walking speed in a screen"). The problem was that in Amiga/Atari ST versions of Future Wars the walking speed has halved in a forest scene where a monk's robe hangs on a tree branch (Up and to the left from the medieval castle's front).

    Initialization script for the scene is PART02.PRC's 26th script (011_INIT) and the background used in the scene is L11.PI1. The difference between the PC version and the Amiga/Atari ST version of the script is that the PC version calls scripts 37 and 36 for handling movement of the character when Amiga/Atari ST version calls scripts 22 and 21 for the same purpose (Scripts 37 and 22 handle vertical movement, 36 and 21 the horizontal).

    The called scripts only differ functionally so that all BREAK opcodes have been doubled in the Amiga/Atari ST versions (i.e. one BREAK has become two BREAKs) and in script 21 after LABEL_25 there's an extra opcode that isn't in script 36: SET globalvars[251], 0.

    As a BREAK opcode stops the execution of a script it causes a pause and with the BREAKs doubled the pause is twice as long in the Amiga/Atari ST versions. Thus the longer pause is eliminated by running only one BREAK when several are designated (i.e. ignoring a BREAK if there's another BREAK after it).

     
  • Kari Salminen

    Kari Salminen - 2009-07-13
    • status: open --> closed-fixed