X Tutup
Skip to content

SCUMM: Allow using the Amiga palette again for Loom/Monkey1/Passport EGA#6316

Merged
bluegr merged 2 commits intoscummvm:masterfrom
dwatteau:feat/scumm-allow-amiga-renderer-for-all-v2-v3-v4-ega-dos-titles
Dec 27, 2024
Merged

SCUMM: Allow using the Amiga palette again for Loom/Monkey1/Passport EGA#6316
bluegr merged 2 commits intoscummvm:masterfrom
dwatteau:feat/scumm-allow-amiga-renderer-for-all-v2-v3-v4-ega-dos-titles

Conversation

@dwatteau
Copy link
Contributor

@dwatteau dwatteau commented Dec 15, 2024

What this PR does

Per the Trac#15458 request, this restores the ScummVM < 2.7.0 behavior of allowing the Amiga palette to be used for all the DOS v2-v4 EGA titles. (This was restricted by commit 2fe65d9, but this particular setting is used by several players (who like its softer palette and/or "more natural skin tone" it gives to most characters), to the point of being documented on the PCGamingWiki, for example.)

That is, using the Amiga palette for the DOS releases of:

  • Maniac Mansion V2
  • Zak V2
  • Indy3 EGA
  • Loom EGA
  • Monkey Island 1 EGA
  • the Passport to Adventure EGA demo

is now possible again (note that Maniac/Zak V2 and Indy3 EGA already had an exception added back, to popular demand; this commit generalizes the behavior for all the native 16-color DOS EGA titles, basically).

Testing it

To test this yourself, with any DOS 16-color title:

  • Go to Game Options… > Graphics > Render mode, and then select Amiga
  • (If the "Amiga" option is not there, try adding the game again. It looks like detection_tables.h updates require users to add their games again, which is maybe not ideal?)

Looking for some testers and some knowledgable SCUMM feature guru to review that I didn't make any mistake in the new list of conditions below :)

The Passport to Adventure demo is pretty nice in that it's available in our demo page, and it lets you check three games at once 😜

Screenshots

For each game, default DOS EGA is first, and then the forced Amiga renderer follows:

loom-dos-default-ega-palette

loom-dos-amiga-palette

pass-indy3-dos-default-ega-palette

pass-indy3-dos-amiga-palette

pass-monkey1-dos-default-ega-palette

pass-monkey1-dos-amiga-palette

@dwatteau dwatteau force-pushed the feat/scumm-allow-amiga-renderer-for-all-v2-v3-v4-ega-dos-titles branch from d228bbb to 28c342e Compare December 15, 2024 22:34
@ccawley2011
Copy link
Member

  • Maniac Mansion V2
  • Zak V2

Is it worth supporting the Amiga palette with V1 games as well?

@AndywinXp
Copy link
Contributor

Is it worth supporting the Amiga palette with V1 games as well?

I think the reasoning behind the choice of restricting it to v2-v4 games is that those games were both on DOS and Amiga and were both 16 color games, which makes sense. V1 never had Amiga releases, so it would be a little bit inconsistent to support that as well.

@dwatteau
Copy link
Contributor Author

Is it worth supporting the Amiga palette with V1 games as well?

I think the reasoning behind the choice of restricting it to v2-v4 games is that those games were both on DOS and Amiga and were both 16 color games, which makes sense. V1 never had Amiga releases, so it would be a little bit inconsistent to support that as well.

Yes, that's it. Moreover, I'm not sure using the Amiga for V1 games is guaranteed to work, or if the results are going to be that good. For the DOS EGA which had an Amiga release, the "test" was already done by the Amiga releases themselves, so…

And also the V1 titles I have hurt my eyes so much, I don't test them, so that's another reason why I excluded them :) But if they do work, I'm not against another PR was would allow them as well if it makes sense.

…(Trac#15458)

This restores the popular ScummVM < 2.7.0 behavior of allowing the Amiga
renderer mode to be used for all the DOS v2-v4 EGA titles (that is:
Maniac Mansion V2, Zak V2, Indy3 EGA, Loom EGA, Monkey Island 1 EGA, and
the Passport to Adventure EGA demo).

Many players like it for the softer palette and/or more natural skin tone
it gives to most characters.

This relaxes commit 2fe65d9 a bit.
@dwatteau dwatteau force-pushed the feat/scumm-allow-amiga-renderer-for-all-v2-v3-v4-ega-dos-titles branch from 28c342e to df705d8 Compare December 17, 2024 14:38
Comment on lines -341 to +350
// Allow v2 games to be rendered in forced Amiga mode; this works, and
// doing this to avoid the "sunburn effect" in MM/Zak is popular.
// Also allow this for Indy3 EGA.
if (_game.platform != Common::kPlatformAmiga && _game.version != 2 &&
(_game.version != 3 || _game.id != GID_INDY3 || _game.platform == Common::kPlatformMacintosh))
// Allow V2 DOS/EGA games to be rendered with the Amiga palette; this works,
// and doing so to avoid the "sunburnt" effect in MM/Zak is popular to the
// point of being suggested in some online guides. Some players also like
// this setting for the V3/V4 EGA titles (especially since ScummVM < 2.7.0
// allowed it; see Trac#15458) and one may say that LucasArts made this
// option "canon" if you read the `Common::kRenderEGA` case above.
if (_game.platform == Common::kPlatformDOS && (_game.version == 2 ||
(_game.version == 3 && !(_game.features & GF_OLD256)) ||
(_game.version == 4 && (_game.features & GF_16COLOR))))
break;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After re-checking this, all the relevant entries are marked with GUIO_RENDERAMIGA, so do we really need these version and feature checks anymore?

…GA titles

bluegr suggested this simpler approach. The previous one *may* work a
bit better for users with "old" game libraries (i.e. those who don't
delete/re-add their games so that the detection code is triggered
again to update some feature flags in the configuration file), but
I'm not that sure about this.  And anyway, improving the SCUMM
detection code is a different concern, not the subject of this change.

The current commit can be reverted if the previous one is proven to work
better for end-users.
@bluegr
Copy link
Member

bluegr commented Dec 27, 2024

Excellent. Thanks!

@bluegr bluegr merged commit 4e3afee into scummvm:master Dec 27, 2024
@dwatteau dwatteau deleted the feat/scumm-allow-amiga-renderer-for-all-v2-v3-v4-ega-dos-titles branch December 27, 2024 21:00
@dwatteau
Copy link
Contributor Author

@bluegr Thanks for your review!

To reply to your suggestion itself, I agree with it, but FWIW I had some doubts about that:

  1. I couldn't grep anything in engines/ doing similar checks against GUIO_RENDER* values at run-time. But it's maybe just the first time we find a use for that.
  2. AFAICS, the GUIO_RENDER* values are set by the detection code, which only works on new game additions, and which doesn't update past entries (at least in the SCUMM engine?). On the contrary, my first proposal using the _game.platform/version/features checks should always work, even for end-users with "old" non-updated game libraries (asking users to remove/add their games again is not very nice, IMO).

Anyway... in this particular case, the end-result is going to be the same (unless one uses the CLI or changes their scummvm.ini by hand), because _renderMode can't be set to kRenderAmiga if the GUI didn't allow setting this option first (and the GUIO_RENDERAMIGA flag has to be set for that).

For the PR itself I think it's going to be good as-is, but in the SCUMM engine itself, we may have this problem where flag updates in detection_tables.h aren't automatically propagated to existing game libraries (unless ones does a remove/add action again). Fixing this is not the scope of this PR, though 🙃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

X Tutup