133136 Commits

Author SHA1 Message Date
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
Roland van Laar
be7e6731a9 BUILD: run clean-test on distclean
The expectation of distclean is that it cleans as much as possible.
Now the tests are also cleaned on distclean.
2022-10-06 17:52:47 +02:00
Roland van Laar
ea8b9b0d48 TESTS: add buildartifact to make clean-test
test/null_osystem.o wasn't cleaned up. The result was failing tests
when scummvm itself was build with changed configure settings.
2022-10-06 17:50:17 +02:00
Roland van Laar
70e715b6f8 TESTS: Fix compiler warnings integer comparisons
Use suffix `U` for integers when comparing results of `size`.
Use uints in the forloops.
2022-10-06 17:41:41 +02:00
Roland van Laar
07478b38be TESTS: plug memory leaks in span tests
Declare dataPtr as a byte pointer instead of a void pointer to
be able to delete it at the end of the test.
2022-10-06 16:12:27 +02:00
alxpnv
cd11578f2b ASYLUM: fix animation of floating bodies in Chapter 4
Bug no. 13558
2022-10-06 13:41:58 +03:00
alxpnv
c5044f433c ASYLUM: fix formatting 2022-10-06 13:41:58 +03:00
Walter Agazzi
e456740542 DIRECTOR: Add detection for a couple incomplete entries 2022-10-06 11:42:35 +02:00
Walter Agazzi
7f9c2885c8 DIRECTOR: Fix missing title for some detection entries 2022-10-06 11:42:35 +02:00
Scott Percival
94e482145b VIDEO: Fix infinite loop when loading greyscale QT videos 2022-10-06 00:05:17 +02:00
Scott Percival
0dce88baf3 DIRECTOR: Add CompuServe Demo to detection list 2022-10-06 00:05:17 +02:00
Scott Percival
2a261d0fba DIRECTOR: Allow for tempo changes when seeking to arbitrary frames
In Director, FPS entries in the tempo channel apply to all subsequent
frames. If we seek to an arbitrary frame, the correct tempo settings
should be applied.

Fixes the animation speeds of the cauldron and the walking teapot in
Chop Suey.
2022-10-06 00:05:17 +02:00
Scott Percival
b2d13c5ea1 DIRECTOR: Stop playing videos when sprite gets replaced
Fixes cupcake song not stopping in Chop Suey.
2022-10-06 00:05:17 +02:00
Scott Percival
e477106daa DIRECTOR: Update Channel::_movieTime in Score::updateWidgets
Previously this would be updated in
DigitalVideoCastMember::createWidget, which meant it was possible for a
movie to complete without updating _movieTime to the final end position.

Fixes the cupcakes from not stopping animating once the song is finished
in Chop Suey.
2022-10-06 00:05:17 +02:00
Scott Percival
802c583b10 DIRECTOR: Improve breakpoint debugger command 2022-10-06 00:05:17 +02:00
Scott Percival
32f87b27cb VIDEO: Fix VideoDecoder::needsUpdate to work for audio-only files
VideoDecoder::needsUpdate() only returns true if there are frames
remaining to be rendered. This won't work for video files that are
audio-only, so in the event of a such a file, fall back to checking
endOfVideo() which includes audio tracks.

Fixes audio-only DigitalVideoCastMembers in the Director engine.

Fixes playback of the cupcake song in Chop Suey.
2022-10-06 00:05:17 +02:00
Scott Percival
dcceb4c34b DIRECTOR: Add "disasm all" debugger command 2022-10-06 00:05:17 +02:00
Donovan Watteau
1cc9c40109 SCUMM: Add detection for the French 4-disk VGA floppy version of MI1
Unlike the 8-disk version, this one has proper MT-32 resources (see
commit 655afcdf55ec884fdc934313f087d83546177953 for more context).

Reported by a French player owning this (rare?) release.
2022-10-05 21:15:19 +02:00
Donovan Watteau
2d2a92ddcf NEWS: Mention more improvements for 2.6.1 2022-10-05 19:59:03 +02:00
Roland van Laar
e78a88e2fb TESTS: plug memory leaks
Use `clear` instead of `release` where possible.
Both clean up the span object. They differ in that `release` returns a pointer to
the internal data and `clear` destroys the internal data.
2022-10-05 18:11:10 +02:00
Stian Schultz
22fac5c4cc I18N: Update translation (Norwegian Bokmål)
Currently translated at 100.0% (1767 of 1767 strings)
2022-10-05 16:10:15 +00:00
eientei
31d7c3708b SCUMM: Add detection for Monkey Island (ES, EGA, 4 disk), Monkey Island (ES, VGA, 8 disk), Last Crusade (ES, v1.4), French fan translation of Last Crusade (VGA, atp-fr.com v0.9a)
SCUMM: Add sizes to multiple DOS entries
2022-10-05 12:58:21 +02:00
Walter Agazzi
3e76123d71 AGS: Add detection for latest Primordia update (GOG - Windows) 2022-10-05 12:00:16 +02:00
ScummVM-Translations
23b616dc13 I18N: Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: ScummVM/scummvm
Translate-URL: https://translations.scummvm.org/projects/scummvm/scummvm/
2022-10-05 05:06:59 +00:00
Torbjörn Andersson
45fdb1fea8 WINTERMUTE: Add another Alpha Polaris detection entry
The game starts, but does not appear playable. For one thing, no
character models are drawn.
2022-10-05 07:06:11 +02:00
ScummVM-Translations
93b8439b0e I18N: Update translations templates 2022-10-05 03:32:17 +00:00
Paul Gilbert
d21bc7df8b GLK: ALAN2: Add detection entry for Hollywood Murders
It's an unsupported earlier 2.6 game, but at least
this way it'll be recognised as such rather than
not being dtected at all.
2022-10-04 20:30:35 -07:00
AndywinXp
87676d1365 SCUMM: Limit screen update on cursor change to v7-8 2022-10-04 21:31:59 +02:00
Lothar Serra Mari
23069ff279 NEWS: Update NEWS file for upcoming 2.6.1 release 2022-10-04 20:55:01 +02:00
BLooperZ
b17b1d3250 MOHAWK: hide overlay when movie is skipped 2022-10-04 20:37:09 +03:00
Walter Agazzi
e9f995a959 SWORD: fix typo 2022-10-04 20:35:31 +03:00
Walter Agazzi
70264816fe SWORD: Update spanish demo strings using speech transcript 2022-10-04 20:35:31 +03:00
Walter Agazzi
e2575b86f6 SWORD: Add workaround for missing strings in Spanish demo 2022-10-04 20:35:31 +03: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
Andrea Boscarino
6ad5ed0b92 SCUMM: DiMUSE: Solve very rare deadlocks caused by two different mutex objects 2022-10-04 11:33:26 +02:00
SupSuper
ac771ac2de GUI: Fix engine icons only showing up in grid once 2022-10-04 01:37:28 +01:00
Walter Agazzi
cd29ebbda1 ICB: Add detection for Spanish Anniversary version 2022-10-04 00:41:02 +02:00
Stian Schultz
e357e335a3 I18N: Update translation (Norwegian Bokmål)
Currently translated at 100.0% (1767 of 1767 strings)
2022-10-03 20:37:52 +00:00
LINUX-SAUNA
5f33d59df8 I18N: Update translation (Finnish)
Currently translated at 100.0% (1767 of 1767 strings)
2022-10-03 20:37:51 +00:00
Thierry Crozat
23f15cfb2d AGS: Fix detection for The Excavation of Hob's Barrow
This game needs to use the Clifftop Games variant of the AGSSpriteFont
plugin. Also it uses an alternate name for the plugin. That name
was already supported when loading builtin plugins, but not for the
Clifftop Games variant.

This commit also adds detection for the Mac version from Steam.
2022-10-03 18:44:22 +01:00
Thierry Crozat
88c56f912d AGS: Fix access to uninitialized memory in base SpriteFont plugin
When using the base SpriteFont plugin and not the ClifftopGames variant,
the renderers pointer were not initialized in the constructor, which
could lead to them not being instantiated, and then causing a crash.
2022-10-03 18:44:22 +01:00
Donovan Watteau
a82501b638 AGS: Fix ReadEncInt32() on big-endian systems
Fixes kq1agdi crashing on big-endian systems, since it tried to allocate
a gigantic amount of memory from MFLUtil::ReadV21() because of the
misread values.

From upstream 5e29a339fc83bf5c06a3a9a3b1c65a2fc4b4e72c
Also includes upstream 427752da015fd93549deef1a31d5e533e5c9319e
2022-10-03 18:42:58 +01:00
Roland van Laar
73cb9378ad DIRECTOR: Fix dereference after null check
Add check on currentSprite because if statement before does a
check if currentSprite exists, meaning currentSprite can be a nullptr.

Fixes COVERITY: 1498653
2022-10-03 15:45:20 +02:00
Walter Agazzi
8def4f7245 MADS: Mark Rex Nebular Demo as unstable 2022-10-03 15:10:57 +02:00
Misty De Meo
a7f29a1c6e JANITORIAL: fix whitespace in CDROM XObj 2022-10-02 22:29:21 +02:00
Misty De Meo
f8a791bf9b DIRECTOR: move CDDA status into CDROM XObj 2022-10-02 22:29:21 +02:00
ScummVM-Translations
069d57da85 I18N: Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: ScummVM/scummvm
Translate-URL: https://translations.scummvm.org/projects/scummvm/scummvm/
2022-10-02 19:45:48 +00:00
Walter Agazzi
1a9c8fc501 WINTERMUTE: Add detection for Carol Reed 5 german 2022-10-02 21:44:15 +02:00