Commit Graph
153 Commits
Author SHA1 Message Date
Filippos Karapetis a318189cf6 SCUMM: Simplify instantiation of the Doublefine file handler
Add a game flag for Doublefine packed games, and simplify
the instantiation of the PAK file handler. This avoids
clashes with other packed games (e.g. the Mac version of DOTT)
2024-12-20 13:20:51 +02:00
Eugene Sandulenko c5c50a2a47 SCUMM: Clarify keyboard bindings in the Help. Bug #14740
This also removes displayed keybinding on on the memory usage,
since that is now taken by stretch functionality and in general,
this is not very useful as of now (it prints out one line of stats
to the debug log)

All of this should in reality go to the keymapper.
2024-11-11 01:39:38 +01:00
sluicebox c3f2565543 SCUMM: Fix memory leaks on restart 2024-09-21 13:53:09 +03:00
Hubert Maier 370064f93f JANITORIAL: SCUMM: Fix typos 2024-09-16 01:55:26 +03:00
AndywinXp f75b273b59 SCUMM: MANIAC: Make the the "bad crack" fix optional
This commit turns the crack fix by eriktorbjorn toggleable via
enhancements (in particular, by toggling the "Fix original bugs"
box). This is done to ensure both that this original release can be
played "as-is", and that speedrunners which are accostumed to a
certain speedrunning category can still run the game with the latest
version of ScummVM.

This closes ticket #14815:
"SCUMM: MANIAC: Turn the "bad crack" fix into an optional enhancement"

Please find more details and reasonings about this in the ticket
itself.

Happy speedrunning, folks!
2024-08-01 12:09:47 +02:00
AndywinXp 4353765c32 SCUMM: HE: Relabel and clean-up arrays subsystem
I wanted to do this for a very long time. This is helping me
debugging some very hard to understand remaining bugs
on some SCUMM HE games.

I tested this for several hours with several games,
including Moonbase and some Backyard games
ensuring there were no obvious regressions.
2024-07-06 21:12:04 +02:00
Le Philousophe 17f09bb48c SCUMM: Migrate engine to Path 2023-12-24 13:19:25 +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
AndywinXp 815e280da4 SCUMM: HE (Sound): Implement software mixer for all the other games
Sound now appears to play correctly for all HE games.
2023-08-18 22:20:45 +02:00
AndywinXp 806ff5147a SCUMM: HE (Sound): Suddenly... sound!
Moonbase Commander has finally started playing
some sounds. There are still some bugs here and there,
and the Miles mixer implementation is certainly not complete,
but hey, it works!
2023-08-18 22:20:45 +02:00
AndywinXp 7540bfc822 SCUMM: HE: Begin audio engine rewrite 2023-08-18 22:20:45 +02:00
Vladimir Serbinenko 0208fac907 SCUMM: Make Scumm*File compatible with non-File streams 2023-05-10 22:44:04 +02:00
Eugene Sandulenko bb8eda6341 SCUMM: Remove unused variables 2023-04-29 20:28:19 +02:00
Donovan Watteau 8f7880caa5 SCUMM: Document that there's no Lemonhead lines to restore in French
In this workaround, the Lemonhead lines that we restore went missing
with the v5 releases of MI1. But for whatever reason, those lines were
already missing from all the French MI1 v4 releases that I'm aware of.
So there's no official content to add back for this language, sorry!

Checked against my French floppy EGA, floppy VGA and v5 CD versions.
French Amiga and Atari releases checked on YouTube.
2022-11-03 17:57:51 +01:00
Le Philousophe 137b51d7ac SCUMM: Don't use unsafe sprintf and vsprintf 2022-10-23 22:46:19 +02:00
AndywinXp 7077d8d124 SCUMM: Fix AmigaOS and NDS builds 2022-10-04 13:50:49 +02:00
AndywinXp a7a4d9f120 SCUMM: DiMUSE: Implement antiskip system for devices with slow load times
This code is present in all the original interpreters using Digital iMUSE, and it was implemented
in order to allow slower CD drives to fetch new data without having music skipping during load times.
This works by basically flooding the music buffer with data whenever a big resource, a voice file, or
a SMUSH movie is loaded.
Arguably this is not needed for devices using SSD drives, but since this change had its benefits on a
quite old laptop of mine, and since the memory overhead is very minimal, I have decided to implement it.
2022-10-04 11:34:14 +02:00
athrxx 3d39d206ee SCUMM: replace strcpy calls with Common::strlcpy
This replaces every single strcpy call in the engine with
Common::strlcpy.

Some of these might cases seem a bit pointless, but it is
supposed to discourage future use of strcpy. If people don't
see a single occasion of it they might think twice before they
use it...
2022-08-27 13:08:38 +03:00
Donovan Watteau 4ec06a2bf6 SCUMM: Unify WORKAROUND usage and complete/tweak some of them 2022-08-07 17:24:27 +02:00
AndywinXp fabaeb4b83 SCUMM: COMI: Implement original GUI 2022-08-06 13:33:56 +02:00
Torbjörn Andersson ffe3d8a195 SCUMM: Fix MI2 Mac script patch comment
It's clearer if the addresses are included. Also, the comment had the
wrong jump address at one point.
2022-04-19 14:11:55 +02:00
Torbjörn Andersson 3e37a6ca9a SCUMM: Fix comment typo 2022-04-19 13:58:00 +02:00
Torbjörn Andersson cb561f462e SCUMM: Read the "enable_enhancements" setting only once
I can't change during gameplay, it's shorter to type, and we won't
accidentally involve the config manater in some tight loop.
2022-03-23 15:23:10 +01:00
Torbjörn Andersson 1e91650154 SCUMM: Make MI1 additional Lemonhead dialog optional 2022-03-23 15:23:10 +01:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Torbjörn Andersson 33e4c56521 SCUMM: Don't try to apply workarounds to unloaded resources...
...because ScummVM will crash trying to do so.

This was discovered in bugs #13111 and #13113, where loading a HE
savegame does not load sound resource 1 but still tried to apply
workarounds to it. I don't know if this is the only case.
2021-11-29 07:25:33 +01:00
Andrea Boscarino f731cfd648 SCUMM: DiMUSE: New Digital iMUSE Engine (#3368)
SCUMM: DiMUSE: Add new implementation of the engine
2021-11-16 00:05:18 +01:00
Orgad Shaneh ed5489929c SCUMM: Use nullptr
Using clang-tidy modernize-use-nullptr
2021-11-14 15:51:59 +02:00
Orgad Shaneh c2e7eeb563 SCUMM: Replace new[]/memset with new[]() 2021-11-10 19:53:15 +01:00
Alexandre Detiste 6044504762 JANITORIAL: typos
some in the variable names, some in the comments;
no change for the strings that interract with original games assets
2021-10-31 20:46:31 +01:00
Torbjörn Andersson 7aadf63014 SCUMM: Add Spanish version of the MI1 Lemonhead patch
I don't have this version of the game myself, so it's based on a YouTube
playthrough and walking through the process of extracting the necessary
data with timofonic. It has not been properly tested, though the
messages do look correct if I insert them into the English version.
2021-09-02 13:14:42 +02:00
Ben Castricum bb9b151c19 SCUMM: Add SegaCD MI1 Lemonhead lines 2021-08-18 21:53:40 +03:00
Ben Castricum 8e0aeaab73 SCUMM: Add FM-Towns MI1 Lemonhead lines 2021-08-18 10:33:25 +03:00
Jan Sperling f12fe5e9b5 SCUMM: Add German MI1 Lemonhead lines 2021-08-15 22:07:38 +03:00
Torbjörn Andersson d1f4824864 SCUMM: Add MI1 Lemonhead lines for the Mac CD versions too
The Mac CD versions that I have use the same GUI as the DOS CD version,
but don't have CD audio tracks for the music. (So there is no music for
the cannibal village.) The script to patch is identical to the DOS CD
version, but located four bytes earlier in the room resource.
2021-08-10 22:05:02 +02:00
Andrea Boscarino b5e56e9230 SCUMM: Add italian translation for MI1 Cannibal script patch 2021-08-10 22:39:11 +03:00
Torbjörn Andersson b5d7ec68ef SCUMM: Minor cleanup 2021-08-07 11:57:48 +03:00
Torbjörn Andersson f1e07f96b7 SCUMM: Add missing space. 2021-08-07 11:57:48 +03:00
Torbjörn Andersson 4bcfd4aa3b SCUMM: Prepare for translated versions of the MI1 cannibal patch 2021-08-07 11:57:48 +03:00
Torbjörn Andersson 30ce02e9e3 SCUMM: Simplify MI1 cannibal patch
There's enough space to just change the first message and insert the
WaitForMessage(). No need to mess with the second message, since that
one's already correct.
2021-08-07 11:57:48 +03:00
Torbjörn Andersson 8e8e3225da SCUMM: Add missing Lemonhead lines in English CD Monkey Island 1
Apparently these were lost when the game was converted from floppy to CD
version. Not just in the English version, but that's all I have. We
should come up with a way to make it easy to add other languages,
though.
2021-08-07 11:57:48 +03:00
Torbjörn Andersson 010d17e469 SCUMM: Update comments about cracked Maniac Mansion
I have verified that the Steam version is identical to the GOG version
in this respect. (The file layout is a bit different, but the data files
are the same.)
2021-07-21 19:40:57 +02:00
Torbjörn Andersson 07617f8c5f SCUMM: Fix bad Maniac Mansion crack in GOG (and Steam?) version
The enhanced version of Maniac Mansion currently sold on GOG (and
probably Steam as well) has a one-byte change to the script handling
keypads, presumably to disable the security door copy protection. (Which
ScummVM disables by default anyway, by leaving the door open.)

Unfortunately, this crack was made without any deeper understanding of
the game (said the guy who never ever played the whole thing :-). It
allows you to enter either the correct code, or any code as long as you
get the last symbol wrong. But the script is also used for other keypad
puzzles in the game (e.g. Edna's phone number and safe combination). So
those puzzles are completely nerfed as well.

I have reported this as a bug to both GOG and Disney Games & Apps
Support. GOG has acknowledged that there is a problem, which is more
than Disney has done so far, but it remains unclear whether or not they
will fix it.
2021-07-17 09:20:10 +02:00
Torbjörn Andersson aedf820328 SCUMM: Changed tabs to spaces
I know the default tab width for ScummVM is supposed to be 4, but I
can't be bothered to change it in my editor (where it's 8) and I assume
I'm not alone in that. So I've changed the tabs here so that the hex
code and script text should line up nicely regardless of your editor
settings.
2021-07-15 13:58:31 +02:00
Torbjörn Andersson 4fe3889861 SCUMM: Handle failure to patch MI2 Mac boot script more gracefully
If another Mac version of MI2 is ever discovered, and its boot script
doesn't match any of the known ones, we can't know what the "skip copy
protection" boot param will do. Safer, then, to use the default boot
param. ScummVM may still skip the copy protection, but if so it will do
it the old-fashioned way.
2021-07-15 13:58:31 +02:00
Torbjörn Andersson 8522ef0f4f SCUMM: Patch the MI2 Mac boot script
There are (at least) two different versions of MI2 for the Mac. The one
that was distributed with the LucasArts Mac CD Game Pack II has a
modified boot script that completely removes the copy protection screen
(yay!) and the difficulty selection (boo!).

To re-instastate the difficulty selection, patch the boot script to be
identical to the other version, which was presumably released on
floppies.

This patching is only done if the boot script has the exact expected
length of the CD version's script, and if the patched script matches the
floppy version's. That should be safe enough.
2021-07-15 13:58:31 +02:00
sluicebox 674ed112aa JANITORIAL: Update more old bug tracker numbers
I missed the six digit ones and a few others in:
93eeffc84d
2021-06-09 14:28:52 -06:00
Torbjörn Andersson 819cfb8383 SCUMM: Initial work on Mac Loom font renderer
The main purpose of this set of changes is to refactor the code to make
it easier to pass the name of the Macintosh resource file to other parts
of the engine (it used to be hard-coded in the music players), and to
scale-up the graphics by 2.

The actual font rendering is almost completely broken.
2021-05-17 18:44:29 +02:00
Zvika Haramaty a1f440c073 SCUMM: FM-TOWNS: Add optional trimming to 200 pixels height
Trimming the screen to 200 pixels allows using aspect ratio correction.
2021-04-20 23:56:39 +02:00