Commit Graph
672 Commits
Author SHA1 Message Date
AndywinXp 58185c5654 SCUMM: SMUSH: Extend dynamic video framerate changes to all games
This has been verified from disasm, and also removes the need for
another old workaround.
2023-01-15 22:20:01 +01:00
AndywinXp 9e7e6a08b2 SCUMM: INSANE/SMUSH: Implement video file dependent frame rate
In FT and DIG demo, video files have the correct frame rate encoded in the FLU header.
This fixes bug #14029.
2023-01-15 14:39:33 +01:00
AndywinXp a0a647c290 SCUMM: Properly sync voice mode flags between ScummVM and original GUI at startup
Fixes #14027.
2023-01-14 12:55:53 +01:00
AndywinXp a41b1174ed SCUMM: v7-8: Add GUI option for toggling low latency audio mode 2023-01-10 21:17:23 +01:00
AndywinXp 8d0e97af70 SCUMM: DIMUSE: Implement low latency mode
This fixes bug #13462
2023-01-10 21:17:23 +01:00
AndywinXp 61fa4b6253 SCUMM: v7-8: Fix FT camera bug and properly fix #1195 and #1579
There was a nasty bug in the fuel tower room, when the cops arrive at the
tower and the player regains control, in which the camera would be brought up
and then down again.

While I was there, since this is the same domain, I rechecked the v7-8 camera
code from the disasm, made some corrections, and properly fixed #1195 and
#1579. Another workaround bites the dust :)
2023-01-08 17:42:50 +01:00
AndywinXp 5b18d1aa6b SCUMM: DIMUSE: Implement support for higher internal sample rates
This lays the ground for:
* Supporting fan dubbings and self-made high quality music replacement;
* Reintroduction of support for compressed audio.
2023-01-02 23:30:57 +01:00
AndywinXp 5c9b0a8aa2 SCUMM: GUI: Implement Atari ST cursors 2022-12-29 14:55:58 +01:00
AndywinXp b376f0010f SCUMM: GUI: Add support for Maniac NES 2022-12-29 11:19:45 +01:00
AndywinXp 19b45e2a50 SCUMM: GUI: Fix passcode not being updated on MI1 SegaCD
Big thanks to eientei (einstein95) for the research for this commit!
2022-12-13 18:40:11 +01:00
AndywinXp b1eaf2ea0f SCUMM: GUI: Implement MI1 SegaCD menu 2022-12-13 18:40:11 +01:00
AndywinXp 201219b694 SCUMM: GUI: Implement internal speaker sound muting from keyboard combination
The older titles (v0-v4) allowed this. This only targets internal speaker-like audio devices,
so AdLib and MT-32 are not impacted by this, just like on the original.
2022-12-02 00:57:43 +01:00
AndywinXp 759727d27f SCUMM: GUI: Temporarily exclude MI1 SEGA CD JAP from the supported games
I have to think of a clever way of handling all those text positioning glitches of this version.
Also, some of the strings are either too long or missing to be displayed as banners.
I might have to make a replica of the original save menu for this version, but without the
passcode system. Since it's going to take a little longer, I'm temporarily disabling GUI
support for this version.
2022-11-29 00:21:14 +01:00
Cameron Cawley 06dab62e2e SCUMM: Move Player_V2CMS to the new CMS API 2022-11-29 00:12:19 +01:00
AndywinXp 1d206fbc53 SCUMM: v0-1-2-3: Implement actual saving\loading system
This commit implements saving and loading in the same way the original interpreters
for MANIAC v0-1-2, ZAK v1-2-3, LOOM v3 and INDY v3 do. This makes it possible to
use the original save menus without glitches or crashes.

Saves done from GMM can also be loaded from the original menu.
2022-11-28 23:21:45 +01:00
AndywinXp 9fee7adf52 SCUMM: Explicitly remove support for original GUI to ST v2 games 2022-11-28 23:21:45 +01:00
AndywinXp 617a52fc76 SCUMM: GUI: Flag Loom PC-Engine as unsupported 2022-11-28 23:21:45 +01:00
AndywinXp a8fc3f706d SCUMM: GUI: Update the detection tables for the new games supporting the GUI 2022-11-28 23:21:45 +01:00
AndywinXp 13e7c9d4d9 SCUMM: Implement basic support for v0-3 GUI 2022-11-28 23:21:45 +01:00
Cameron Cawley 90620e0b5d SCUMM: Always build with Player_HE support 2022-11-16 09:29:02 +02:00
athrxx caa96a50f0 SCUMM: (IMS) - refactor MT32/GM drivers
The MT32 driver could be based on the GM driver for the
most parts. Also minor fixes and cleanup.
2022-10-06 18:47:55 +02:00
athrxx 40b459164b SCUMM: (IMS) - add dedicated MT-32 sound driver
(fixes bug no. 1248 - "SAM: some MIDI channels missing on MT-32")

This is a very obvious bug if the speech is turned off (otherwise the speech will
kind of cover it up). In the SAMNMAX intro it is hardly playing anything.

The reason is that the newer sound system has an extra driver layer between the
imuse parts and the actual hardware which mananges the channels (similar to
what we already do for AdLib, Amiga, FM-Towns...). Whenever the songs are
attempting to use a Midi part > 9 our current system will fail.

I have written the MT-32 player to also handle the older games music and sound
effects. This will allow cleaning up various more hacks in the common sound code.
I have done only little cleanup here, since it is not the main purpose of the commit.

I will also write a GM driver. This is going to be easier. Currently, there is a only
some init and skeleton code for it, the rest is just pass-through...
2022-10-06 18:47:46 +02:00
athrxx 99dd6cb248 SCUMM: (IMS) - minor restructuring and cleanup
Currently, Roland MT-32 sound is broken for
SAMNMAX. Just try the intro song with shut off
speech. It is very obvious that it plays with a quite
reduced number of channels compared to the
original interpreter.

Now, due to the not-so-helpful code design (much
of the iMuse code has been drawn into the common
code) it has become increasingly difficult to fix Midi
related thing in iMuse. I have added more and more
crude hacks over time.

SAMNMAX requires more elaborate channel
allocation. To make it happen I have added driver
wrappers for Midi to the iMuse code.

Other than that, I have done only minor cleanup here.

Actually, I would have liked to withdraw much more
of the iMuse code from the common code and move
it to SCUMM (basically all the MidiChannel
stuff which is exclusively used by iMuse. But it turns
out that it is so thoroughly intertwined (the major
blocker here being the AdLib driver) that it requires
more thought and effort and would just distract me
from fixing the SAMNMAX sound.
2022-10-06 18:47:40 +02:00
Andrea Boscarino 6ad5ed0b92 SCUMM: DiMUSE: Solve very rare deadlocks caused by two different mutex objects 2022-10-04 11:33:26 +02:00
Donovan Watteau 98552a75d3 SCUMM: JANITORIAL: Better description of the French MI1 release with buggy MT-32
I'm told by some French players that only the 8-disk French VGA floppy
release had invalid MT-32 content, but that the 4-disk release didn't
have this problem. The MD5 check still appears to be OK, but the comment
was a bit wrong.
2022-10-02 21:08:05 +02:00
BLooperZ 180ba42020 SCUMM: HE: opt out BiDi for official translations 2022-09-29 20:46:55 +02:00
BLooperZ 11ec68fda5 SCUMM: HE: support BiDi in hebrew fan translations 2022-09-29 20:46:55 +02:00
Donovan Watteau d3a64b7cc5 SCUMM: JANITORIAL: Rename kNewInavlidBox to kNewInvalidBox 2022-09-29 18:38:27 +02:00
Donovan Watteau 655afcdf55 SCUMM: Disable MT-32 support for MONKEY1-VGA-FR
The French VGA floppy version of Monkey 1 (and, apparently, this version
alone) is missing the usual 'roland' room, and the index references an
invalid DISK00.LEC file, although the game scripts didn't disable the
MT-32 feature itself. This causes a fatal error when trying to run this
game with MT-32 support, even with the original interpreter (while it
does work with the English and Spanish VGA floppy versions).

We can't do much about this, since many resources appear to be missing,
but we can detect this version and warn the user before going back to
Adlib mode. Otherwise, some users can be confused by the fatal error
about the DISK00.LEC file.
2022-09-29 17:07:30 +03:00
Donovan Watteau 80e134a912 SCUMM: Let it build again without ENABLE_SCUMM_7_8 2022-09-20 19:38:18 +02:00
Donovan Watteau 4586d2fc9d SCUMM: Allow rendering v2 games in forced Amiga mode again
Commit 2fe65d95ef limited render modes to
suitable targets, but many users are used to render the DOS/V2 versions
of Maniac Mansion and Zak in Amiga mode, to avoid the so-called "sunburn
effect".  Playing the game with this setting doesn't cause any issue, as
far as I know.
2022-09-18 14:54:55 +02:00
athrxx e8542d8cb6 SCUMM: reset audio cd settings at startup
(the audio cd manager is a global object, so it may start
up in SCUMM with wrong values)
2022-09-14 17:18:28 +02:00
athrxx e052fee77f SCUMM: (IMS) - cleanup sound init process
Reduce abuse of the property function to set init vars.
Better distinction between drivers to prevent a GM init on
the Mac driver (which could happen depending on the
launcher sound setting).
2022-09-13 22:13:53 +02:00
athrxx 71f73fd8ae SCUMM: (GUI) - modify dialogs for CJK font support
This replaces the fixed vertical coordinates with coordinates based on the font
height (taken from the original CJK DIG interpreter).

It also influences the appearance of the non-CJK dialog, but not necessarily for
the worse (and the one we had is again different from the one in the original
7.3.5/7.5.0 interpreters, so there really is not one definite dialog).

There is more in this commit, like:
- clippint the save names at the end of the line
- getting rid of all sprintfs and similiar cleanup to be better in line with our
coding conventions.
2022-09-08 19:10:42 +02:00
AndywinXp 880c78b023 SCUMM: GUI: Implement v4 GUI and menu 2022-09-08 19:10:42 +02:00
AndywinXp 43c6896c53 SCUMM: GUI: Disable original GUI for MI2 non-interactive demo 2022-09-08 19:10:42 +02:00
AndywinXp 9bca06429f SCUMM: GUI: Implement v5 GUI and Menu 2022-09-08 19:10:42 +02:00
AndywinXp ddb54b30a4 SCUMM: GUI: Implement saving and loading routines for the old style menu 2022-09-08 19:10:42 +02:00
AndywinXp 2417448791 SCUMM: Change _defaultTalkDelay to _defaultTextSpeed
From now on we're reasoning in terms of text speed, just like the interpreter does,
which means: delay == 9 - speed.
This allows us to sync the internal GUI and the ScummVM GUI more easily, and
allows for a better correspondence to the original interpreters.
2022-09-08 19:10:42 +02:00
AndywinXp 457bcb67db SCUMM: GUI: Implement the majority of the v7 Main Menu 2022-09-08 19:10:42 +02:00
AndywinXp d1b73e1ffe SCUMM: GUI: Add functional main GUI banners for v5-6-7 2022-09-08 19:10:42 +02:00
AndywinXp 9ef023b11c SCUMM: GUI: Refactor internal GUI code 2022-09-08 19:10:42 +02:00
athrxx 5ac8561a63 SCUMM: fix warning
(Wshadow)
2022-09-02 15:36:48 +02:00
athrxx 4cb57c3c41 SCUMM: fix mem leak 2022-08-31 15:57:49 +02:00
athrxx 442ca7d724 SCUMM: (v6) - allow EGA mode for <default> platform
Currently it is allowed only for DOS platform settings, but for the v6 games this is the same thing...
2022-08-21 16:41:49 +02:00
athrxx 2fe65d95ef SCUMM: limit render modes to suitable targets
While we already tried to prevent invalid render mode
selections there were still some possible misconfigurations.
I have no idea why on earth people do things like select
CGA mode on Mac or Amiga, but it happens...
2022-08-18 20:35:38 +02:00
athrxx 319e50fc35 SCUMM: (LOOM/VGA Talkie) - improve verb handling
- get rid of weird hackery in o5_verbOps
- make sure the verbs are properly restored after loading a savegame
2022-08-10 15:27:23 +02:00
AndywinXp 122ce598e8 SCUMM: Clean-up default value registration for original_gui 2022-08-06 23:33:10 +02:00
AndywinXp e7f2c71c66 SCUMM: Set a default value for original_gui in the Config Manager if absent 2022-08-06 20:24:11 +02:00
athrxx cf318372e7 SCUMM: (v5/6/EGA) - improve post-load fix
MI1 CD, MI2 and DOTT make script-based color adjustments to the verb interface, depending on the videomode var...

MI1 VGA Floppy, LOOM VGA, INDY4 and SAMNMAX don't do that. It seems to me that it only  applies to the games with the purple verbs interfaces. The fact alone that DOTT still checks the videomode for an EGA setting  and sets colors accordingly (the same ones as in MI2) shows that these scripts most likely were just brought over from MI2 to MI1 CD and DOTT.
2022-08-06 18:46:48 +02:00