127 Commits

Author SHA1 Message Date
Scott Thomas
1dcf364a00
GROOVIE: Prevent direct save when there is no active game in progress
Prevents autosaves creating an invalid save state in the initial game menu
2021-09-16 21:26:48 +09:30
Filippos Karapetis
8cf46e2f7f GROOVIE: Restructure game-specific logic code and video code 2021-09-16 09:25:47 +03:00
Die4Ever
174f3c5074 GROOVIE: Clandestiny savegame fixes
Fixes crashes when you have saved games. Also makes the preview images on saved games work.
2021-09-16 09:21:24 +03:00
Filippos Karapetis
51806ec2f6 GROOVIE: Hook up the puzzle logic of the 11th Hour puzzles in UHP 2021-09-16 03:04:54 +03:00
Filippos Karapetis
8f3d07b05e GROOVIE: Initial work on UHP. 7/13 mini-tames are currently functional
From the 12+1 mini-games:
- Crypts (T7G) works
- Cake (T7G) works
- Spiders (T7G) works
- High Lights (T7G) works
- Blood and Honey / beehive (11H) misses game logic
- The Amazing Labyrinth / mousetrap (11H) misses game logic
- Book Checkers (11H) works
- SwitchBoard (11H) works
- Cursed Coins (Clan) misses game logic
- Trade Winds (Clan) crashes with missing resources
- Statue Paths (Clan) crashes with missing resources
- Leap Frogs (Clan) works
- The final puzzle is not accessible yet
2021-09-16 00:07:40 +03:00
Filippos Karapetis
cbc0d615bb GROOVIE: Use the ScummVM save/load dialogs for the in-game menu 2021-09-15 23:00:20 +03:00
Filippos Karapetis
8baac0f52c GROOVIE: Allow loading using the ScummVM load screen in T7G 2021-09-15 19:28:59 +03:00
Die4Ever
9b490a0864 GROOVIE: unset _waitingForInput and cleanup
Unset _waitingForInput to make the game more responsive. Also some cleanup of old commented out code.
2021-09-15 19:13:57 +03:00
Die4Ever
1a9cd3e900 GROOVIE: fix uses of ENABLE_GROOVIE2
Fixing compiler errors when groovie2 was disabled
2021-09-15 19:13:57 +03:00
Die4Ever
1af1d35540 GROOVIE: fix detection for T7G Mac
groovie.cpp requires the main grv file to be the first file in the game description
2021-09-15 19:13:57 +03:00
Die4Ever
1687b7f08b GROOVIE: fix error missing limits.h 2021-09-15 19:13:57 +03:00
Die4Ever
02ade73150 GROOVIE: fix compiler errors and warnings 2021-09-15 19:13:57 +03:00
Die4Ever
cfd928f296 GROOVIE: cleanup signed/unsigned compiler warnings 2021-09-15 19:13:57 +03:00
Die4Ever
1dd7a5f66a GROOVIE: code review feedback
fixes for MusicPlayerTlc

optimizations and cleanup in roq.cpp

lots of cleanup in tlcgame.cpp
2021-09-15 19:13:57 +03:00
Die4Ever
f1890553ed GROOVIE: fix o2_midicontrol stop command 2021-09-15 19:13:57 +03:00
Die4Ever
c0f489fe09 GROOVIE: fix op 0x0A o2_bf0on 2021-09-15 19:13:57 +03:00
Die4Ever
58a795c022 GROOVIE: stop audio when fast forwarding 2021-09-15 19:13:57 +03:00
Die4Ever
a72ac69b4e GROOVIE: right click to fast forward
For videos that don't have a _videoSkipAddress this allows you to fast forward through them. Also allows you to skip audio files like in T11H the riddles and hints.
2021-09-15 19:13:57 +03:00
Die4Ever
8da84fdda9 GROOVIE: added background sound effects
For The 11th Hour, this means things like clock chimes and wind sounds. This also fixes the end of the game where you have until the clock chimes 12 to choose a door.

- also renamed the stub ops functions

- sound effect volume setting for Groovie 2 games

- stop sound effects when playing an FMV (an interlaced video)
2021-09-15 19:13:57 +03:00
Die4Ever
87e98d1e86 GROOVIE: stubs for T11H AI puzzles
This is enough to get through the whole game, although you have to use the GameBook to solve mouse trap, chapel, and cake. Modern art has rudimentary AI. Beehive and Pente both auto-solve. Updated o2_stub49 so the player can choose an ending.
2021-09-15 19:13:57 +03:00
Die4Ever
7a09ae0a15 GROOVIE: T11H fix mouse trap crash 2021-09-15 19:13:57 +03:00
Die4Ever
454dbff264 GROOVIE: v2 use o2_printstring opcode 2021-09-15 19:13:57 +03:00
Die4Ever
c7e4c851f6 GROOVIE: some cleanup 2021-09-15 19:13:57 +03:00
Die4Ever
7e53331044 GROOVIE: Codacy and formatting 2021-09-15 19:13:57 +03:00
Die4Ever
3494ce638c GROOVIE: add o2_copybgtofg and fix o_videofromstring1 2021-09-15 19:13:57 +03:00
Die4Ever
5fbf8bd146 GROOVIE: fix accidental o2 in _opcodesT7G 2021-09-15 19:13:57 +03:00
Die4Ever
ee91abb26a GROOVIE: fix compiler errors 2021-09-15 19:13:57 +03:00
Christian Lindemann
cc61104b98 GROOVIE: Start implementation of gallery puzzle 2021-09-15 19:13:57 +03:00
Christian Lindemann
3d8cb28b8c GROOVIE: Bugfix. Videos with ID0 were skipped 2021-09-15 19:13:57 +03:00
Christian Lindemann
9c68ffb79f GROOVIE: Overlay corrections, some other bugfixes 2021-09-15 19:13:57 +03:00
Christian Lindemann
d3493f2352 GROOVIE: Bugfixes ROQ Player / Stubs for 11H Staufs moves 2021-09-15 19:13:57 +03:00
Christian Lindemann
6525123663 GROOVIE: TLC Music / Small Bugfixes / Better Comments 2021-09-15 19:13:57 +03:00
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