Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#2026 closed defect (fixed)

MI1VGA: Guybrush turns into a rowboat

Reported by: SF/florob Owned by: fingolfin
Priority: high Component: Engine: SCUMM
Keywords: Cc:
Game: Monkey Island 1


Windows XP
ScummVM 0.8.0CVS (May 14 2005 19:12:08)
Features compiled in: Vorbis MP3 zLib MPEG2
compiled with msys/mingw (if that matters).
Didn't occur in 0.7.1

If you go to the monkey head on Monkey Island and leave
it again you become become a row boat above the Island
(and don't have to get the paddle anymore).
I attached a savegame where you just have to leave the
Monkey head.

Ticket imported from: #1202029. Ticket imported from: bugs/2026.

Attachments (1)

monkeyVGA.s05 (22.2 KB ) - added by SF/florob 14 years ago.
Savegame (with CVS 14.5.2005)

Download all attachments as: .zip

Change History (14)

by SF/florob, 14 years ago

Attachment: monkeyVGA.s05 added

Savegame (with CVS 14.5.2005)

comment:1 by eriktorbjorn, 14 years ago

Just adding a note that it appears the savegame is for the
German version. (I can't test it since I only have the
English version myself.)

comment:2 by SF/clemty, 14 years ago

become VS get...

florob probably confused those terms, after reading the post it
seems Guybrush doesn't become a rowbout, but it gets
enabled... just to clarify (can't test, am at work)

(in linguistics, this is called a "false friend", words that sound
the same in 2 languages but mean different things)


comment:3 by SF/florob, 14 years ago

no, I actually meant to say become:
OK, that is not really true, because he only sits in the
rowboat, but it's not like he only gets it (that would be
the paddles are suddenly there).
To test this you could also use boot param 5 ("./scummvm.exe
-d0 -b 5 monkeyvga") go to the monkey head and leave it again.

comment:4 by fingolfin, 14 years ago

Interesting. The entry script of room 5 determines based on the result of
getActorWalkBox(VAR_EGO) whether Guybrush should be the rowboat or
Now, apparently something changed the walkbox behaviour recently. it
used to work perfectly in 0.7.x and older.

comment:5 by fingolfin, 14 years ago

Summary: MI1VGA: Guybrush becomes a rowboatMI1VGA: Guybrush turns into a rowboat

comment:6 by cyxx, 14 years ago

Reverting the change made between version 1.402 and 1.403 of
scumm.cpp in startScene() fixes the problem. Might be good
to recheck if it's really scumm 5+ specific.

comment:7 by fingolfin, 14 years ago

Owner: set to Kirben
Priority: normalhigh

comment:8 by fingolfin, 14 years ago

Ah indeed. Yeah it is more likely that hte code is valid for what we call
"V4+". Note that our "_version" does not exactly correspond to the
versions used by LucasArts, as listed on <

comment:9 by Kirben, 14 years ago

That change is definately correct, in earlier games that
section of code doesn't exist in startScene(). Earlier games
have similar code in o_loadRoomWithEgo() only.
So while that change to startScene() triggered the bug, the
real problem must be elsewhere.

comment:10 by Kirben, 14 years ago

In ScummVM we set the actor to position 0,0 in the new
room, at the start of o_loadRoomWithEgo(), where did those
zero values come from ?

The original games set the actor position to the last values of
_xPos and _yPos (Global variables). _xPos and _yPos are
used by several functions but aren't set specifically by

comment:11 by Kirben, 14 years ago

I found the answer, by comparing SCUMM versions.
SCUMM6 onwards (In ScummVM) sets the actor position to
0,0 in o_loadRoomWithEgo().

So it looks like there is a difference with that putActor() call in
o_loadRoomWithEgo() in SCUMM5 and earlier (In
ScummVM), which we are missing.

comment:12 by fingolfin, 14 years ago

Fixed in CVS. The solution I used is to use a->_pos.x/y instead of 0/0 in
loadRoomWithEgo. While that isn't 100% true to the originall, it (a) works
and (b) is what was done in scummvm 0.1.0 & 0.2.0.

Thanks for the input, Kirben & cyx.

comment:13 by fingolfin, 14 years ago

Owner: changed from Kirben to fingolfin
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.