Commit Graph

461 Commits

Author SHA1 Message Date
Torbjörn Andersson
7dc316cced SCUMM: Add secret "easter_egg" config key
This makes it possible to override the detection of Maniac Mansion
when starting the Day of the Tentacle easter egg. There is no GUI
for setting this, no error handling, and setting it to Day of the
Tentacle itself is probably a bad idea...
2014-12-30 10:54:49 +01:00
Torbjörn Andersson
cc916625d9 SCUMM: Add a "chained games manager"
This replaces the somewhat ugly use of the config manager to store
the chained games.
2014-12-30 10:47:51 +01:00
Torbjörn Andersson
f74ba29753 SCUMM: Enable Day of the Tentacle easter egg
Instead of returning to the launcher, a game may now specify a list
of "chained" games and optional save slots. The first game is popped
from the list and started. Quitting still quits the entire ScummVM.
It seemed like the sensible thing to do.
2014-12-30 03:45:14 +01:00
Robert Crossfield
d83438225e SCUMM: Maniac V0: Add support for D64 Demo Disk, Cleanup duplicate 'Talk' array 2014-12-08 10:14:37 +11:00
Kirben
aca10de1b5 SCUMM: Add support for quit script in HE90+ games. 2014-08-20 09:26:39 +10:00
Johannes Schickel
c44c46a4fb SCUMM: Simplify index file handling for Steam versions.
This also makes sure that all extra needed detection data for the Steam
releases is located inside detection.cpp.
2014-07-05 14:16:20 +02:00
Filippos Karapetis
902a140f3e SCUMM: Add support for Steam versions of Indy 3, Indy 4, Loom and Dig
Many Thanks to Ben Castricum for the original patch
2014-07-03 00:13:33 +03:00
D G Turner
e065b24d56 SCUMM: Remove "level" command from debugger. Replaced by "debuglevel".
This required a small amount of extra code changes to ensure that
_debugMode is kept in sync when the debugger is used to change the
level.
2014-05-13 15:14:54 +01:00
Johannes Schickel
3847465163 SCUMM: Make GPL headers consistent in themselves. 2014-02-18 02:39:38 +01:00
clone2727
9d9ced0734 Merge pull request #366 from clone2727/he-saves-target-name
RFC: Make HE games use the target name in all save files
2014-01-17 15:59:44 -08:00
Filippos Karapetis
4f807ee53e SCUMM: More renaming for players
Rename "player" directory to "players", and reintroduce the "player_"
file prefix. This has been done after sev's request.
"players/player_foo.*" is more descriptive, and avoids potential name
clashes in libraries
2013-11-01 19:26:51 +02:00
Filippos Karapetis
651bf89939 SCUMM: Move all players to a separate "player" directory
There are 34 player .cpp/.h player files, so they have been placed in
their own directory, to logically separate them from the rest of the
engine
2013-11-01 06:57:53 +02:00
Matthew Hoops
3bfd422205 SCUMM: Make all HE saves prepend the target name
This makes HE follow the ScummVM convention of using the target name everywhere. It also fixes having more than one team in both soccer and football.

Loading old saves will still work and they will be tried if the newer save names are not found.
2013-10-05 15:45:36 -04:00
Johannes Schickel
80ab4c5242 SCUMM: Implement original AD AdLib output.
This implements the original AD output and enables it for Indy3 and Loom DOS.
It is not enabled for Monkey Island DOS because it would break multi MIDI
support. However, there are also drawbacks for Indy3. In the catacombs
we were able to play sfx (Indy walking around) and the background music
at once. This was not supported in the original player and thus also does
not work with this reimplementation.

This fixes bug #2027877 "INDY3: Non-Looping Sound Effects".
This fixes bug #1159581 "ADLIB: Adlib Emulation doesn't Respect Volume Settings"
for Indy3 and Loom.
2013-07-24 03:28:47 +02:00
Matthew Hoops
0031c41db8 COMMON: Change kPlatformPC to kPlatformDOS
"PC" was very ambiguous and now it matches what we show in the GUI.

This also corrects sword2's platform to Windows.
2013-05-02 18:43:10 -04:00
Torbjörn Andersson
ce79ff4f2e SCUMM: Change NUM_SCRIPT_LOCALS to NUM_SCRIPT_LOCAL
For consistency with NUM_SCRIPT_SLOT.
2013-05-01 07:47:56 +02:00
Torbjörn Andersson
2284aba719 SCUMM: Use correct array size when calling initializeLocals()
The initializeLocals() function assumes that it can copy 25
elements when being provided an array of values. But this array
was frequently a lot smaller than that. I've introduced a constant
for the number of locals (though VirtualMachineState has one more
for some reason), and fixed the array sizes in a number of places.

CID 1003951, 1003952, 1003953, 1003955, 1003956, 1003959, 1003960,
1003961, 1003963, 100394, 1003965
2013-04-30 22:26:51 +02:00
Johannes Schickel
97d7bf9b9a Merge pull request #291 from eriktorbjorn/mac-mi-music-final
SCUMM: Add support for Macintosh music in Monkey Island 1 and Loom
2012-12-14 11:57:49 -08:00
Torbjörn Andersson
0dcd4ba5a7 SCUMM: Move Mac player initialization to its own function
Apparently we cannot (portably) call virtual functions from the
constructor, so initialization has been moved to a separate function.
2012-11-14 21:20:40 +01:00
Torbjörn Andersson
b1d10e6a62 SCUMM: Add support for Mac Loom music and sound
It turns out that playing the Mac Loom music isn't particularly
different from playing the Monkey Island 1 music, except the data
layout is a bit different and there's no per-note volume.
2012-11-13 22:49:12 +01:00
Torbjörn Andersson
8bb595453b SCUMM: Added support for Macintosh music in Monkey Island 1
This is based on the old Mac0-to-General MIDI conversion that we used
to do (and which this patch removes), as well as the code for playing
the Monkey Island 2 and Fate of Atlantis Macintosh music. I'm not sure
how accurate it is, particularly in tempo and volume, but at this
point it seems to work pretty well. Looping music is perhaps a bit
off, but it was before as well.

There is an annoying drawn out note in the music when you're following
the shopkeeper, but that appears to have been there in the original as
well.
2012-11-11 13:56:06 +01:00
Johannes Schickel
abe637b0f5 AUDIO: Add support for Sam&Max's OPL3 output in our SCUMM AdLib driver.
This is an initial implementation and does not implement the differences
in voice allocation.
2012-10-01 03:10:44 +02:00
Johannes Schickel
89abab97e3 JANITORIAL: Remove trailing whitespaces.
Powered by:
git ls-files "*.cpp" "*.h" "*.m" "*.mm" | xargs sed -i -e 's/[ \t]*$//'
2012-09-26 04:17:55 +02:00
Matthew Hoops
2a9d98003e SCUMM: Restrict the Mac m68k v5 driver to MI2/Indy4
Shouldn't be used with MI1
2012-09-20 11:58:04 -04:00
Matthew Hoops
fc6ab89b50 SCUMM: Add support for Indy4 Mac 68k sound 2012-09-20 11:48:00 -04:00
Johannes Schickel
c3f37fb187 SCUMM: Always use the Mac sound output for MI2 Mac.
Formerly it wasn't used when the user selected a MIDI output in the options.
Thanks to clone2727 for noticing.
2012-09-20 04:07:18 +02:00
Johannes Schickel
58f542d434 SCUMM: Implement support for Monkey Island 2 Mac music.
This is a initial RE of the audio output Monkey Island 2 Mac uses. Support
for special sound effects is not in there yet.
2012-09-20 02:12:41 +02:00
Travis Howell
4aec92e5e9 SCUMM: Backyard Baseball 2003 uses a unique variable for the subtitle setting, fixes changing subtitles via ScummVM. 2012-05-31 11:40:21 +10:00
Tobias Gunkel
9dd6105ce6 SCUMM: replace "c64" with "v0" when it applies to both C64 and AppleII v0 versions
In addition some routines (e.g. the gfx ones) that are even used in v1.
2012-02-11 08:30:08 +01:00
Tobias Gunkel
daff6f36ae SCUMM: _currentLights is v0 only 2012-02-11 08:30:03 +01:00
Tobias Gunkel
0bae642453 SCUMM: 2nd try to fix dungeon door timing
Shorten the timer delay does not work as escaping with a second kid is not possible too. Instead decrease engine speed during script execution.
2012-02-11 08:28:54 +01:00
Tobias Gunkel
c138ef6709 SCUMM: merge _activeObjectNr/_activeObjectType and _cmdObjectNr/_cmdObjectType 2012-02-11 08:28:46 +01:00
Tobias Gunkel
b337823bab SCUMM: fix verb and script handling
- getVerbEntrypoint() should not handle walk-to differently (revert 0x0D handling back to original behavior)
- VAR_ACTIVE_ACTOR actually is VAR_ACTIVE_OBJECT2
- runSentenceScript(): "if (_cmdVerb == kVerbWalkTo)" must be "if (_cmdVerb != kVerbWalkTo)"
2012-02-11 08:28:26 +01:00
Tobias Gunkel
de0b5f7674 SCUMM: use command stack and SentenceTab in mm c64
- MM C64 uses command stack (SentenceTab, doSentence()) now
- _cmdObject... added for current SentenceTab. The _active... variables are only used to build a sentence in the inventory but never by a script.
-> many routines are not needed anymore and are removed
2012-02-11 08:28:22 +01:00
Tobias Gunkel
706b8cf1c5 SCUMM: replace verb, prep and currentMode values with symbolic constants 2012-02-11 08:28:19 +01:00
Tobias Gunkel
1c32000a00 SCUMM: start handling object type and id correctly in mm c64
- removed complicated and unnecessary _v0ObjectIndex, _v0ObjectInInventory, _v0ObjectFlag vars
- started to merge object id and type into one object value (type<<8|id)
- verb preposition ids do not dependent on language -> remove from VerbSettings

Note:
- objects with type=0 are foreground objects. They have a state, an owner and a bg overlay image.
- objects with type=1 are bg objects. They do not have a state or owner and are already contained in the bg image. The do not have an entry in objectState/OwnerTable
2012-02-11 08:28:14 +01:00
Tobias Gunkel
a79f224c23 SCUMM: changed handling of _activeInventory/_activeActor to _activeObject(2)/_activeObject(2)Type
Note: the transition is not completed yet. The code compiles but is probably not runnable as not every occurrence of _activeInventory has been properly replaced.
The usage of _v0ObjectIndex and _v0ObjectInInventory should be revised too and both variables should be replaced by another mechanism (maybe by using a single variable "obj = (type << 8) | id").

- moved v0 only vars _activeInventory, _activeObject, _activeVerb from  ScummEngine_v2 to ScummEngine_v0
- removed _activeActor, _activeInvExecute, _activeObject2Inv and _activeInventory. They are handled by _activeObject/_activeObjectType and _activeObject2/_activeObject2Type now.
- removed _activeObject(2)Index as they only bloat the code without any benefit (?)
- merge prep-name tables from ScummEngine_v2::drawPreposition() and ScummEngine_v0::drawSentenceWord() by introducing ScummEngine_v2::drawPreposition()
- rename ObjectData.flags -> obj_type (quick-fix only, needs review! Maybe obj_nr and obj_type can be merged into one var: obj_nr = (obj_type << 8) | obj_nr)
- o_unknown2 is negation of o_ifActiveObject (o_ifNotEqualActiveObject2)
- renamed o_ifActiveObject -> o_ifEqualActiveObject2 as it acts only on _activeObject2
- renamed ScummEngine_v0::drawSentenceWord() -> ScummEngine_v0::getObjectName()
2012-02-11 08:02:32 +01:00
Johannes Schickel
95cabb0ffd SCUMM: Add a difficulty selection dialog for Loom FM-Towns.
It is in spirit of the DOS version's selection dialog, but it has the
description above the buttons instead of below it.
2011-12-26 15:25:41 +01:00
Tobias Gunkel
854928f09a SCUMM: Rename player_appleII.* -> player_apple2.* to have the filenames lower case 2011-12-24 14:29:06 +01:00
Tobias Gunkel
109ba212c6 SCUMM: Add initial support for AppleII sound player 2011-12-22 12:08:23 +01:00
Willem Jan Palenstijn
0af011ba82 SCUMM: Further clean up loop 2011-11-01 23:56:51 +01:00
Willem Jan Palenstijn
f191413b1c SCUMM: Clean up loop 2011-11-01 15:54:15 +01:00
Johannes Schickel
4ea4172cba SCUMM: Implement proper Indy4 Amiga palette handling.
This should fix incorrect text colors in some scenes.
2011-08-26 05:54:47 +02:00
Matthew Hoops
f5255288ea SCUMM: Split HE logic classes to their own files 2011-08-17 09:12:19 +02:00
Eugene Sandulenko
192b245d51 SCUMM: Fix compilation 2011-08-06 11:39:37 +01:00
Eugene Sandulenko
0dafa7f80f ALL: Reduce audio/ header dependency 2011-08-06 11:30:42 +01:00
Johannes Schickel
b86de198a0 SCUMM: Fix up CMS player implementation.
It's much better now and hopefully quite close to the original when it comes
to the music part. The intro music of Loom and Monkey Island 1 EGA sounds fine
to me now at least.
2011-08-05 22:58:50 +02:00
Johannes Schickel
a8846d37d5 Merge pull request #54 "SCUMM v5 PC Speaker driver".
Discussion can be found here: https://github.com/scummvm/scummvm/pull/54
2011-07-11 21:51:40 +02:00
Johannes Schickel
dab9c05783 SCUMM: Do not allow multi midi mode for PC Speaker output.
Thanks to eriktorbjorn for catching this.
2011-07-10 16:21:30 +02:00
Johannes Schickel
abbd29b16a SCUMM: Limit iMuse default instrument load to PC Speaker output.
Albeit the code is marked as a hack inside the source, the original behaved
exaclty the same. If the code is removed the PC Speaker output will miss notes,
since unlike the original we only output to parts, which have an instrument set
up.
2011-07-10 05:21:25 +02:00