Commit Graph
77 Commits
Author SHA1 Message Date
athrxx caa96a50f0 SCUMM: (IMS) - refactor MT32/GM drivers
The MT32 driver could be based on the GM driver for the
most parts. Also minor fixes and cleanup.
2022-10-06 18:47:55 +02:00
athrxx 99dd6cb248 SCUMM: (IMS) - minor restructuring and cleanup
Currently, Roland MT-32 sound is broken for
SAMNMAX. Just try the intro song with shut off
speech. It is very obvious that it plays with a quite
reduced number of channels compared to the
original interpreter.

Now, due to the not-so-helpful code design (much
of the iMuse code has been drawn into the common
code) it has become increasingly difficult to fix Midi
related thing in iMuse. I have added more and more
crude hacks over time.

SAMNMAX requires more elaborate channel
allocation. To make it happen I have added driver
wrappers for Midi to the iMuse code.

Other than that, I have done only minor cleanup here.

Actually, I would have liked to withdraw much more
of the iMuse code from the common code and move
it to SCUMM (basically all the MidiChannel
stuff which is exclusively used by iMuse. But it turns
out that it is so thoroughly intertwined (the major
blocker here being the AdLib driver) that it requires
more thought and effort and would just distract me
from fixing the SAMNMAX sound.
2022-10-06 18:47:40 +02:00
AndywinXp a14f897bc4 SCUMM: Move high-level GUI handling to gfx_gui.cpp 2022-08-06 13:33:56 +02:00
Andrea Boscarino 024aa1f22b SCUMM: SMUSH: Implement audio sub-engine 2022-04-16 23:25:31 +02:00
athrxx 1f56132725 SCUMM: (SCUMM7/8) - reorganize font rendering - first part
(inspired by PR 3276 - this here has the desired effect, but actually allows the removal of hacks, workarounds and redundancy code instead of adding more of that sort)

The purpose is to have the same accurate font rendering that we already have in the Smush code also for the ingame texts. The original interpreters draw the text like that, so this is not a weirdo invention of mine.

This is still broken. The main purpose was to get as much code done as necessary to have it at least compile again and correctly run the Smush texts.

The rest still needs quite some work...
2022-04-08 19:53:44 +02:00
Andrea Boscarino f731cfd648 SCUMM: DiMUSE: New Digital iMUSE Engine (#3368)
SCUMM: DiMUSE: Add new implementation of the engine
2021-11-16 00:05:18 +01:00
Torbjörn Andersson cdfe9b5b4c SCUMM: Add practice mode box for Mac Loom
Unlike the PC version, the practice mode box appears to be hard-coded in
the Mac version. The script that draws the box in the PC version just
sets variables in the Mac version. This implementation is based on
screenshots.

To keep things a bit saner, I've split out the Mac-specific drawing to
its own file.
2021-05-17 18:44:29 +02:00
Vladimir Serbinenko 5c91fb8d6a SCUMM: Support Lokalizator plugin.
This was used by Russian translation of Pajama Sam 2 and Spy Fox 3
2020-12-07 23:01:38 +01:00
wonst719 7a2a0542fc SCUMM: Support variation of Korean postpositions 2020-11-06 19:35:12 +01:00
aryanrawlani28 29ceb07959 ENGINES: ALL: Revert detection submodule to be directly present in the engine directory
- DETECT_OBJS are present and added inside an engine's modules.mk file.
2020-10-03 14:56:36 +02:00
aryanrawlani28 8189a05316 ENGINES: ALL: Adapt to changes for new plugins by defining a new detection module
For each engine:
- Make a new folder detection
- Move detection-related files inside the folder
- Add a new module "enginename/detection"
- Add DETECT_OBJS here
- Adjust the normal engine module to remove detect_objs
- Adjust every file for the new changes.
2020-10-03 14:56:36 +02:00
aryanrawlani28 4c1a03845f SCUMM: Refactoring, remove detection.o dependency from modules.
- Move detection code used by createInstance & MetaEngine to a common header - detection_internal.h
- Move steam-related method & table to detection_steam.h
- More info in comments.
2020-10-03 14:56:36 +02:00
aryanrawlani28 dc4672e294 SCUMM: Split detection features & adapt to new plugins.
- Also, we remove the static keyword so other TU's can use the functions defined.
- This change has a catch.
- Because creating an instance depends on game detection code from detection.cpp, we cannot exclude it from Scumm.
- For Statically linked Scumm, we can simply exclude these detection files, because they're already being built.
- For dynamically linked Scumm, we can add it to our executable.
- Thus, for dynamically linked Scumm, one catch is that we have duplicated code (detection.o in our executable, as well as scumm.dll), but that shouldn't be a big problem considering the advantage it gives us: Detection without a plugin loading.
2020-10-03 14:56:36 +02:00
Eugene Sandulenko cff73c14d1 SCUMM: Implemented codec20 for SMUSH. Fixes #10899
It is a simple copying codec, used in FT Classic in Remaster.
2020-09-11 15:23:03 +02:00
Eugene Sandulenko 614858eb4b SCUMM HE: Work on receiving part of Moonbase Commander networking 2019-10-22 21:13:54 +02:00
athrxx 01f99f1a0a SCUMM: imuse driver directory cleanup
- move mac, pc speaker and fm-towns ims sound drivers into separate directory

(AdLib and MT32/GM drivers are still too entangled with common code to be moved so easily, especially MT32/GM. It would require lots of changes to the common code and possibly to all engines using the MidiDriver class. So I leave that for now.)
2019-07-14 21:45:43 +02:00
athrxx 9afdde2601 SCUMM: add Amiga iMuse sound driver
(applies to MI2 and INDY4)
2019-07-14 20:56:27 +02:00
nukeykt e5bfead345 SCUMM HE: Use Miles AdLib driver 2018-02-04 12:56:06 +01:00
Alexander Tkachev 7ac4bddfa9 HE: Add Moonbase Net dummy 2016-08-30 23:26:29 +02:00
Eugene Sandulenko 6928ddba15 SCUMM HE: Initial Moonbase distortion code 2016-06-14 19:28:29 +02:00
Eugene Sandulenko 441f630ec5 SCUMM HE: Added stub for Tree class 2016-05-22 00:45:05 +02:00
Eugene Sandulenko 44333f7453 SCUMM HE: Added main Moonbase AI code 2016-05-22 00:45:05 +02:00
Eugene Sandulenko bb88aaf119 SCUMM HE: Added Moonbase Traveller class 2016-05-22 00:45:04 +02:00
Eugene Sandulenko e4de5bf9ce SCUMM HE: Added implementation for Sortie and DefenderUnit classes 2016-05-22 00:45:04 +02:00
Eugene Sandulenko 412ae07efb SCUMM HE: Added Moonbase Node class 2016-05-22 00:45:03 +02:00
Eugene Sandulenko 33a0afc8f8 SCUMM HE: Added Weapon class 2016-05-22 00:45:03 +02:00
Eugene Sandulenko adc884ae8f SCUMM HE: AIEntity class implementation 2016-05-22 00:45:03 +02:00
Eugene Sandulenko 9d60209a33 SCUMM HE: Initial stub for Moonbase AI 2016-05-22 00:45:03 +02:00
Eugene Sandulenko 200882277a SCUMM HE: Initial code for Moonbase FOW 2016-05-10 11:23:13 +02:00
Eugene Sandulenko 73b8dfe5ce SCUMM HE: Initial code for Moonbase-specific class 2016-04-29 22:22:20 +02:00
Eugene Sandulenko 91a91309bf SCUMM HE: Renamed logic/moonbase.cpp to moonbase_logic.cpp 2016-04-29 21:42:34 +02:00
Filippos Karapetis 53d3ee07df SCUMM: Add support for CD audio tracks in the Steam versions of Loom
Many Thanks to Ben Castricum for the original patch
2014-07-04 23:33:43 +03: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
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
Torbjörn Andersson 148a6d3347 SCUMM: Move most of the Macintosh player code into its own class
The Monkey Island and Loom mac music is really quite similar. The
data layout is a bit different, but most of the code was easy to
separate into its own class. The Loom player doesn't do looped music
but I don't remember off-hand if it ever should.
2012-11-14 01:27:53 +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 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
Tobias Gunkel 5d6710ebfd SCUMM: add player_apple2.cpp to project files
Seems as if the iphone project files have to be updated separately.
2011-12-24 14:30:57 +01:00
Matthew Hoops f5255288ea SCUMM: Split HE logic classes to their own files 2011-08-17 09:12:19 +02:00
Johannes Schickel ed993e6350 SCUMM: Initial PC Speaker output implementation for SCUMM v5.
This is *not* complete yet.
2011-07-08 04:45:01 +02:00
Max Horn 075919756f SCUMM: Move shared code of Player_V2 & Player_V2CMS to new common base class
svn-id: r53830
2010-10-25 16:42:24 +00:00
Florian Kagerer 0d8f4a22ae SCUMM/FM-TOWNS: fix palette and other graphics issues
This commit should fix at least the following bugs/feature requests: #1032859, #1252088, #1055391, #1315968, #1315938, #1742106, #812891.
The FM-Towns version of Scumm games use a mixed graphics mode with 2 layers (one with 32767 colors and one with 16 colors). Among other things I have added a screen output class which emulates this  dual layer approach which allows specific hardware effects like enabling and disabling layers (e.g. in the voodoo priestess scene in MI1).

Old savegames (saved before this update) will load, but you’ll encounter palette glitches in the verb/inventory screen, since the 16 color palette for layer 2 is not contained in your savegame. This will be true at least for version 5 games. Certain scene change actions (which require the verb/inventory part to be redrawn) might correct this (e.g. try looking at the treasure map in MI1 and closing it). Version 3 games should be okay, since they use a static text palette which is never changed and which will be reset after loading a savegame.

This update requires a USE_RGB_COLORS setting for proper operation. 8 bit users will get a warning that they’ll have to expect palette glitches . Apart from that the engine in 8 bit mode should not only still work okay, but also benefit from some of the other (non palette related) improvements (e.g. bug #1032859 should be fixed even in 8 bit mode).

Japanese font drawing hasn’t been improved much yet. This will be a separate task.

svn-id: r52966
2010-10-01 19:24:52 +00:00
Florian Kagerer 29a5c6a45b SCUMM/FM-TOWNS: start rewriting audio code
- Start rewriting audio code for FM-TOWNS versions of Loom, Indy3 and Monkey Island 1 using the recently added code in towns_audio.cpp (Zak should work the same way, but I can't test, since I don't own that one).
- All sound types (pcm, euphony and cd audio) now support volume and balance control (e.g. try walking into/out of the kitchen and opening/closing the door in the Scumm Bar in Monkey Island 1 or walking into/out of the circus tent).
- Pcm sounds now support proper loop start/end and note offsets (e.g. try out the hammer sound in the forge in LOOM for example).
- some other minor improvements
- The FM-Towns versions of Indy 4 and Monkey Island 2 are not affected. I don't have Monkey Island 2, but I presume that it will work like Indy 4. Adding support for these will be a separate task, since they work quite differently.

svn-id: r52198
2010-08-18 21:38:43 +00:00
Travis Howell 8783b0f2f7 Add patch #2839048 - MM C64 sound/music player, with minor changes.
svn-id: r46143
2009-11-26 00:31:19 +00:00
Travis Howell 9b8c088af5 Add patch #2898231 - LOOM: Sound player for PC-Engine.
svn-id: r46110
2009-11-23 23:17:15 +00:00
Norbert Lange 62202a9de5 Removed alot of the debug-output
created a class player_v4a to hook TFMX Playback into Scumm. Monkey Island has sound, but no sfx yet

svn-id: r41480
2009-06-12 20:10:27 +00:00
Eugene Sandulenko cda17beff5 Patch #1365914: "SCUMM: CMS support." Disabled by default. Still plenty to do.
svn-id: r41282
2009-06-06 18:21:49 +00:00
Max Horn 56a31019b7 SCUMM: Added stubs for V3 & V4 opcode tables
svn-id: r40007
2009-04-19 00:59:28 +00:00