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

Description

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)

Changed 14 years ago by SF/florob

Attachment: monkeyVGA.s05 added

Savegame (with CVS 14.5.2005)

comment:1 Changed 14 years ago by eriktorbjorn

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 Changed 14 years ago by SF/clemty

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)

clem

comment:3 Changed 14 years ago by SF/florob

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 Changed 14 years ago by fingolfin

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

comment:5 Changed 14 years ago by fingolfin

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

comment:6 Changed 14 years ago by cyxx

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 Changed 14 years ago by fingolfin

Owner: set to Kirben
Priority: normalhigh

comment:8 Changed 14 years ago by fingolfin

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 <http://wiki.scummvm.org/
index.php/SCUMM_Versions>

comment:9 Changed 14 years ago by Kirben

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 Changed 14 years ago by Kirben

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
o_loadRoomWithEgo().

comment:11 Changed 14 years ago by Kirben

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 Changed 14 years ago by fingolfin

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 Changed 14 years ago by fingolfin

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