Commit Graph

82487 Commits

Author SHA1 Message Date
Colin Snover
fa52df018e SDL: Fix DoubleBufferSDLMixerManager doubling audio latency
If it turns out that everything that had previously been fixed by
this manager is broken by this change, everything that had been
fixed probably could have been fixed by just increasing the audio
buffer size in SdlMixerManager. :\
2017-09-12 11:35:50 -05:00
Colin Snover
4a75fbab1b SDL: Reduce audio playback latency
The previous default buffer size of 4096 samples for 44kHz mixer
would add up to 93ms of audio latency, which is fine for early
adventure games, but this is significantly more latency than is
acceptable for games with full motion video. For these games,
the latency needs to be kept within roughly +15ms and -45ms of
video frame presentation to avoid lip sync problems. With this
change, the default audio buffer size is calculated to be 1024
samples at 44kHz (which happens to match what DOSBox uses).

There is a possibility that the reduced latency may cause issues
that did not previously exist with things like the MT-32 emulator,
where a larger buffer size allowed for a larger window where
high-complexity synthesis that could not be generated in realtime
could be balanced out by low-complexity synthesis that could be
generated faster than realtime. In this case, rather than
increasing the system mixer buffer size again, please move the
MT-32 emulator into its own thread and give it its own larger ring
buffer into which it can generate more sample data in advance,
independently from the rest of the audio system.

For other systems where this buffer size reduction might cause a
problem with audio drop-outs, a new audio_buffer_size
configuration option has been added to allow users to tweak the
audio buffer size to match their machine's ability to generate
audio samples.

Fixes Trac#10033. Also improves playback of samples in SCI that
were programmed to restart across several consecutive frames,
relying on lower audio latency in the original engine for this to
not sound bad, like the hopping sound at the start of chapter 1
of KQ7, and the sound of turning on the power in the digger train
in the Lighthouse volcano.
2017-09-12 11:30:01 -05:00
Colin Snover
eb4e9fe1d4 GUI: Remove mostly-broken audio output sample rate control
Removing this GUI control was suggested as far back as 2011 at
<http://lists.scummvm.org/pipermail/scummvm-devel/2011-November/010416.html>.
There were no objections, but it was never removed. When working
on audio latency bugs, I independently rediscovered that the GUI
option was broken: the per-game options would *never* work, and the
option would not take effect until ScummVM was restarted because
there is no API for interacting with the backend audio mixer. So
now, it is finally gone.

Primarily for the sake of future troubleshooting, configurability
of the audio sample frequency within SdlMixerManager is maintained
for the moment, but now users will need to edit their ScummVM
configuration file manually to change it.
2017-09-12 11:27:45 -05:00
Colin Snover
c2a4784706 SDL: Fix compilation on PSP2 2017-09-12 11:27:45 -05:00
Thierry Crozat
fac7797e3e I18N: Update translations templates 2017-09-12 18:05:23 +02:00
Colin Snover
533bb5b257 SCI32: Improve chance of rendering non-8bpp AVIs
OpenGL backends don't always support the pixel format that is
returned by the Indeo 3 decoder when playing the GK2A.AVI from the
GK2 demo. If this happens, use the backend's preferred pixel format
and convert in software.

If a backend doesn't support any 16-bit or 32-bit format, the
playback code will error out. This is probably fine, since there
are not really any of those any more.

Fixes Trac#9994.
2017-09-12 11:03:15 -05:00
Colin Snover
2228ae255c SDL: List supported 32bpp pixel formats when using SDL2
_hwscreen is always initialized to 16bpp so the supported 32bpp
pixel formats would never be put into the list of supported pixel
formats, making it useless for engines to query for usable 32bpp
pixel formats.

This patch changes things so that the native desktop pixel format
is at the top of the supported formats list, and all pixel formats
<= the default desktop pixel format will now show up in the list
of supported formats. ("Supported" is somewhat of a misnomer here
since there is no hardware querying beyond checking the default
desktop pixel format. SDL generally accepts a wide variety of pixel
formats and tries to convert them to whatever the hardware
supports.)
2017-09-12 10:12:53 -05:00
Simei Yin
e1c33a6b97 SLUDGE: Use Mod/Xm/S3m decoder in Sludge 2017-09-12 11:27:21 +02:00
Colin Snover
df85727186 SCI32: Fix wrong open folder/doc icons in Phant2 computer on first render
This fixes flickering icons during the word hallucinations.
2017-09-12 00:45:19 -05:00
Colin Snover
a7ede0ca39 SCI32: Fix bad positioning of text in Phant2 computer on first render
This fixes the glitchy positioning during the word hallucinations.

Fixes Trac#10036.
2017-09-12 00:45:18 -05:00
Colin Snover
f9c43144a7 SCI32: Fix janky document scrolling in Phant2 computer interface 2017-09-12 00:45:18 -05:00
Colin Snover
eb284c45ed SCI32: Replace spin loop with kWait in Phant2 alien password screen 2017-09-12 00:45:18 -05:00
Paul Gilbert
fc0396f80f TITANIC: Fix freeze panning away from Parrot cage 2017-09-11 21:28:45 -04:00
Paul Gilbert
c8c83145a8 TITANIC: The hasAudioTiming code was just an isActive flag 2017-09-11 19:35:21 -04:00
Thierry Crozat
5d419c2b58 AUDIO: Rename two functions in ModuleModXmS3m
This is an attempt to fix a compilation error on some platforms.
The error message seems to indicate that log2 might be a define
on thos platforms.

Note that the log2 implementation in ModuleModXmS3m is not the binary
logarithm, and we cannot use Common::intLog2.
2017-09-11 21:38:58 +01:00
Lothar Serra Mari
a2bafbbe76 I18N: Update translation (German)
Currently translated at 100.0% (967 of 967 strings)
2017-09-11 20:50:44 +02:00
wreednumero2
8c407b5c70 I18N: Update translation (German)
Currently translated at 99.7% (965 of 967 strings)
2017-09-11 20:50:16 +02:00
Lothar Serra Mari
60f7f8df78 I18N: Update translation (German)
Currently translated at 99.7% (965 of 967 strings)
2017-09-11 20:49:57 +02:00
Ben Castricum
042776cade I18N: Update translation (Dutch)
Currently translated at 100.0% (967 of 967 strings)
2017-09-11 08:41:47 +02:00
Colin Snover
58105982ad AGOS: Fix value truncation in AGOSEngine::animateSprites
In commit f0581bab4a the index value
for the array was changed from a constant to a variable, but uint8
is too small to contain 293, so this value was ending up as 37.
2017-09-11 08:14:55 +02:00
Colin Snover
cc12c878b7 BBVS: Fix UB shifting negative signed integers
These shifted values are replaced with their literal equivalents
as would be calculated on an x86.
2017-09-11 08:13:58 +02:00
Cameron Cawley
e9aa47f55c GRAPHICS: Compare all fields in a PixelFormat individually instead of using memcmp. 2017-09-11 08:13:09 +02:00
Simei Yin
6558578f54 AUDIO: Import micromod code, xm/s3m/mod decoder 2017-09-11 08:10:09 +02:00
Torbjörn Andersson
59f8e62adf JANITORIAL: Silence GCC 7 warnings
These fall throughs have to be deliberate, or they wouldn't have to
check if mode equals 2 in the mode == 2 cases.
2017-09-11 06:48:34 +02:00
Colin Snover
b8f89a772e MACOS: Fix builds on case-sensitive filesystems 2017-09-10 23:30:25 -05:00
Colin Snover
96d87a821f GUI: Fix non-macOS/iOS builds 2017-09-10 22:35:02 -05:00
Thierry Crozat
1c7ba60925 I18N: Update translations templates 2017-09-11 05:19:43 +02:00
Colin Snover
4706a8486e GRAPHICS: Remove dead code in BDF loadCharacter code 2017-09-10 22:17:17 -05:00
Colin Snover
200c8c442b SCI: Remove dead code 2017-09-10 22:17:17 -05:00
Colin Snover
6e2f18c498 MACOS: Fix warnings about undeclared selectors
When -Wundeclared-selector is enabled (recommended by Apple), the
calls to the setBadgeLabel selector in MacOSXTaskbarManager are
warned on because NSDockTile declarations are not included because
they do not exist in macOS 10.4 and earlier. While I don't know
that we are even supporting such old macOS versions these days, it
is simple enough to fix this problem when compiling to modern
macOS versions by conditionally including the necessary header.
2017-09-10 22:17:16 -05:00
Colin Snover
56810b5598 MACOS: Fix deprecation warnings in macOS 10.12 2017-09-10 22:17:16 -05:00
Colin Snover
b91a48f279 CREATE_PROJECT: Fix typo in unused macro 2017-09-10 22:17:16 -05:00
Colin Snover
16b76d22a1 CREATE_PROJECT: Add LastUpgradeCheck to generated project file
This prevents the recommended updates warning appearing when
opening the project in Xcode for the first time.
2017-09-10 22:17:15 -05:00
Colin Snover
2191533d4f CREATE_PROJECT: Update Xcode generator to use most Xcode-recommended warnings 2017-09-10 22:17:15 -05:00
Colin Snover
d282e5c3f3 CREATE_PROJECT: Increment default iOS build target in Xcode generator
Xcode 8/macOS 10.12 minimum target for iOS is now iOS 8.
2017-09-10 22:17:14 -05:00
Colin Snover
dbcde0c414 CREATE_PROJECT: Ignore undefined-var-template warnings by default
Starting in Xcode 8, clang reports warnings about singleton
instantiation which are noisy, so suppress these warnings for the
moment. An attempt to fix this properly was added in
eefa72afa1 but it was backed out in
940b2a20f1.

See https://github.com/scummvm/scummvm/pull/967 and
https://github.com/scummvm/scummvm/pull/994.
2017-09-10 22:17:14 -05:00
Colin Snover
3c5440add7 CREATE_PROJECT: Move browser_osx.mm hack to Xcode generator
c19c10d548 fixed the bad parsing of
module.mk which meant the Xcode generator broke. For the moment,
just move the hack for browser_osx.mm into the generator, until
there is a more elegant solution to this problem (if ever).
2017-09-10 22:17:14 -05:00
Colin Snover
9db0c9c607 CREATE_PROJECT: Allow FluidSynth on macOS
FluidSynth does build and run successfully, but it is necessary
to get the correct static libraries. It can be manually built
against dylib, if desired, by manually adding the fluidsynth.dylib
to the Frameworks. Since this will result in a runtime dependency,
this is not set up by default.
2017-09-10 22:17:13 -05:00
Colin Snover
0185c6cffd CREATE_PROJECT: Fix Xcode builder library includes
Libraries were being included unconditionally regardless of the
arguments passed to create_project, and in the case of macOS were
being added using manual linker flags and other such hacks instead
of using the Frameworks list.
2017-09-10 22:17:13 -05:00
Colin Snover
2f32eeab9d CREATE_PROJECT: Fix typo in Xcode generator interface 2017-09-10 22:17:12 -05:00
Thierry Crozat
400ff0459c I18N: Regenerate translations data file 2017-09-11 05:05:08 +02:00
Paul Gilbert
25ae67b870 TITANIC: Created custom stream reader to fix bad y222.avi header 2017-09-10 19:32:26 -04:00
Paul Gilbert
66150ee064 TITANIC: Remove redundant flag clearing in star control 2017-09-10 16:52:13 -04:00
Peter Kohaut
f79d8cc1fe BLADERUNNER: Added music support & added Maggie
added async walking
named some of the game flags & variables
renamed aesc to screen effects
2017-09-10 20:55:30 +02:00
Colin Snover
e0aa906804 SCI32: Fix bad audio looping
Fixes Trac#10182.
2017-09-10 02:08:22 -05:00
Colin Snover
dbf2f0c266 AUDIO: Fix compilation on AmigaOS 4 2017-09-10 02:08:21 -05:00
Thierry Crozat
6df5e4c372 I18N: Update translations templates 2017-09-10 06:38:23 +02:00
Colin Snover
10db6e9a44 AUDIO: Mark SCI engine as using ADPCM 2017-09-09 23:29:58 -05:00
Colin Snover
41506201b9 AUDIO: Fix incorrect reading of DK3 ADPCM audio data
Previously, _topNibble was not reset at the beginning of a new
audio block, and the alignment byte at the end of odd blocks was
being read as audio data, which caused audible clicks and
out-of-bounds sample generation. There may have also been read
errors related to the use of continue/break keywords inside of a
macro wrapped with do-while(0).

The introduction of partial block reads in this code when it was
converted from ffmpeg to a ReadStream interface was also confusing
and somewhat inefficient (calling SeekableReadStream::pos
frequently), so this code has been refactored for clarity and to
improve efficiency by reducing the number of virtual calls. Error
detection has also been improved somewhat by ensuring that there
are enough bytes to read a block header, and that the step indexes
in the header are within the valid range.
2017-09-09 23:29:58 -05:00
Colin Snover
393c0d1f62 SCI32: Fix whitespace errors 2017-09-09 23:29:57 -05:00