Commit graph

289 commits

Author SHA1 Message Date
Torbjörn Andersson
852cebbc9b SCUMM: Fix Mac MI2 scrollEffect() crash (bug #6286)
This only happened when the original GUI was disabled.
2024-12-03 18:44:31 +01:00
AndywinXp
f831831c88 SCUMM: Fix scroll screen transition for _macScreen games 2024-10-28 08:24:59 +01:00
Torbjörn Andersson
6989b2205d SCUMM: Clean up dissolveEffect() slighty for Mac versions 2024-10-28 08:24:59 +01:00
AndywinXp
bdbc4ac66c SCUMM: MI1 (Mac): Correctly handle dissolve effect path 2024-10-28 08:24:59 +01:00
Torbjörn Andersson
ce6e1f7031 SCUMM: INDY3 (Mac): Use iris effect instead of dissolve
I'm uncertain exactly where this is used, but during the endgame at the
very least. (Fortunately I had saved my old savegames from when playing
it in a Mac emulator.)
2024-10-28 08:24:59 +01:00
AndywinXp
fe184d5ea5 SCUMM: LOOM (Mac): Use iris fade instead of dissolveEffect
This matches the original
2024-10-28 08:24:59 +01:00
AndywinXp
5afeb4854e SCUMM: GFX: Remove dissolve effect from Mac versions
This should now match the original, and fix some nasty
glitches.
2024-10-28 08:24:59 +01:00
AndywinXp
41cfe0f9cf SCUMM: Clean up Mac screen filtering code 2024-10-28 08:24:59 +01:00
AndywinXp
a68ded4457 SCUMM: Fix EPX algorithm edge case 2024-10-28 08:24:59 +01:00
AndywinXp
9f319cdd86 SCUMM: Add Mac screen implementation for remaining LEC games
This adds optional EPX scaling and 640x480 resolution for
LucasArts Macintosh games other than Indy3 and Loom.

This includes:
* Monkey Island 1
* Monkey Island 2
* Indy4
* Day of the Tentacle
* Sam&Max
* Full Throttle
* The Dig

In doing this, I reverted the ugly code which previously offset
the game screen 20 pixels below (to create an internal 320x240
buffer, instead of 320x200). Instead of just offsetting mouse
coordinates and the final screen texture, I used to offset the
in-engine graphics elements. Ew.

This ensures flawless savegame compatibility between old and
new, without touching anything.
2024-10-28 08:24:59 +01:00
AndywinXp
67b0440ad0 SCUMM: MI1 (Mac): Implement EPX scaling and a stub for the menu 2024-10-28 08:24:59 +01:00
Hubert Maier
370064f93f JANITORIAL: SCUMM: Fix typos 2024-09-16 01:55:26 +03:00
AndywinXp
ad201e3b3e SCUMM: MONKEY1 (CD): Improve palette enhancement in room 36
Also make it the default on Mac, which is how it should be in the original.
2024-09-07 16:38:44 +02:00
Donovan Watteau
30b46ce49e SCUMM: MONKEY1: Fix the "Important Notice" sign workaround for the Macintosh release
For some reason, the background color of the sign at the Governor's mansion
is already white in the Macintosh release (at least in the one I have here),
but the scripts still have the wrong color set. It looks like the Macintosh
interpreter may have fixed this on the fly...

So we still have to fix this, but for the Macintosh release the Enhancement
will always be enabled, since it matches the original behavior. Also, this
release only changed the background color, not the text color.

See my addition to the previous GH-4168 PR for a screenshot.

If someone has a Macintosh interpreter showing a different behavior, or
wants to analyze it to see whether the fix is indeed hardcoded into it,
I'd be curious to know that, of course :)
2024-09-07 02:03:03 +02:00
AndywinXp
b0abcd0461 SCUMM: MANIAC (Apple IIgs): Fix all known gfx regressions
Poor Apple II version, it has been broken for at least a couple
of years :-)

All regressions were a byproduct of basically forgetting this
version existed when making changes which should have
(or should not have) targeted C64 games, which use the
same rendering routines and palettes as this one.

Fixes and closes #14765:
"SCUMM V0: MANIAC: APPLE II: Palette is incorrect."
2024-08-10 21:52:36 +02:00
AndywinXp
19397407cf SCUMM: MANIAC (NES): Fix mishandling/drawing of text area
While the workaround makes sense for room graphics,
I haven't yet see a reason why it should be used for the text
area as well...

This fixes #13107:
"SCUMM: MM (NES-EU-ES) - Last letters retained in screen/missing letters"
2024-08-10 13:00:31 +02:00
AndywinXp
3aa5c35faa SCUMM: GUI: Fix flashlight disappearing during old style pause banner 2024-08-09 00:47:02 +02:00
AndywinXp
2b41d01b80 SCUMM: LOOM (EGA): Fix flashlight position 2024-08-08 21:46:50 +02:00
AndywinXp
1e1840c009 SCUMM: v1-4: Fix flashlights corners glitching on fast movements 2024-08-08 21:28:23 +02:00
AndywinXp
cd0b8a3f65 SCUMM: v1-4: Improve flashlight accuracy
Verified from various v1-4 disasms.

This fixes and closes #15274:
"SCUMM: MANIAC: Flashlight shape not accurate"
2024-08-08 16:10:18 +02:00
Donovan Watteau
e6bbf2636d SCUMM: Silence -Wextra warning from GCC in ScummEngine::scrollEffect()
This gives an "enumerated and non-enumerated type in conditional expression"
warning with GCC 11.3, but everything's OK in this context.
2024-08-03 12:53:17 +02:00
Donovan Watteau
0cb3176127 SCUMM: Fix a small typo in my previous Gdi::drawStrip() commit 2024-07-16 09:06:45 +02:00
Donovan Watteau
b9d524b092 SCUMM: Extend the cyan/pink line in Berlin enhancement to German Indy3
This version redrew the background of room 46 for censorship reasons, but
yet the weird cyan/pink lines were left intact, as in the other VGA
releases.  So we what to check for a different smapLen value there.

Checked against my own copy.
2024-07-16 00:20:27 +02:00
Donovan Watteau
9f27f76a3e SCUMM: Fix -Wunused-const-variable warning when building without HE 2024-07-16 00:20:27 +02:00
AndywinXp
98f242a7b7 SCUMM: SPYFOX3: Fix unreadable numbers in minigame
This closes ticket #6712:
"SCUMM/HE: SPYFOX3 - Text drawing
glitch in "Radioactive Trash Collector""

HE100 (and a very late version of HE99) uses different
flags for drawBox color modes. Incidentally, the target
color (light gray) used for the background on which
text is rendered managed to trigger a different mode,
hence the text never being removed.
2024-07-05 23:36:46 +02:00
AndywinXp
9f1867f881 SCUMM: HE100+: Fix room solid color fill redraw not working 2024-06-23 19:49:54 +02:00
AndywinXp
f216ee38c7 SCUMM: HE: Fix TMSK ZPlanes handling
This closes ticket 13420:
"SCUMM: PUTTZOO Animation overlap bug
with final iceberg in Putt-Putt Saves the Zoo"

Not only this now works correctly, but now in updated versions
of the game the hair of the lower left penguin is not masked
anymore, so the iceberg piece will be drawn on top of said hair.
I have verified that this is 100% accurate, the code for TMSK
decompression is the same in every HE version, and the original
executable shows exactly the same behavior.

So refrain from filing a bug for that, thanks :P
2024-06-15 11:53:12 +02:00
AndywinXp
196cadbe00 SCUMM: HE: Implement original actor/object overlapping/erasing routines
This is the thing I held off doing during the HE gfx rewrite, only to find out
it was actually needed. As usual, a great number of changes for... only
one small bug fixed. This closes ticket #9619:
"SCUMM/HE: PUTTZOO- Kenya Animation Bug Persists"

I have tested a bunch of representative HE70+,80,90,95,98,99,100
entries and I didn't notice regressions.

HE versions under 70 have not been touched by this, as I'd like to
know if there are issues with actor/object overlaps BEFORE actually
starting disassembling 16-bit DOS executables...
2024-06-11 14:48:50 +02:00
athrxx
462daa5415 SCUMM: (HE) - fix wiz drawing mem leaks
Currently, buffers get allocated that do not get freed. Apparently,
the reason is that it is not well known when it is actually safe to
do that. This here should hopefully fix the situation. Or at least
give some inspiration on how to fix it...
2024-05-19 17:13:05 +02:00
athrxx
50c5ee2b77 SCUMM: (FM-Towns) - fix regression
(bug no. 15121 - MI2 (FM Towns) - Difficulty selection
screen looks wrong)
2024-05-11 02:18:05 +02:00
athrxx
437eadd10e SCUMM: (INDY4/FM-Towns) - fix bug no. 15120
(Corrupted graphics during screen transitions without "smooth scrolling")
2024-05-08 17:50:11 +02:00
athrxx
69f6357135 SCUMM: (LOOM/FM-Towns) - fix regression 2024-05-04 19:28:22 +02:00
athrxx
ecb03f2e7c SCUMM: (V3/FM-Towns) - fix bug no. 15027
("INDY3 (FMTowns): Map lines are drawn incorrectly, plus more
issues when leaving Germany")

The bug with the wrong colors is caused by the shadow palette, which
gets set with the colors for the modified country borders, but gets
reset immediately after drawing the background. So when the map
travel marker makes an area dirty, it would be restored with the wrong
color. Now, the original V3 FM-Towns interpreter can draw on layer 2
directly, without declaring anything dirty, effectively bypassing the
normal SCUMM drawing. This avoids any change to the background.
This happens for drawBox, but also when displaying or hiding the pause
banner.

In SCUMM5 drawBox works the way we had it implemented, drawing
on the text surface (MI1: also on the vs buffer) and then making that
rect dirty.
2024-05-04 16:43:06 +02:00
AndywinXp
f5f6d86d78 SCUMM: SPYFOX3: Fix #15108 and #15106 2024-05-02 01:25:01 +02:00
AndywinXp
e1bb816a50 SCUMM: GFX: Simplify expression and fix truncation issue 2024-05-01 19:48:15 +02:00
athrxx
55d7f16dc1 SCUMM: (v5/FM-Towns) - fix regression 2024-05-01 01:54:14 +02:00
athrxx
b868dab4c5 SCUMM: (V3/FM-Towns) - partial fix for bug no. 15027
(INDY3 (FMTowns): Map lines are drawn incorrectly)

This fix addresses the part concerning the line width of the travel
marker. Turns out that SCUMM3 FM-Towns draws all boxes one
pixel wider and higher on virtual screens other than 1. This also
allows removal of a hack in ScummEngine_v5::o5_drawBox().

I also fixed the old style pause/restart banners, since they incorrectly
used drawBox() for line drawing (which would be glitchy with the now
verdrawing drawBox(). The positive outcome is that we no have original
looking FM-Towns banners (only in Japanese, though, since - unlike the
original - we don't run the English version in 640x480).

The changed method of drawing and removing the banner also fixes
the removal of the black country borders on the map. But it will still
be removed below the pause banner and in the spots where the travel
marker passes the border. So that has to be addressed separately.
2024-04-30 23:29:53 +02:00
AndywinXp
a136275a92 SCUMM: HE: Fix some Spy Fox 1 (HE90) issues 2024-04-26 23:21:29 +02:00
AndywinXp
2da4608506 SCUMM: HE: Re-implement BMAP routines 2024-04-26 23:21:29 +02:00
AndywinXp
9dd2ea4e43 SCUMM: HE: Re-implement WIZ text and Aux images 2024-04-26 23:21:29 +02:00
AndywinXp
b19c4b772d SCUMM: HE: Overhaul more of the GFX system
* Overhaul sprites system
* Fix compression routines for 8-bit graphics
* More fixes and clean-up
2024-04-26 23:21:29 +02:00
AndywinXp
d64a379d21 SCUMM: HE: Begin porting Wiz and other graphics code 2024-04-26 23:21:29 +02:00
AndywinXp
0a3b6c49b2 SCUMM: HE: Implement FloodFill operation 2024-04-26 23:21:29 +02:00
Torbjörn Andersson
d46e4e1aa0 SCUMM: Don't update the Mac GUI during graphical transitions
Perhaps this will finally fix the screen corruption bug I've been seeing
occasionally in Mac Indy 3? That seemed to happen because the screen was
changing while the game was paused, after the Window manager had made a
copy of the current screen.
2024-03-10 23:12:25 +01:00
AndywinXp
660fca6a02 SCUMM: MANIAC (Amiga): Fix screen transitions being broken instead of disabled 2024-01-24 21:30:41 +01:00
AndywinXp
bd22763cdc SCUMM: MACGUI: Implement correct video size for Mac v3 games
This commit brings games to 640x480 (from 640x400).
All old savegames are compatible and are brought up to date in
real time.
2023-12-03 21:03:59 +01:00
Torbjörn Andersson
ec1ab82283 SCUMM: Initial work on a common MacGui class that handles Mac menus etc.
This will be used for Last Crusade and Loom. Loom is currently the more
broken of the two, though.
2023-11-18 18:47:39 +01:00
AndywinXp
e4232b95b1 SCUMM: GUI: Implement accurate menus for Jap Indy4 (DOS/Mac) 2023-11-12 18:59:18 +01:00
AndywinXp
8461f25218 SCUMM: Rename enhancementClassActive to enhancementEnabled 2023-11-08 11:46:06 +01:00
AndywinXp
d5fa7aeb90 SCUMM: Mark all enhancements with their respective classes 2023-11-08 11:46:06 +01:00