1212 Commits

Author SHA1 Message Date
Coen Rampen
28dcd89782 SAGA: Add AdLib fallback for IHNM GOG
This commit adds a fallback for the GOG version of I Have No Mouth... This
version is missing the AdLib instrument definition files which are necessary
to use the Miles driver. If these files are missing, the regular AdLib driver
is used, which has built-in instrument definitions. A warning is shown so the
user knows the music is inaccurate without the missing files.
2021-10-13 22:21:16 +02:00
Coen Rampen
d6b0b78ae3 SAGA: Allow use of non-resource files for detection
The engine expected all files listed in the detection entries to be resource
files. This commit adds the option to use a non-resource file for detection.
This is needed to use a MID file to detect one of the Windows versions of
Inherit the Earth.
2021-10-05 20:37:05 +02:00
Coen Rampen
5006b1a50c SAGA: Add scanning music subdir during detection
Scanning the music subdirectory is now necessary for detecting the Windows
version of Inherit The Earth.
2021-10-04 20:35:22 +02:00
Coen Rampen
bc886473d9 SAGA: Add separate ItE Windows and Linux detection entries
This commit adds separate detection entries for the Windows and Linux versions
of Inherit The Earth.
There was a combined DOS/Windows/Linux entry with DOS as the platform. It is
not clear to me if this is a combined release or a single entry for three
separate releases, but the Windows and Linux release do exist as separate
releases. These would be detected with DOS as the platform, which would cause
the music not to work, because the DOS, Windows and Linux versions use
different music formats.
2021-10-03 21:05:53 +02:00
trembyle
65eb54b94c SAGA: Add detection for ITE Pocket PC demo
We can detect the modern 64-bit macOS and WinCE trial versions and
inform users that they're unsupported.

We should explore whether the limited trial functionality can be
implemented in ScummVM, as the Pocket PC version has some unique
features in both trial and unlocked states.
2021-09-19 14:52:46 +02:00
Coen Rampen
af75c433e0 SAGA: Fix MIDI driver type detection
This fixes a small omission in the MIDI driver type detection where it would
not look at the Native MT-32 setting to set MT-32 type on a MIDI device.
2021-08-06 22:37:46 +02:00
Coen Rampen
d73b19b9b3 AUDIO/MIDI: Fix Miles 3 AdLib pitch bend range
Miles 2 uses the default MT-32 pitch bend range of 12 semitones for its AdLib
driver. Miles 3 switched to the default GM pitch bend range of 2 semitones for
AdLib. ScummVM would always use the Miles 2 pitch bend range, which caused
pitch bend for Miles 3 games to sound wrong on AdLib.

To fix this, a property was added to the Miles AdLib driver to specify which
Miles version to emulate. Depending on the value of this option, the correct
default pitch bend range is set.
2021-08-06 21:01:08 +02:00
Max Horn
2f1f8f502e DEVTOOLS: move credits from devtools/credits.pl to engines
This employs a "lazy" approach: the "format" for the credits stays
exactly as it was, i.e., perl code. Of course one may want to change
this to another format (e.g. YAML, JSON, XML; or also shell script or
AWK, like `configure.engine` uses). But I deliberately kept it simple,
to get a minimal change that is easy to verify. Any further changes to
e.g. the format can be layered atop this.
2021-08-05 00:01:46 +02:00
Coen Rampen
832791407c SAGA: Fix music fade-outs
This fixes the fade-outs in IHNM, most notably at the end of the title screen
when using GM. Fades would take 30 seconds instead of the intended 3, and the
engine did not wait for the fade to finish but immediately played the next
track, which aborted the fade.
Note that the engine still does not always wait for a fade to finish when it is
triggered from a script. For example after AM's speech when dying in
Gorrister's chapter, in the original interpreter the music fades out while the
screen fades to black. In ScummVM, the screen does not fade out, so the music
fade is immediately aborted by playing the next track.
2021-07-29 20:24:43 +02:00
Coen Rampen
72c8622927 SAGA: Set Miles version on MIDI driver
This sets the version to emulate on the Miles MIDI driver so the MIDI devices
are initialized in the same way as the original interpreter.
2021-07-29 20:24:42 +02:00
Coen Rampen
e63b556015 SAGA: Add ITE MT-32 display message
This adds the message that the DOS version of Inherit The Earth displays on the
MT-32 when quitting the game.
2021-07-29 20:24:42 +02:00
Coen Rampen
12974b29e4 SAGA: Limit end of track resets to IHNM
This limits the pitch bend and sustain reset messages at the end of MIDI tracks
to I Have No Mouth, And I Must Scream. Inherit The Earth does not use sustain
and pitch bend is already reset at the start of each track. IHNM does use
sustain and does not reset pitch bend at the start of each track.
2021-07-29 20:24:42 +02:00
Coen Rampen
e6b30e4d57 SAGA: Fix MIDI parser memory leak
A new MidiParser object is created every time a MIDI track is played, but the
old parser would not be freed. Fixed this by first deleting the parser before
creating a new one.
2021-07-21 22:25:32 +02:00
Le Philousophe
5b9bcb4efb SAGA: Fix compilation on C++98 platforms 2021-07-16 12:53:53 +02:00
athrxx
dcf5a40f03 SAGA: fix encodings of save descriptions 2021-07-16 01:08:14 +02:00
Coen Rampen
5864bbc1d0 SAGA: Remove unused include from music 2021-07-10 20:33:35 +02:00
Cameron Cawley
d1488f46de SAGA: Fix compilation with C++98 compilers 2021-07-09 17:09:00 +01:00
Coen Rampen
de003b403d SAGA: Remove _musicVolume
Music volume is now handled by the Music class. Some calls to play included a
call to setVolume, but play already does this, so these calls were unnecessary.
2021-07-09 15:20:51 +02:00
Coen Rampen
f86604ce66 SAGA: Replace MusicPlayer with multisource drivers
This removes the MusicDriver class, which was a subclass of MidiPlayer. The
MidiPlayer relies on MidiChannel objects for some functionality and has
problems with the Miles AdLib driver and Munt.
The functionality of this class is now implemented in the Music class. Volume
management is handled by the multisource MIDI drivers themselves, and added to
the Music class for digital and PC98 music.
2021-07-09 15:20:50 +02:00
Eugene Sandulenko
3fc298cb18
SAGA: Remove remaining references to saga2 2021-07-06 00:37:07 +02:00
Paul Gilbert
baccbedf50 GRAPHICS: Changed surface classes sizes from uint16 to int16 2021-07-04 18:24:27 -07:00
Torbjörn Andersson
719d9017b7 SAGA + SAGA2: Fix build 2021-07-01 15:57:05 +02:00
Filippos Karapetis
9fc1a19d9f SAGA: Remove dead code
Some of this code is for SAGA2 games and some is just unused
2021-07-01 16:29:49 +03:00
Filippos Karapetis
e9c60720c0 SAGA: Remove SAGA2 references, code and stubs
All SAGA2 game development will continue in the new SAGA2 engine
2021-07-01 16:23:48 +03:00
Eugene Sandulenko
90a98160a9
SAGA: Disable dino and fta2 from the engine 2021-05-23 19:14:38 +02:00
Eugene Sandulenko
5b30618ee0
SAGA: Disable dino and fta2 from the engine 2021-05-23 16:04:53 +02:00
Eugene Sandulenko
e80f4678fb
SAGA: Disable saga2 subengine 2021-05-18 20:30:02 +02:00
Eugene Sandulenko
ef4f019125
SAGA: Added support for Russian ITE fan-translation 2021-05-10 01:26:21 +02:00
Orgad Shaneh
a05e54f00c JANITORIAL: Remove trailing whitespaces 2021-05-04 11:46:30 +03:00
Eugene Sandulenko
50b97c723a
SAGA: Added detection for unsupported Chinese IHNM. Bugreport #7894 2021-04-20 01:45:54 +02:00
Eugene Sandulenko
5e7fe2dc57
JANITORIAL: Replace spaces in indentation with tabs 2021-04-15 21:20:36 +02:00
a/
4c41632a01 SAGA: Fix a hitzone detection bug in ITE 2021-04-14 18:28:04 +02:00
sluicebox
93eeffc84d JANITORIAL: Update old bug tracker numbers 2021-03-03 02:15:05 +02:00
trembyle
c8e31ee64a SAGA: IHNM: Detect Korean variant
Flag as unsupported. Game does not start.
2020-12-07 01:35:53 +01:00
Cameron Cawley
4ced49acd4 ENGINES: Changed AdvancedMetaEngine::createInstance to return a Common::Error 2020-12-04 20:57:14 +00:00
Eugene Sandulenko
370c695308 SAGA: Always detect subengine games 2020-11-28 20:57:02 +01:00
Eugene Sandulenko
7d9b2c7d4e SAGA: Give clarification to the user why certain versions of ITE are not supported 2020-11-28 17:41:24 +01:00
athrxx
181368f1c5 SAGA: (ITE/PC98) - fix intro text frame width 2020-11-22 19:02:47 +01:00
athrxx
c9f41699aa SAGA: (ITE/PC98) - fine tune intro line breaks
I whish I knew whether I am implementing an original bug here or if this is intended behavior. But it does achieve text output faithful to the original. And it even does actually look better...
2020-11-22 19:02:47 +01:00
athrxx
3aded1d5ba SAGA: (ITE/PC98) - fix intro credits text positioning
This commit aims at getting the text almost pixel-exact like the original (from disasm and from comparison with an emulator).

It seems that the original messed up the upscaling (from 320x200 to 640x400). The whole method how they do it is weird. The text is rendered on a 320x200 pixel surface and this surface gets blitted in the center of a 640x400 pixel screen. Sometimes they
 seem to assume to draw onto 320x200, sometimes onto 640x400 (e. g. the line height for the paragraph headlines is assumed to be 11, although the font height is 18; and it will use height 18 for all the other text lines). Also, the orginal will use different printing methods for the headlines and for the text blocks below, which also doesn't help to get this right...

Now, some credits text lines are still off by 1 pixel vertically due to my method of upscaling (at the very last moment in drawDirtyRects()). I find this a much cleaner approach than the original method which is just hacking up the whole graphics code to use 640x400 coords (except for the places they forgot, see above). But this also means I can't hit the odd lines for text positioning, thus the one pixel off sometimes...
2020-11-22 19:02:46 +01:00
athrxx
eaeadbb622 SAGA: (ITE/PC98) - fix override warning 2020-11-22 19:02:46 +01:00
athrxx
4a6b2b1897 SAGA: minor fix to horizontal actor text positioning
(seems to be like a typo; fixed from disasm and screen comparison)
2020-11-22 19:02:45 +01:00
athrxx
5c8f6507ef SAGA: (ITE/PC98) - adapt actor speech positioning 2020-11-22 19:02:44 +01:00
athrxx
c22768e4fb SAGA: (ITE/PC98) - implement sjis font drawing 2020-11-22 19:02:44 +01:00
athrxx
c16f00f0f6 SAGA: (ITE/PC98) - make version specific interface changes
The font style is diiferent for various strings (e.g. verbs are drawn outlined instead of shaded, converse line are drawn normally instead of shaded).
Also implement sjis version of "bullet" for the converse strings.
2020-11-22 19:02:44 +01:00
athrxx
ffdd648c88 SAGA: (ITE/PC98) - fix option panel string 2020-11-22 19:02:44 +01:00
athrxx
8306fee7e3 SAGA: (ITE/PC98) - set GF_ITE_FLOPPY flag
This version behaves like a DOS floppy version in all the locations where we check for the  GF_ITE_FLOPPY flag
2020-11-22 19:02:44 +01:00
athrxx
7d75487d93 SAGA: (ITE/PC98) - implement original mouse cursor
Like the DOS version the PC-98 version has a hard-coded cursor. It has a size of 16x16 though, so it is suitable for a higher resolution.
2020-11-22 19:02:43 +01:00
athrxx
30704a98dd SAGA: (ITE/PC98) -adjustments to hardcoded intro data
(text colors and layout for the Japanese version)
2020-11-22 19:02:43 +01:00
athrxx
2db289f419 SAGA: (ITE/PC98) - implement dual layer rendering
- The Japanese font is drawn in double resolution on the top layer. The rest of the graphics gets drawn in standard VGA resolution on the bottom layer, then scaled 2x and merged with the top layer.
- Adjust mouse handling. In dual layer mode the event manager reports mouse coordinates in double resolution, so these have to be scaled down.
2020-11-22 19:02:43 +01:00