[Scummvm-tracker] [ScummVM :: Bugs] #14549: AGI: Missing fill in Winnie the Pooh
ScummVM :: Bugs
trac at scummvm.org
Tue Jul 18 08:41:42 UTC 2023
#14549: AGI: Missing fill in Winnie the Pooh
-------------------------+--------------------------
Reporter: eriktorbjorn | Owner: (none)
Type: defect | Status: new
Priority: normal | Component: Engine: AGI
Version: | Resolution:
Keywords: | Game:
-------------------------+--------------------------
Description changed by eriktorbjorn:
Old description:
> In the first room of Winnie the Pooh in the Hundred Acre Woods (the DOS
> version, at least) the area in the lower left corner isn't colored in.
>
> There is a call to draw_Fill(19, 159) with the appropriate color, but
> since this is right outside the lower edge of the picture it is ignored.
> If the coordinates are adjusted to 19, 158 the area is colored in as
> expected.
>
> You could also add something like this for the same effect, but don't
> mistake this for a proper fix. It was just an experiment:
>
> {{{
> --- a/engines/agi/picture.cpp
> +++ b/engines/agi/picture.cpp
> @@ -841,6 +841,9 @@ void PictureMgr::draw_Fill(int16 x, int16 y) {
> Common::Stack<Common::Point> stack;
> stack.push(Common::Point(x, y));
>
> + if (draw_FillCheck(x, y - 1))
> + stack.push(Common::Point(x, y - 1));
> +
> // Exit if stack is empty
> while (!stack.empty()) {
> Common::Point p = stack.pop();
> }}}
>
> But it does suggest to me that there is an inaccuracy in ScummVM's
> draw_Fill() for this particular corner case, for at least this particular
> game. But the "v2" format seems to be used for lots of games.
>
> Though we already have an apparently game-specific
> {{{mickeyCrystalAnimation}}} special case in
> {{{PictureMgr::drawPictureV2()}}}, so maybe another game-specific hack
> wouldn't be out of the question? (Somewhat alarmingly, this particular
> one only checks for {{{GType_PreAGI}}}, not a specific game.)
New description:
In the first room of Winnie the Pooh in the Hundred Acre Woods (the DOS
version, at least) the area in the lower left corner isn't colored in:
[[Image(winnie-scummvm.png)]]
In DOSBox it is:
[[Image(winnie-dosbox.png)]]
There is a call to draw_Fill(19, 159) with the appropriate color, but
since this is right outside the lower edge of the picture it is ignored.
If the coordinates are adjusted to 19, 158 the area is colored in as
expected.
You could also add something like this for the same effect, but don't
mistake this for a proper fix. It was just an experiment:
{{{
--- a/engines/agi/picture.cpp
+++ b/engines/agi/picture.cpp
@@ -841,6 +841,9 @@ void PictureMgr::draw_Fill(int16 x, int16 y) {
Common::Stack<Common::Point> stack;
stack.push(Common::Point(x, y));
+ if (draw_FillCheck(x, y - 1))
+ stack.push(Common::Point(x, y - 1));
+
// Exit if stack is empty
while (!stack.empty()) {
Common::Point p = stack.pop();
}}}
But it does suggest to me that there is an inaccuracy in ScummVM's
draw_Fill() for this particular corner case, for at least this particular
game. But the "v2" format seems to be used for lots of games.
Though we already have an apparently game-specific
{{{mickeyCrystalAnimation}}} special case in
{{{PictureMgr::drawPictureV2()}}}, so maybe another game-specific hack
wouldn't be out of the question? (Somewhat alarmingly, this particular one
only checks for {{{GType_PreAGI}}}, not a specific game.)
--
--
Ticket URL: <https://bugs.scummvm.org/ticket/14549#comment:1>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM
More information about the Scummvm-tracker
mailing list