Opened 19 years ago

Closed 19 years ago

Last modified 19 years ago

#2026 closed defect (fixed)

MI1VGA: Guybrush turns into a rowboat

Reported by: SF/florob Owned by: fingolfin
Priority: high Component: Engine: SCUMM
Version: 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 19 years ago.
Savegame (with CVS 14.5.2005)

Download all attachments as: .zip

Change History (14)

by SF/florob, 19 years ago

Attachment: monkeyVGA.s05 added

Savegame (with CVS 14.5.2005)

comment:1 by eriktorbjorn, 19 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, 19 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, 19 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, 19 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 not. Now, apparently something changed the walkbox behaviour recently. it used to work perfectly in 0.7.x and older.

comment:5 by fingolfin, 19 years ago

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

comment:6 by cyxx, 19 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, 19 years ago

Owner: set to Kirben
Priority: normalhigh

comment:8 by fingolfin, 19 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 < index.php/SCUMM_Versions>

comment:9 by Kirben, 19 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, 19 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 o_loadRoomWithEgo().

comment:11 by Kirben, 19 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, 19 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, 19 years ago

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