X Tutup
Skip to content

SCUMM: "Fix" the bright graphics in the Sega CD version of MI1#6446

Merged
bluegr merged 5 commits intoscummvm:masterfrom
eriktorbjorn:mi1-sega-cd-shadow
Feb 24, 2025
Merged

SCUMM: "Fix" the bright graphics in the Sega CD version of MI1#6446
bluegr merged 5 commits intoscummvm:masterfrom
eriktorbjorn:mi1-sega-cd-shadow

Conversation

@eriktorbjorn
Copy link
Member

As can be seen on MobyGames, the Sega CD version of MI1 is really quite dark: https://www.mobygames.com/game/141074/the-secret-of-monkey-island/screenshots/sega-cd/

This attempts to implement that in ScummVM, while at the same time making it en enhancement ("Audio-visual improvements") to use the colors provided by the game data files. Though without access to a proper Sega CD emulator, this is just a guess. it seems to match the screenshots I've seen pretty well.

Before:

image

After:

image

I don't know if the dark graphics (apparently everything is drawn in "shadow mode") were deliberate or not. But you can tell that the developers were at least aware, because they made the SCUMM Bar sign a lot brighter than in other versions, making it stand out even with the darker colors:

image

Apparently the original interpreter drew everything in "shadow mode".
This tries to emulate that by default, but you can still enable the
brighter graphics as an enhancement.

I don't have access to a proper Sega CD emulator, so this is guesswork.
Simply dividing the color components by 2 doesn't produce the right
shades, compared to the screenshots I've seen. Apparently the Sega CD
used 3 bits for each color component, and then shadow mode halved the
intensity. So I'm guessing that the original interpreter simply used the
three most significant bits of each color component.
@AndywinXp
Copy link
Contributor

It's okay to have, but I don't like that it's on by default, frankly. A different toggle (off by default) would be better in my opinion...

@eriktorbjorn
Copy link
Member Author

It could absolutely be an engine option, or a render mode. The reason I made it this way was because of how "Visual Changes" enhancements are documented in enhancements.h:

 *  --- Visual Changes ---
 *
 *  Any graphical change which is not classifiable as a "fix" but is, as a matter of fact,
 *  a deliberate change which strays away from the original intentions, should be marked
 *  with this class. Some examples of this are enhancements which modify palettes and add
 *  or edit graphical elements in order to better match a particular "reference" version.

Of course, it's hard to know if the darker graphics were in fact the original intention. Arguments for assuming it was:

  • They brightened the "SCUMM Bar" sign, perhaps to compensate for the darker graphics.
  • Surely it went through some sort of testing and approval process?
  • Someone later made a "ROM hack" to fix it, so I guess there was no technical reason for it?

Arguments for assuming it wasn't:

  • Just look at! It's completely ridiculous.

I'm absolutely for implementing the ridiculous, so to me it's just a question of how we do it. Do we change a 20+ year old default behavior in the name of accuracy or not?

@eriktorbjorn
Copy link
Member Author

So here are the options I can think of:

  • Dark mode on by default, bright mode an enhancement.
  • Bright mode on by default, dark mode a checkbox.
  • Bright mode on by default, dark mode a rendering mode.

I don't think it should be a rendering mode, because I don't see how it could possibly apply to any other game.

It would be nice to hear from people who experienced the game on actual hardware. Maybe it's only excessively dark in emulation? But the only one I know of is Dominic Armato himself, and he's said he could only remember the awful load times. (And I don't think anyone is seriously considering implementing those, right? Right?!) Maybe I should reach out on the LucasArts Facebook group? The Sega CD version did get one vote as best version of The Secret of Monkey Island, after all. (The Amiga version won with 280 votes. Because of course it did.)

@bluegr
Copy link
Member

bluegr commented Feb 21, 2025

This looks to be the best option - we don't want to change the default settings of something that has been working for years:

Bright mode on by default, dark mode a checkbox.

@eriktorbjorn
Copy link
Member Author

This looks to be the best option - we don't want to change the default settings of something that has been working for years:

Bright mode on by default, dark mode a checkbox.

I can fix that later today, probably.

Any thoughts about the method of darkening the colors? I'm sure it's not quite accurate, but it is simple, easy to understand, and seems to match the screenshots I've seen fairly well. (But how accurate are those anyway? I tried asking on the LucasArts Facebook group, but even though I specifically asked for people who ran it on original hardware a depressing number of replies were of the "I never played that version but...", "I played it on Amiga, and...", or "There's a ROM hack for that" variety.)

@tag2015
Copy link
Contributor

tag2015 commented Feb 21, 2025

Here's a TV screen recording of the game running on real hardware
https://www.youtube.com/watch?v=VRjJT6aAf2E

You can also try looking for reviews on old magazines, those had actual screen captures, usually.

@eriktorbjorn
Copy link
Member Author

This one is supposedly also captured from real hardware. It looks a little brighter than mine, but not all that much:

https://www.youtube.com/watch?v=PuoYuePzUP0

@eriktorbjorn eriktorbjorn marked this pull request as draft February 21, 2025 16:44
I mean, technically it is an enhancement, but everyone tells me that
"normally I'm all for making the original behavior the default, but in
this particular case..." And I get their point. Now we just have to
figure out how to darken the colors correctly. Fortunately there are
plenty of emulators to refer to.
@eriktorbjorn
Copy link
Member Author

Since comparing to original capture is hard (given that it's fuzzy YouTube videos), we're probably better off referring to existing emulators. I've been provided with some links that I'm going to investigate further. This one in particular looks promising:

https://segaretro.org/Sega_Mega_Drive/Palettes_and_CRAM

@eriktorbjorn
Copy link
Member Author

The new color darkening isn't quite as dark as the old one. I still haven't had the time to run the game in a proper emulator though.

image

I still haven't tried to run Sega MI1 in an emulator, but at least this
isn't quite as dark as what I had before.
@eriktorbjorn
Copy link
Member Author

I finally managed to get jgenesis to run in Linux. Now, it uses a different, slightly darker color table and I couldn't get the camera to stop at the exact same position. But I think the results are pretty close, and given the choice I'd rather pick the slightly brighter one.

So unless someone has a better idea, I think this is close to a final version.

image

@eriktorbjorn eriktorbjorn marked this pull request as ready for review February 23, 2025 15:07
@bluegr
Copy link
Member

bluegr commented Feb 23, 2025

Looks good!
What is the default setting of this checkbox?

@eriktorbjorn
Copy link
Member Author

The intention was for it to be false, i.e. brighter graphics by default. I need to double-check that this is the case, because I just remembered I started out doing this in a slightly different way.

@eriktorbjorn
Copy link
Member Author

I see some changes I should make for consistency. Maybe later tonight, maybe tomorrow.

@eriktorbjorn
Copy link
Member Author

eriktorbjorn commented Feb 23, 2025

A fixed the thing I meant to, but now I noticed that the engine settings dialog for the game has stopped working for some reason. I'll mark it as a draft again until I can investigate.

Edit: Or maybe this is an old bug? It seems the "extra" field doesn't get set when a game is first added? Only when you start it the first time?

@eriktorbjorn eriktorbjorn marked this pull request as draft February 23, 2025 21:24
Both this versions have empty extra fields in their game definitions, so
ScummVM will put the variant there but only on subsequent game launches.
This means the wrong game settings was shown on adding the game, but not
later. With this change, it should show the correct one immediately.

I don't have the FM Towns version, only the Sega version, but I assume
the same fix applies to both.
@eriktorbjorn eriktorbjorn marked this pull request as ready for review February 24, 2025 05:51
@eriktorbjorn
Copy link
Member Author

eriktorbjorn commented Feb 24, 2025

The problem I had was that the appropriate settings for the Sega CD version did not appear when the game was added, only on subsequent launches. This was because it used the "extra" field to determine if it should show the MI1 CD version settings, and the Sega CD (and apparently also the FM Towns) version has an empty "extra" field.

The reason it worked at all was that on subsequent launches, the "extra" field gets set to the variant because... actually, I have no idea.

Now it uses the platform for this determination instead. Note that I don't have the FM Towns version, so that part of the change is just an educated guess.

While at it, I removed the intro adjustment setting from the Sega CD version, because its Lucasfilm Games logo doesn't have any animation that would warrant that kind of fine-tuning. It doesn't remove the setting from the config file, though. People are still free to experiment with it manually.

@eriktorbjorn
Copy link
Member Author

eriktorbjorn commented Feb 24, 2025

On second thought, people may still want that setting to adjust where in the music the Monkey Island logo appears, so I'll revert that bit later. (I know what to do, but I can't commit from this computer.)

@eriktorbjorn eriktorbjorn marked this pull request as draft February 24, 2025 08:37
@eriktorbjorn
Copy link
Member Author

eriktorbjorn commented Feb 24, 2025

The option is back. (Around +1.10 seems like a sensible setting for me.)

@eriktorbjorn eriktorbjorn marked this pull request as ready for review February 24, 2025 17:35
@bluegr
Copy link
Member

bluegr commented Feb 24, 2025

Nice work, thanks!

@bluegr bluegr merged commit 5b6e9ca into scummvm:master Feb 24, 2025
15 checks passed
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