mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-04 01:46:42 +00:00
SCUMM: MI1: Use correct colors for Smirk's cigar smoke in CD version
We recently enabled the smoke animation that was present in the EGA and VGA floppy versions of MI1, but removed in the CD version. However, for a couple of reasons the colors were not correct. For one thing, the animation doesn't use the same color indexes as in the floppy version. But it still tries to remap the floppy version's color indexes to other colors. For another, one of the colors it tries to remap to gets overwritten, probably to ensure that the GUI uses consistent colors. If that's the only reason, we can safely ignore that for this room since it has no visible GUI. The voodoo lady's smoke is still using different colors than the floppy version. I have no good ideas for how to fix that. Those colors will get overwritten, and this time there is a visible GUI. But perhaps that shouldn't be fixed since the special edition, for better or for worse, pretty much made those colors canonical.
This commit is contained in:
parent
15dd09a527
commit
400e40da8e
@ -504,6 +504,22 @@ void ScummEngine_v5::o5_actorOps() {
|
||||
i = getVarOrDirectByte(PARAM_1);
|
||||
j = getVarOrDirectByte(PARAM_2);
|
||||
assertRange(0, i, 31, "o5_actorOps: palette slot");
|
||||
|
||||
// WORKAROUND: The smoke animation is the same as
|
||||
// what's used for the voodoo lady's cauldron. But
|
||||
// for some reason, the colors changed between the
|
||||
// VGA floppy and CD versions. So when it tries to
|
||||
// remap the colors, it uses the wrong indexes. The
|
||||
// CD animation uses colors 1-3, where the floppy
|
||||
// version uses 2, 3, and 9.
|
||||
|
||||
if (_game.id == GID_MONKEY && _currentRoom == 76) {
|
||||
if (i == 3)
|
||||
i = 1;
|
||||
else if (i == 9)
|
||||
i = 3;
|
||||
}
|
||||
|
||||
a->setPalette(i, j);
|
||||
break;
|
||||
case 12: // SO_TALK_COLOR
|
||||
@ -1751,6 +1767,16 @@ void ScummEngine_v5::o5_roomOps() {
|
||||
c = getVarOrDirectWord(PARAM_3);
|
||||
_opcode = fetchScriptByte();
|
||||
d = getVarOrDirectByte(PARAM_1);
|
||||
|
||||
// WORKAROUND: The CD version of Monkey Island 1 will
|
||||
// set a couple of default colors, presumably for the
|
||||
// GUI to use. But in the close-up of captain Smirk,
|
||||
// we want the original color 3 for the cigar smoke. It
|
||||
// should be ok since there is no GUI in this scene.
|
||||
|
||||
if (_game.id == GID_MONKEY && _currentRoom == 76 && d == 3)
|
||||
break;
|
||||
|
||||
setPalColor(d, a, b, c); /* index, r, g, b */
|
||||
}
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user