SCI: Handle recursive view loop references #1610
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds support for view loops that mirror loops that mirror loops, and so on. ScummVM only supports one level of loop referencing. Sierra's interpreter loops through all the mirror references until it finds a "real" loop and then mirrors that. FPFP depends on this this when the cook leaves the town in room 200, otherwise ScummVM doesn't populate these loops and fails an assert, bug #10953.
FPFP View 844's relevant loops:
The script uses loops 3 and 5. Since they both trace back to loop 0, they are both loops of the cook walking to the left, just like loop 1. SCI Companion displays loops 3 and 5 backwards as it applies mirroring to the previous loop instead of the root. SCI Viewer doesn't display them at all.