Commit Graph
9533 Commits
Author SHA1 Message Date
Miro Kropacek 82ae054d0a JANITORIAL: Partially revert commit 24dcacfe
That one was a bit heavy-handed: enums really shouldn't be passed as
const references.

Revert changes of:

- Common::CodePage
- Common::EventType
- Common::Keycode
- Common::Language
- Common::Platform

Additionally change ProjectDescription::setLanguage and
ProjectDescription::getLanguage in engines/mtropolis/runtime.{cpp,h} as
those used a Common::Language reference, too.
2025-04-20 21:33:15 +02:00
sluicebox 2db6289943 SCI: Add detection for BRAIN1 French fan translation
Trac #15875
2025-04-17 15:18:17 -07:00
sluicebox 0663e3564f SCI32: Remove QFG4 Thieves' Guild script patch
Fixes bug #15776
2025-04-14 13:15:09 -07:00
Miro Kropacek 24dcacfe69 JANITORIAL: Add missing references to const function parameters
Applied to all 'const Common::' and 'const Graphics::' instances.
2025-04-13 02:20:09 +03:00
Matthew Jimenez 77ee5a9007 IMAGE: Get palette class by reference on image decoders 2025-04-12 15:47:17 +03:00
sluicebox 48c95e3797 SCI32: Fix GK1 day 5 phone lockup in all game versions
Fixes bug #15857
2025-04-10 14:10:28 -07:00
sluicebox 91884f87eb SCI: Update validate_property comments and static usage
This change should not alter any game behavior, because no game scripts
are known to contain an instruction that alters an invalid property.

If such a script does exist, it is now handled correctly.
2025-04-10 14:08:41 -07:00
sluicebox 6fff0ec9b7 SCI: Merge and cleanup LZW decompressors 2025-04-10 08:11:09 +03:00
sluicebox bf243a1dbf COMMON: Fix DCL IMPLODE name 2025-04-09 23:49:19 +03:00
Donovan Watteau 04c829c610 SCI: I18N: Make it clear that 'Robot' is a video format name
(po/fr_FR.po got it slightly wrong)
2025-03-26 16:33:09 +01:00
Filippos Karapetis d74a9542fa SCI: Rename graphics/palette.* to graphics/palette16.*
This is to avoid file name inclusion clashes with graphics/palette.h
placed in common code, as uncovered by PR #6471

After discussing with @sluicebox, this is a simpler solution, where
only the offending palette.* files are renamed, without affecting
palette32.*, or introducing a sci prefix in files
2025-03-10 02:58:55 +02:00
Filippos Karapetis d9e5a9eaa1 Revert "SCI: Rename graphics/palette*.* to graphics/scipalette*.*"
This reverts commit d3230461ea.

A simpler follow-up commit will be done instead
2025-03-10 02:53:24 +02:00
Filippos Karapetis d3230461ea SCI: Rename graphics/palette*.* to graphics/scipalette*.*
This is to avoid file name inclusion clashes with graphics/palette.h
placed in common code, as uncovered by PR #6471
2025-03-09 16:31:35 +02:00
sluicebox 4fa1d891d8 SCI: Fix QFG1 trip wire lockup
Fixes bug #15736
2025-02-25 22:55:18 -08:00
Eugene Sandulenko 949027a01e ENGINES: [l-w]: Turn debug enums from bitfield into plain enums 2025-02-22 21:55:59 +01:00
sluicebox 04a538dbaf SCI: Fix LSL6 CD Interface Help cursor 2025-02-16 17:33:58 -07:00
sluicebox 8a5c1f20e0 SCI32: Fix LSL6HIRES Interface Help cursor
Fixes bug #14591
2025-02-16 12:55:37 -07:00
Le Philousophe d2ec868154 COMMON: Rename Conditional type
This now matches what STL does
Also add conditional_t type introduced in C++14.
2025-02-16 13:10:07 +01:00
Le Philousophe 95051b52d4 COMMON: Delete RemoveConst construct and move remove_*
We already have remove_const which has the same name as the STL
construct.
Move the STL compliant versions to type-traits.h to match STL more and
lighten util.h.
2025-02-16 13:10:07 +01:00
athrxx d6e9afa272 SCI: (ECOQUEST2/Windows) - enable 16 colors mode
(version found on Sierra's School House Math CD)
2025-02-10 18:51:02 +01:00
Coen Rampen debe30b25e AUDIO: Add full support for type 1 SMF
Type 1 SMF files consist of multiple tracks that are to be played simultaneously
in parallel. Support for this was previously implemented by merging these tracks
into one single track, then treating the result as a regular type 0 SMF file.

This commit adds full support for type 1 files. The parallel tracks are loaded
as subtracks of the parent track and played simultaneously in real time. This
allows for support of MIDI formats with parallel subtracks that do not use the
SMF format (Dark Seed floppy version) or that jump to offsets within each
parallel subtrack (Origin MIDI).
2025-02-07 14:10:52 +01:00
athrxx 11874c25a6 SCI: fix hercules mode glitch
(only applies to the "cropped image" config that we don't use anyway)
2025-02-01 13:49:32 +01:00
Cameron Cawley 4e95dc1480 ENGINES: Use LiberationSans for subtitles instead of FreeSans 2025-01-30 23:08:04 +02:00
Le Philousophe 378d903649 SCI: Don't use deprecated primitives 2025-01-24 12:11:17 +01:00
athrxx c51d719c11 SCI: (PEPPER/LB2/Windows) - add option for windows b/w cursors 2025-01-23 23:22:39 +01:00
athrxx adb3d5fc3a SCI: (PEPPER/LB2/Windows) - enable 16 colors mode
(also add Windows platform detection entries for both targets)
2025-01-23 23:22:33 +01:00
athrxx d620ad1299 SCI: (ECOQUEST/CD/Windows) - enable 16 colors mode support 2025-01-21 21:14:36 +01:00
sluicebox 995da76327 SCI: Fix LSL1 lockup when casino doors close
Fixes bug #15701
2025-01-19 21:28:30 -08:00
sluicebox 2a020f02c9 SCI: Fix KQ1 script lockup when drowning in cave
Fixes bug #15667
2025-01-07 04:51:29 -08:00
sluicebox 8144e3e69d SCI: Fix KQ4 Amiga sound signals
Fixes bug #15660

Limits the workaround for KQ4 broken signals to just the introduction.
We now know that it's the only sound that requires this, and that the
Amiga version added signal 127 to almost every sound.

See: 08b9c26752

Thanks to @athrxx for locating behavior in Amiga driver disassembly
Thanks to @prietveld for reporting
2025-01-05 23:08:59 -08:00
Orgad Shaneh cf8022dd27 JANITORIAL: Use default for span ctors 2025-01-03 09:30:16 +02:00
Orgad Shaneh c9c2ffd88b JANITORIAL: Require semicolon after COMMON_SPAN_TYPEDEFS macro use 2025-01-03 09:30:16 +02:00
athrxx 51d52b1680 SCI: (CGA/Hercules) - fix value clipping typo
(not relevant in practice, since we don't pass invalid arguments,
but it unnecessarily triggers the static analyzers)
2025-01-02 17:37:39 +01:00
sluicebox f61afc2b87 SCI: Fix SQ5 introduction speeds
Fixes comets not animating in the star field, bug #15622
Fixes speed and timing when exiting simulator, bug #15610

The introduction scenes are heavily dependent on both CPU speed and the
undefined lag that occurs in the original interpreter when animating
many actors at once. Now our speed throttler adjusts for this.

Thanks to @GermanTribun and @eriktorbjorn for reporting.

Big thanks to @PickledDog for testing and recording on a 386 and a 486.
2024-12-30 14:25:43 -08:00
sluicebox 5ab954eb34 SCI: Add KQ5, LSL5, SQ4 German EGA detection entries
Thanks to @ns394 for reporting
2024-12-28 09:51:33 -08:00
Eugene Sandulenko 879eba5c32 CONFIGURE: Replace mt32emu component with 'midi'
This component disables all MIDI-related things when unused,
including MT-32 emulator, Fluidsynth, TiMidity and Sonivox
2024-12-26 22:54:56 +01:00
Eugene Sandulenko 4a70b3507f CONFIGURE: Added fmtowns_pc98_audio as a component 2024-12-26 19:18:49 +01:00
athrxx 6e493b3ace SCI: (SCI01) - fix regression from PR 6328
(wrong version ranges, breaking transitions in SCI01 games)
2024-12-26 00:58:13 +01:00
Hubert Maier beda547e40 JANITORIAL: SCI: Fix typos 2024-12-25 18:00:32 +02:00
Eugene Sandulenko d780708c96 ENGINES: Add mt32emu as a feature and component
Add it to engines that have MIDI playback.

This essentially compiles the emulator only when an engine that
can potentially use it (e.g. MIDI) is enabled
2024-12-25 00:34:39 +01:00
Eugene Sandulenko fdecb6afca ENGINES: Add components to configure.engine's explanatory comment 2024-12-25 00:34:39 +01:00
athrxx 047f3fbfea SCI: cleanup and reorganize gfx drivers
gfxdrivers.cpp has become quite large. So I've now made a
separate file for each driver. I also separated the mode
validation and driver init code from the enigine and put
it into an extra file.
2024-12-24 13:15:37 +02:00
athrxx 3779f208ad SCI: (SQ4/CD/Windows) - make use of windows gfx drivers
SQ4/CD/Windows uses a simiar interpreter to the KQ6 one, minus the hires
graphics support. It has the same upscaling to 640x440 (or 320x220 for small
windows) and also support the same 16 colors mode.

Also removed some whitespace...

I have attached the SQ4 Windows variant to the gfx drivers I made for KQ6.
The 16 colors mode now requires the SCIWV.EXE executable, though. I had
hard coded the 512 bytes color pattern table for KQ6, since I thought it
would remain the only one necessary. But SQ4 has a different table. So I now
load them from the executable.

There might be more Windows games like that, I just currently don't know
about it (probably other SCI_VERSION_1_1 titles). Adding support would be
super easy. But it will not work right out of the box, since I explicitly check
the game IDs in customizeGuiOptions(), to avoid any nonsense to happen.
2024-12-21 18:33:13 +02:00
athrxx db2eceb4b9 SCI: fix bug caused by PR 6319
I made a mistake in that PR by assuming that the
handles for the hires graphics would be unique. So
when removing an object from the drawing chain
I really only removed the first object. But in reality
they often have the same handle and the original
interpreter continues to go over the loop until all
of the same handle have been removed.

Also, the original checks for already existent draw
objects with the same x/y-coordinates.
2024-12-18 19:48:45 +01:00
sluicebox a0e807eb3e SCI: Update KQ5 detection entry description 2024-12-17 17:13:00 -08:00
D G Turner 200b3004cf SCI: Fix GCC Compiler Shadowing Warnings 2024-12-18 01:04:20 +00:00
athrxx fdd1d1644c SCI: (KQ6WinCD) - fix hires drawing glitches
(items 1- 3 from bug ticket no. 15594)

I have added redrawing functionality for the hires GFX from the
original interpreter. I guess the original only needed that code
to handle WM_PAINT messages (= full window redraw). It also
does actually call a redraw in kDisposeWindow, the same way I
implemented it here, to refresh the inventory. But that is really
only needed for the speech+text mode which isn't supported
in the original. Maybe they ditched the mode only after they
had already implemented that, who knows...

I have also improved the workaround for the out-of-bounds
portraits to catch the case from the bug ticket.

I added a check in kDisposeWindow. It isn't strictly necessary,
but it it makes the code easier to understand.

I also renamed a var that I had previously renamed in a way
that makes no sense. I had renamed it from `upscaledHiresRect'
to 'portraitRect' since it is neither upscaled nor hires (it is just a
lowres rect). But it isn't a portrait rect either. The portraits get
drawn elsewhere. It's more likely to be a picture frame, a GUI
control or an inventory item.
2024-12-17 16:43:45 +02:00
sluicebox 80ee2b5102 SCI: Add KQ5, SQ4 360k disk detection entries
Thanks to @ns394 for reporting
2024-12-16 13:50:16 -08:00
athrxx cf1808fa7d SCI: fix kernel sub function mapping for certain builds
I had issues to run any SCI1 game with MSVC ASan builds.They
always failed to start up with a 'DoSoundMasterVolume: no
previous signatures' error. When I recently had that issue (which
I quickly discussed with digitall on discord) I got it fixed by
simply doing a full rebuild. But not this time. So I looked into it
deeper. And I find it quite surprising that it usually works in 99,9%
of all cases, since it does a comparison of two pointers that are
meant to point to different strings. In the kDoSound_subops
table, each entry gets its own string. My only explanation is that
these string repetitions get optimized away (but apparently not
or not always for the MSVC ASan build). I have replaced it with
a strcmp which seems to work fine.
2024-12-15 21:31:54 +02:00
Filippos Karapetis 0128e09639 SCI: Move the language detection fallback code into a separate function 2024-12-11 01:03:42 +02:00