Merged
Conversation
This is a V1 opcode that was moved to the wrong function in 2016. See: 8a595e7 Confirmed in the TrollVM source that this code originated in. With this understood, I am reverting my change to fix SQ1 Apple II. Its pictures contain FC bytes that had no effect in the original because they were correctly ignored. SQ1's FC bytes crashed this opcode handler, so I added validation, because I didn't realize that the handler itself was the mistake. See: 9191698
- Fixes Winnie items - Fixes Mickey spaceship lights - Fixes Mickey star map Fixes bug scummvm#5730
- Fixes Winnie wall color in first room - Fixes Winnie water color behind bridge - Fixes Winnie rabbit hole color - Fixes Eeyore shack color Fixes bug #14549
Fixes Roo in Winnie the Pooh
Fixes memory corruption in Winnie the Pooh when a tall object is drawn at the bottom of the screen. The existing boundary checks in these functions occur before the PreAGI offsets are applied.
Member
|
Very nice work, thanks! :) And thanks for the PR, showcasing all the different places where these fixes apply! Merging |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 PR fixes picture inaccuracies and bugs in Winnie the Pooh and Mickey's Space Adventure:
Some of these bugs were TODOs in TrollVM (2004). Some were regressions from TrollVM being merged in 2007. Some were regressions from a 2016 refactor.
This is part of an ongoing effort to get our AGI picture code under control so that we can keep building on it. Right now it's tricky: some code is from Sarien, some code is from NAGI, some code is from TrollVM, some code has never executed and never will, much has been lost in translation, and none of this is documented. Only now that I have Curt Coder's thoroughly documented TrollVM source from 2004 do I understand our code, and even that was a challenge because TrollVM has been practically wiped from the internet.
Reverse engineering the executables was hard, but it was nothing compared to reverse engineering the 20+ years that led to
picture.cpp=)Examples:
Missing flood fills in lower left, balloon circle pattern is wrong allowing flood fill to escape, balloon corrupts memory because it goes off screen, flood fills run wild through process memory.
Missing green flood fills due to inaccurate screen-on flag handling, the pink coat's circle pattern is wrong allowing flood fill to escape.
Water should have been blue, rain cloud circle patterns are wrong allowing flood fill to escape.
Spaceship lights are wrong shape, despite undocumented hacks (now removed)
Planets and sun are wrong shape and not solid (there is no texture in PreAGI)