Commit Graph
195 Commits
Author SHA1 Message Date
Christian Lindemann 7004f65557 GROOVIE: Minor changes in debug messages / hotspot debugging 2021-09-15 19:13:57 +03:00
Christian Lindemann 1a006ea3e3 GROOVIE: Add support for TLC 2021-09-15 19:13:57 +03:00
Christian Lindemann 1e2c395d12 GROOVIE: Add printfunction opcode for V2 engine 2021-09-15 19:13:57 +03:00
Christian Lindemann b5e62ffdaf GROOVIE: Update game detection. Add TLC-DE and engine can differ between each game 2021-09-15 19:13:57 +03:00
Filippos Karapetis f40934e496 GROOVIE: Do not wait for MIDI initialization with enhanced music tracks
This prevents the game from getting stuck in the MIDI initialization
screen if a MIDI/MT-32 driver is selected and enhanced music tracks are
present. In this case, MusicPlayerIOS is used, which plays the digital
music tracks, and does not perform any MIDI initialization
2021-09-13 01:09:00 +03:00
sluicebox 93eeffc84d JANITORIAL: Update old bug tracker numbers 2021-03-03 02:15:05 +02:00
aryanrawlani28 a9bfe35216 GUI: U32: More issue fixes and general improvements
- Use the fake constructor for message dialog less often
- solve errors regarding comparision between string and u32string in midi
- solve errors in testbed/speech related to ttsMan->say
- fix unsigned comparision warning in tab.cpp
- fix issue with static strings and translations in sdl-graphics
2020-08-30 14:43:41 +02:00
NMIError cdd2d58361 GROOVIE: Fix starting background music
The check to see if background music should be started was implemented as part
of the input processing. As a result, background music would not start if the
game was not getting any input. F.e. on the main menu after starting the game,
if you let the music play until it finishes without doing anything, the game
will go silent. Only after moving the mouse will the background music track
start. The original interpreter starts the background music without needing
user input.

I've fixed this by moving the check to start background music to the timer
loop of the MusicPlayer. I've added a check to prevent background music from
starting while the game is not accepting input.
2020-08-21 00:03:09 +02:00
NMIError 4ed78ef114 GROOVIE: Fix music when loading game
When loading a savegame, the current background music would play for a few
seconds before the game would set the music for the room that just loaded.
This change stops the music when loading a savegame to prevent this.
2020-08-21 00:03:09 +02:00
NMIError dcdcca3d31 GROOVIE: Initialize MIDI on direct game load
The 7th Guest has MIDI initialization files for GM and the MT-32 that need to
run for these devices to sound correctly. When loading a game from the ScummVM
main menu, MIDI initialization was not performed.

This change adds this. It runs a slightly changed copy of the game's MIDI init
script when loading a game using the ScummVM menus. It also tracks if MIDI init
has been performed, so it doesn't run a second time when loading a game.

I don't know if the script works properly for the Mac and iOS versions of the
game (or if it is even needed), so I've only enabled it for the DOS versions of
the game for now.
2020-07-25 00:35:47 +02:00
NMIError b38f1f00ac MIDI/GROOVIE: Fix MT-32 XMIDI timbre init delays
XMIDI data for the MT-32 can contain a timbre chunk which contains the custom
timbre numbers used for a track. Before starting playback of the track, the
timbres must be loaded into the MT-32 using SysEx messages. Each SysEx message
needs a delay before sending the next message to give the MT-32 enough time to
process it.

The delays between the messages were generated using the OSystem::delayMillis
function. This throws off the timing of the MidiParser, which causes MIDI
messages to "pile up", in this case at the start of the track. This change adds
a queue to the Miles MIDI driver, which can store the SysEx messages that must
be executed. The MidiParser suspends playback until the driver has sent all
messages in the queue.

This fixes the start of tracks in The 7th Guest, which had incorrect timing.

Because of the new SysEx queue, MT-32 initialization of The 7th Guest takes a
bit longer than it did before. The game plays an animation of a fixed length
and aborts the initialization if it is not done by the end of the animation.
This problem was already fixed for the GM initialization, so I've applied the
same fix for the MT-32.
2020-07-25 00:35:47 +02:00
NMIError 52d5d60907 GROOVIE: Fix 7th Guest GM initialization
The 7th Guest initializes GM devices during the "loading GM drivers"
screen, which is a normal video that plays "audio" that consists of
initialization messages (mostly Roland GS sysexes). The original
interpreter plays this video twice, which is enough time to play the
entire INI_SC.XMI initialization file. ScummVM apparently plays video
a bit faster, and there is not enough time to play the entire init
file. Because of this GM initialization is incomplete.

I've fixed this by making the init video loop until the audio has
finished playing.

Note: I have only tested this with the original DOS version of the
game. I don't know if the file reference I've used to identify the
GM init video is the same on other platforms. If not, this change
might not work and/or have unintended results.
2020-03-16 01:40:10 +02:00
D G Turner 9ac4df52a1 GROOVIE: Fix Missing Default Switch Cases
These are flagged by GCC if -Wswitch-default is enabled.
2019-10-19 19:53:15 +01:00
D G Turner f66ec9fe21 GROOVIE: Fix Spaces in Savegame Naming.
This patch was originally from bug Trac #6276 and was submitted by
bluegr.
2018-11-05 04:28:51 +00:00
Scott Thomas 75c6f2fd60 GROOVIE: Fix GMM loads, block saves in a puzzle
Loading and returning from subscripts alters the _variables
used, thus are not guaranteed to create a valid save state.
Loading a save should be valid at any time, as long as the
active script being run is restored to the base game script.
2018-11-03 15:15:32 +00:00
David Fioramonti de1a35a9d9 GROOVIE: Allow saving via GMM and increase save slots to 25
If the user enters in an invalid description for the save then it will be
simplified by the saved name cache process in Script::savegame.

I checked this with t7g, but not with the 11th guest or any other Groovie game.

The original in-game loading/saving can still only access the first 10 save
slots (0-9).

Its possible to saving via the GMM when the game is interactive.

Loading a game saved via the gui using the original in-game load menu
works fine.

Saving via the GMM with timestamp works, but only only saves the characters
up to the first non-alpha non-letter characer.
2018-08-03 14:53:43 +02:00
Eugene Sandulenko dead4aa014 JANITORIAL: Remove trailing spaces 2016-10-09 14:59:58 +02:00
Ori Avtalion 3564032330 JANITORIAL: Reduce audio header dependencies 2016-04-14 16:10:21 +03:00
Filippos Karapetis 35577ab71e GROOVIE: Initial implementation of direct game load for the 11th Hour 2014-11-03 11:40:38 +02:00
Filippos Karapetis 5dc03107fd GROOVIE: Add a stub for opcode 42 in V2 games
This was o_cellmove in T7G (the Microscope puzzle)
2014-11-03 11:40:38 +02:00
Filippos Karapetis a82740516c GROOVIE: Implement o2_copyscreentobg and o2_copybgtoscreen 2014-11-03 11:40:38 +02:00
Filippos Karapetis 9d6437c01e GROOVIE: Add initial full screen functionality for V2 games 2014-11-03 11:40:37 +02:00
Filippos Karapetis f733498388 GROOVIE: Finish implementation of o_hotspot_outrect
This is needed by the main menu in the 11th Hour
2014-11-03 11:40:36 +02:00
D G Turner 025556d9a5 GROOVIE: Use debugC() and debugCN() functions directly in script debug.
This removes the debugScript() wrapper, which can now be implemented
directly using the relevant debug function. This avoids the variadic
debug functions being wrapped in a second layer of variadic function
which is probably causing a significant overhead.
2014-06-05 03:32:55 +01:00
D G Turner d8751516cc GROOVIE: Remove engine-specific "all" debugflag. Minor naming cleanup.
This is now uneeded as the GUI debugger superclass implements the same
functionality and this removes a bunch of complexity from the Groovie
engine debug calls. Also, removed groovie prefix from the debug flag
naming as unecessary as these are within the Groovie namespace.
2014-06-05 03:01:12 +01:00
D G Turner 86b3a075d4 GROOVIE: Add sanity checks and range limits to copyRect opcode param.
This prevents segfault crashes in "The 11th Hour" when you open the
Gamebook palmtop from the top of the screen. The opcode needs some
work on the changes from 7th Guest, but this will prevent crashes
while this is being worked on.
2014-06-02 22:09:53 +01:00
Johannes Schickel 8f55aed475 GROOVIE: Make GPL headers consistent in themselves. 2014-02-18 02:39:35 +01:00
Johannes Schickel 254dea1a35 GROOVIE: Take advantage of Surface::getPixels. 2013-08-03 04:02:51 +02:00
Johannes Schickel 2afc0a5fbc GROOVIE: Get rid of casts on OSystem::copyRectToScreen calls. 2012-06-16 02:38:59 +02:00
Tarek Soliman a4798602d7 JANITORIAL: Fix missing whitespace in pointer cast
find -name '*.h' -or -name '*.cpp' | xargs sed -r -i 's@\(([A-Za-z0-9]+)\*\)@(\1 *)@g'

This seems to have caught some params as well which is not undesirable IMO.
It also caught some strings containing this which is undesirable so I
excluded them manually. (engines/sci/engine/kernel_tables.h)
2012-02-15 10:07:10 -06:00
Scott Thomas c23f8f856c GROOVIE: Prefer 'mask' animations to run at regular speed.
Not all 'mask' animations have sound, so need to mark preference for
regular speed for both 'mask' and 'teeth' animations.
2011-11-29 22:31:26 +10:30
Eugene Sandulenko 0dafa7f80f ALL: Reduce audio/ header dependency 2011-08-06 11:30:42 +01:00
Johannes Schickel 09501be85b ENGINES: Clean up SaveStateDescriptor.
Now SaveStateDescriptor no longer subclasses HashMap. Instead all possible
saved meta data is included directly into SaveStateDescriptor.

This is slightly less flexible, but we never needed that flexibility so far.
On the other hand it should reduce the memory usage. At least on my system
(Linux/amd64) the old SaveStateDescriptor had a size of 928 and the new
SaveStateDescriptor has a size of 200.
2011-07-02 21:07:55 +02:00
Thierry Crozat 06bbb57ad7 I18N: Make many more GUI MessageDialog strings translatable 2011-06-13 22:19:18 +01:00
Matthew Hoops aa49b38c5a Merge remote branch 'upstream/master' into t7g-ios
Conflicts:
	engines/groovie/script.cpp
2011-05-31 14:16:29 -04:00
Max Horn 4cbe4ede66 COMMON: Registers RandomSources in constructor with the event recorder
This also removes the dependency of engines on the event recorder header
and API, and will make it easier to RandomSources that are not properly
registered.
2011-05-17 12:17:26 +02:00
strangerke 69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Matthew Hoops a1d41da096 Merge remote branch 'upstream/master' into t7g-ios
Conflicts:
	audio/decoders/qdm2.h
	common/util.cpp
	engines/groovie/music.cpp
	engines/groovie/resource.h
	video/qt_decoder.cpp
	video/qt_decoder.h
2011-05-11 00:30:28 -04:00
Ori Avtalion 9414d7a6e2 JANITORIAL: Reduce header dependencies in shared code
Some backends may break as I only compiled SDL
2011-04-28 15:08:58 +03:00
spookypeanut db24f1e068 GROOVIE: fix for bug #3093310
Instead of crashing if the save game isn't writable, popup a
gui message and then skip
2011-04-25 08:51:21 +01:00
Scott Thomas daede376e1 GROOVIE: Tweak supernatural teeth detection (for VDX playback speed) 2011-04-20 23:40:02 +09:30
Scott Thomas 8e9dbe5c3d GROOVIE: Use uint32 when searching for a video id by name
This brings ResMan::getRef into line with the rest of the engine.
2011-04-15 21:46:06 +09:30
Max Horn 2e095e25f2 ALL: centre -> center 2011-04-14 14:34:28 +02:00
Scott Thomas 7c39b844b8 GROOVIE: Add additional play-speed modes to T7G.
These two speed modes enable faster movement throughout the mansion.
iOS mode matches the behavior of the official iOS release while
tweaked mode additionally uses original framerate for 'teeth'
animations.
2011-04-07 23:38:35 +09:30
Max Horn e27b05ef35 COMMON: Rename String::printf() to String::format()
This is a first step towards getting rid of all uses of regular printf,
fprintf, vprintf, vfprintf, puts, fputs, etc. in our codebase.

The name format() reflects the purpose of the function, and parallels
String.format() in Java, boost::format, and others.

svn-id: r54004
2010-11-01 16:02:28 +00:00
Florian Kagerer c35e350531 AUDIO: get rid of MDT_PREFER_MIDI since it should be sufficient to either select MDT_PREFER_MT32 or MDT_PREFER_GM
svn-id: r50288
2010-06-25 20:51:57 +00:00
Max Horn bbad3f333a Patch #1956501: "GUI/LAUNCHER: Midi device selection"
svn-id: r50128
2010-06-21 21:36:36 +00:00
Jordi Vilalta Prat 0e95d8a5fa Groovie:
- Rewritten T7G's font code to subclass Graphics::Font and make it cleaner.
- Use theme fonts for the Mac version of T7G (which used ugly system fonts
  originally). With this the Mac version should be completable.
- Cleanup include interdependencies.

svn-id: r49487
2010-06-07 17:14:42 +00:00
Matthew Hoops 1c0ffdc42d Add support for loading T7G Mac resources using the MacResManager.
svn-id: r49005
2010-05-11 15:41:31 +00:00
Max Horn 970745e60c Move DebugChannel related code to new header
svn-id: r48935
2010-05-04 11:59:22 +00:00