aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
AgeCommit message (Collapse)Author
2013-01-26Merge pull request #301 from lordhoto/c++11-playgroundJohannes Schickel
RFC: Allow use of override and nullptr. Also allow C++11 compilation.
2013-01-09SCUMM: Cleanup ScummEngine_v80he::createSound()Matthew Hoops
Added some comments to make it more readable. Switched usage of a temporary buffer and a double memcpy with a memmove. Also fixed a potential out-of-bounds write, thanks to LordHoto.
2013-01-09SCUMM: Silence C++11 narrowing warnings.Johannes Schickel
2013-01-02JANITORIAL: Fix or silence a couple of Clang analyzer warningsTorbjörn Andersson
Clang will produce plenty of warnings (most of them seem to be of the "if the stars align the wrong way, this may happen" variety), but I don't have the time or patience to look at all of them.
2012-12-15SCUMM: Handle double-clicks in Mac Loom (bug #3588164)Torbjörn Andersson
Unlike the EGA DOS version, it doesn't seem to be the scripts that keep track of double-clicks. Instead, the engine sets a variable to indicate them. Unlike the DOS version, we don't check that the second click happens close enough on the screen to the first one. We could, but it seemed needlessly complicated.
2012-12-14SCUMM: Fix compilation on AmigaOS4.Johannes Schickel
2012-12-14Merge pull request #291 from eriktorbjorn/mac-mi-music-finalJohannes Schickel
SCUMM: Add support for Macintosh music in Monkey Island 1 and Loom
2012-11-24SCUMM: Handle note value 1 as "hold current note" in MI1 MacTorbjörn Andersson
After listening to the original music in a Mac emulator (which unfortunately doesn't handle the music very well), I can only conclude that note value 1 means the note should continue playing. At first I thought maybe it was supposed to fade the current note, or perhaps change its volume, but I can't hear any traces of either. So I'm going to assume it just means "hold the current note", though for the life of me I cannot think of any valid reason for such a command. So it may be wrong, but it sounds closer to the emulator than it did before.
2012-11-23SCUMM: Added TODO comment about Mac MI1 musicTorbjörn Andersson
Some notes in the main theme are very staccato, and this could possibly explain why.
2012-11-23SCUMM: Fix memory leak when loading old MI1 Mac savegamesTorbjörn Andersson
I completely forgot to delete the dummy iMUSE object after using it to skip over the old music save information. Thanks to Lordhoto for pointing this out.
2012-11-22Merge pull request #283 from lordhoto/scumm-opl3Johannes Schickel
SCUMM: Support OPL3 in Sam&Max
2012-11-19SCUMM: Try harder to find Mac Monkey Island instrumentsTorbjörn Andersson
At least for me, hfsutils turns spaces into underscores so try both "Monkey Island" and "Monkey_Island".
2012-11-19SCUMM: Simplify checkMusicAvailable() a bitTorbjörn Andersson
2012-11-19SCUMM: Fix crash when Macintosh instruments aren't availableTorbjörn Andersson
Initialise _channel[] even when the instruments aren't available. Otherwise, ScummVM will crash in a number of places including, but not limited to, when loading savegames.
2012-11-19SCUMM: Add Windows encoding of the Mac Loom filenameTorbjörn Andersson
2012-11-18SCUMM: Lock the sound resource while the music is playingTorbjörn Andersson
After some discussion on #scummvm, the player now locks the sound resource while the music is playing. This prevents the resource manager from expiring the resource, which at best could cause music to restart where it shouldn't.. At worst, I guess it could have crashed, but I never saw that happen.
2012-11-18SCUMM: Fix regression that caused "pops" in MI1 jungle musicTorbjörn Andersson
Properly treat rests as rests, not notes. Otherwise, it would try to play a really low note which just came out as a "pop".
2012-11-18SCUMM: Use more correct (I think) way of converting samplesTorbjörn Andersson
It shouldn't make any real difference, but it's probably more formally correct.
2012-11-18SCUMM: Prevent music channels from drifting out of sync in Mac MI1Torbjörn Andersson
In looped music, prevent the music channels from drifting out of sync over time. This was noticeable after a few minutes in the SCUMM Bar. We do this by extending the last note (which is just zeroes, so we didn't even use to play it) so that it has the exact number of samples needed to make all channels the exact same length. (This is calculated when the music is loaded, so it does not need any extra data in the save games, thankfully.) As a result, the getNextNote() is now responsible for converting the duration to number of samples (out of necessity) and for converting the note to a pitch modifier (out of symmetry). I made several false starts before I realized how much easier it would be this way.
2012-11-18SCUMM: Fix whitespaceTorbjörn Andersson
2012-11-17SCUMM: Avoid "pops" at the end of the note in Mac MI1/Loom musicTorbjörn Andersson
At least on my computer, when the note ended abruptly there would be an annoying "pop" at the end. This was particularly noticeable at the end of the distaff notes in Loom. To get around this, fade out the last 100 samples. There's nothing magical about 100 in particular, but it's a nice even number and it should be short enough that it's never a noticeable part of the note, even at low sample rates.
2012-11-17SCUMM: Remove commented out code.Torbjörn Andersson
It was the remains of an experiment and no longer serves a purpose.
2012-11-16SCUMM: Fix the "drafts" debugger command for Mac LoomTorbjörn Andersson
Mac Loom's drafts appear to be stored from variable 55 and upwards. I'm working under the assumption that there's either only one version of Loom for the Mac, or that they all behave the same. I could be wrong about that.
2012-11-16SCUMM: Remove obsolete part of the "drafts" debugger commandTorbjörn Andersson
It was never quite clear exactly what "drafts fix" did. It wasn't guaranteed to work on all versions of Loom - or at all - and I haven't heard any reports about the data structure getting corrupted for years.
2012-11-16SCUMM: Store sample rate in Mac MI1 / Loom savegamesTorbjörn Andersson
This keeps the music from breaking when loading a savegame that was made with a different sample rate than the current one. It also breaks all savegames made in the past eight hours, but I don't think it's necessary to maintain savegame compatibility within a pull request, as long as it still works with savegames made before it.
2012-11-16SCUMM: Add hack to preserve savegame compatibility with Mac MI1Torbjörn Andersson
For old savegames, we now use a "dummy" iMUSE objet to skip the old iMUSE save state. I had hoped to be able to do this without making any changes to the iMUSE code itself, but I was unable to. Also added note about how the save state for the new music will not quite work if the mixer output rate changes. Personally, I'm not too worried about that. It breaks, but it shouldn't break badly.
2012-11-15SCUMM: Save/load Mac music engine state for Loom and MI1Torbjörn Andersson
Note that while this removes _townsPlayer->saveLoadWithSerializer(s) it really shouldn't break anything because _musicEngine also points to the FM Towns player. Famous last words...
2012-11-14SCUMM: Remove Mac version of MI1 from special case.Torbjörn Andersson
We no longer use iMuse for MI1 Mac so this never happens. The Mac player can only play one song at a time, so it should be all right.
2012-11-14SCUMM: Move Mac player initialization to its own functionTorbjörn Andersson
Apparently we cannot (portably) call virtual functions from the constructor, so initialization has been moved to a separate function.
2012-11-14SCUMM: Try harder to open the Loom Macintosh executable.Torbjörn Andersson
Try the Mac OS Roman form, the UTF-8 form and the filename without any trademark glyph.
2012-11-14SCUMM: Hopefully fix warningTorbjörn Andersson
Excplicitly cast to int to avoid a warning that I don't get, but which clone2727 does. At least, I hope it avoids the warning.
2012-11-14SCUMM: Remove unnecessary check for Mac LoomTorbjörn Andersson
As clone2727 pointed out, the default case handles Loom. I guess it was a special case before to *prevent* it from trying to play the sound, and to keep some comments about the format.
2012-11-14SCUMM: Move most of the Macintosh player code into its own classTorbjörn Andersson
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-13SCUMM: Add support for Mac Loom music and soundTorbjörn Andersson
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-12SCUMM: Initialize the Macintosh MI1 instruments, along with the channels.Torbjörn Andersson
Otherwise it may crash if you quit before any instruments have been loaded. Oops.
2012-11-11SCUMM: Added support for Macintosh music in Monkey Island 1Torbjörn Andersson
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-06SCUMM: Fix bug #3526089 - "SCUMM: ZAK Can't get objects in the bus on Mars"Filippos Karapetis
This fixes a regression in V1/V2 games when no actor direction is set (like the Shuttle Bus scene in Zak V2). The regression was caused by commit de0b5f76749add219a6b667d5d2d69fb8a86d959. Thanks to digitall for his bisecting work, which aided a lot in finding the actual issue for this bug
2012-10-01SCUMM: Ignore detune for Sam&Max.Johannes Schickel
2012-10-01AUDIO: Add support for Sam&Max's OPL3 output in our SCUMM AdLib driver.Johannes Schickel
This is an initial implementation and does not implement the differences in voice allocation.
2012-09-26JANITORIAL: Remove trailing whitespaces.Johannes Schickel
Powered by: git ls-files "*.cpp" "*.h" "*.m" "*.mm" | xargs sed -i -e 's/[ \t]*$//'
2012-09-23SCUMM: Add check for resource fork for ".iMUSE Setups".Johannes Schickel
This should help identify incorrect dumps/file naming like what (probably) happened in bug #3570973 "FOA: Doesn't start anymore after adding Mac sound support".
2012-09-20Merge pull request #275 from clone2727/pegasusclone2727
Pegasus engine (The Journeyman Project: Pegasus Prime)
2012-09-20SCUMM: Update commentsMatthew Hoops
2012-09-20SCUMM: Restrict the Mac m68k v5 driver to MI2/Indy4Matthew Hoops
Shouldn't be used with MI1
2012-09-20SCUMM: Add support for Indy4 Mac 68k soundMatthew Hoops
2012-09-20SCUMM: Always use the Mac sound output for MI2 Mac.Johannes Schickel
Formerly it wasn't used when the user selected a MIDI output in the options. Thanks to clone2727 for noticing.
2012-09-20SCUMM: Implement support for special sfx in MI2 Mac.Johannes Schickel
This also increases the savegame version, since it introduces a new Instrument subclass.
2012-09-20SCUMM: Implement support for Monkey Island 2 Mac music.Johannes Schickel
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-20SCUMM: Extend comment about SysEx manufacturer 0x97.Johannes Schickel
2012-09-20SCUMM: Don't play SBL effects in MI2 mac.Johannes Schickel
The original does not do this either.