Commit Graph
34 Commits
Author SHA1 Message Date
AndywinXp 8d6737e16f SCUMM: DIMUSE: Increase buffer size for low latency 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 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 92efa503fb SCUMM: DIMUSE: Fix theoretical possibility of division by zero 2023-01-02 23:05:50 +01:00
AndywinXp c3256a614a SCUMM: DIMUSE: Make engine sample rate and feed size parametric 2023-01-02 22:55:26 +01:00
AndywinXp b4c52cac22 SCUMM: DIMUSE: Implement adaptive buffer underrun correction
Thanks to lephilousophe for the help on this one :-)
2023-01-02 17:50:00 +01:00
AndywinXp 3c81f19840 SCUMM: DiMUSE: Prevent negative buffer count in roundRobinSetBufferCount() 2022-12-04 23:01:06 +01: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
AndywinXp 57a4f165d5 SCUMM: DIMUSE: Add defines for magic numbers and command IDs 2022-10-01 17:47:17 +02:00
AndywinXp 457bcb67db SCUMM: GUI: Implement the majority of the v7 Main Menu 2022-09-08 19:10:42 +02:00
Donovan Watteau 4ec06a2bf6 SCUMM: Unify WORKAROUND usage and complete/tweak some of them 2022-08-07 17:24:27 +02:00
AndywinXp 61535ee8c9 SCUMM: DiMUSE: Increment upper and lower limit for roundRobinSetBufferCount() 2022-08-06 13:33:56 +02:00
AndywinXp 51d0b8ef06 SCUMM: COMI: Implement iMUSE buffer toggle GUI banner 2022-08-06 13:33:56 +02:00
AndywinXp 1e9d51c28a SCUMM: COMI: Implement the original main menu
Every functionality has been implemented (audio options, text options, saving and loading).
The only thing currently missing from the menu is the thumbnail handling.
2022-08-06 13:33:56 +02:00
Andrea Boscarino 71816ec701 SCUMM: DiMUSE: Fix startup volume setup for SMUSH 2022-04-16 23:25:31 +02:00
Andrea Boscarino 024aa1f22b SCUMM: SMUSH: Implement audio sub-engine 2022-04-16 23:25:31 +02:00
Andrea Boscarino 2bc8dcc813 SCUMM: DiMUSE: Remove unused code 2022-04-06 21:31:05 +02:00
Andrea Boscarino fbc989d60f SCUMM: DIG/DiMUSE: Implement mouth sync times retrieval and handling 2022-04-06 21:31:05 +02:00
athrxx d94618f3d5 SCUMM: (DIMUSE) - fix loading of old savegames 2022-03-28 18:29:15 +02:00
Andrea Boscarino c03787f8bb SCUMM: DiMUSE: Fix possible buffer underruns
Big thanks to athrxx for reporting this issue; the previous calculation for obtaining an optimal number for _maxQueuedStreams did not account for the differences between the sample rate targeted by the audio backend and the one targeted by DiMUSE (which is 22050Hz). 

This new formula has been tested for optimal latency and absence of underruns for all supported games and all known combinations of sample rates and output buffer sizes:
[22050, 44100, 48000, 96000], [1024, 2048, 4096, 8192].
2022-03-06 21:58:40 +01:00
Andrea Boscarino a083cf5abc SCUMM: DiMUSE: Create separate InternalMixer flow for FT engine 2022-03-06 11:11:11 +01:00
Andrea Boscarino 6eaeee5e2d SCUMM: DiMUSE: Remove obsolete TODO comment 2022-01-06 22:57:10 +01:00
Andrea Boscarino c20a92b3ac SCUMM: Remove DiMUSE specific code from main engine 2021-12-29 14:26:53 +01:00
Andrea Boscarino c3aa652998 SCUMM: DiMUSE: Add debugger/audio player 2021-12-29 14:26:53 +01:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Andrea Boscarino 1afde28a3d SCUMM: DiMUSE: Fix outdated comment 2021-12-22 12:27:23 +01:00
Andrea Boscarino c9e5ff7e9e SCUMM: DiMUSE: Fix bug #13080 2021-12-09 22:03:40 +01:00
Le Philousophe 6b21b09109 SCUMM: DiMUSE: Fix build for AmigaOS4 and NDS 2021-11-23 19:58:12 +01:00
Andrea Boscarino d1833afe12 SCUMM: DiMUSE: Clarify comment 2021-11-22 18:08:21 +01:00
Andrea Boscarino a1710c4533 SCUMM: DiMUSE: Properly implement audio handling when skipping SMUSH videos 2021-11-22 18:08:21 +01:00
Andrea Boscarino 1b4547dbd5 SCUMM: DiMUSE: Fix bug #13084 2021-11-22 18:08:21 +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