8 bit mode makes no sense for these games since colors will be too messed up.
SCUMM 3 games (Indy 3, Loom, Zak) are still supported in 8bit mode.
svn-id: r52977
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
Bug #3039004: "MANIACNES: Ed does not appear at doorway."
Actually whole thing is a gross hack on top of SCUMM v1.5 hack
with extra wide screen. It all calls for review and writing
specified methods.
svn-id: r52375
- 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
Apparently, the original interpreter hard-coded the lengths of the
audio tracks on the CD, and in this particular case it makes a
difference that one of the tracks is slightly longer on the disc
than the scripts assume it is. Thanks to hennymcc for doing all the
hard work in figuring this out.
svn-id: r52098
These devices are not able to create appropriate drivers.
The only purpose for now is having proper gui options and flags and music types for the device detector.
The corresponding GUIO flags for the new devices have been added, too.
svn-id: r51995
At this point, there's little point in doing them one game at a time.
Re-enable PCjr music for old Monkey Island, and for the Passport to
Adventure demo. Again, I don't have all the relevant versions to test
myself, so keep an eye out for regressions.
At this point, only the Apple II and C64 versions of Maniac Mansion
have the MDT_PCSPK flag, but not the MDT_PCJR flag. I don't know a
thing about these versions, so I'm leaving them well enough alone.
svn-id: r51990
Apart from adding the necessary detector flags, in cases where we used
to only check for PC Speaker we now also need to check for PCjr. Note
that I have only tested this with the VGA version. And even with that
one, I've only given it the briefest of tests.
svn-id: r51988
It is a long standing bug which was revealed by r31784. With that commit
Kirben switched DIG code to newer one. Russian version used 0x03 as
placeholders for keeping string widths. Original did not copy those
characters but we did hence the bug. Based on study of original.
Restrict it to Dig-only in order to avoid regressions.
svn-id: r51211
* Remove _isAttached member var and isAttached method
* Engines now always call the onFrame method; whether it does
something is decided by the debugger class resp. its subclasses
* Make detach() protected instead of private, so that subclasses
can invoke it
* Remove _detach_now member var (call detach() instead).
* Rename _frame_countdown to _frameCountdown and properly
document it.
* Add more doxygen comments
* Cleanup
svn-id: r50963
The code was compied from AdvancedDetector. Currently it is
set up to detect Mac indy3/loom which contains it data in
Rooms 1, Roooms 2 and Rooms 3 directories.
svn-id: r49798
FR #2821513: "GUI: add tooltips".
Added tooltips for Add Game button, clear field buttons and couple
other.
Current problem: Only first call correctly restores text. I could
not find where restore information gets lost.
svn-id: r49774
Now it is possible to specify hotkeys in place for ButtonWidget
and CheckboxWidget (the only widgets with hotkeys now).
Use de-facto standard with putting hotkey between tildes (~).
Like '~O~pen'. The tildes gets stripped before after hotkey
is extracted.
This is done for giving translators possibility to specify
their own hotkeys.
Old hotkeys defined at widget instance creation are left for
leaving possibility to specify non-printable hotkeys such as
Common::ASCII_ESCAPE.
Translation files were updated respectively.
svn-id: r49766
Bug #1328120: "MANIACNES: Screen width incorrect, camera halts sometimes".
Fixed by workaround and was tested with intro and on the kitchen,
where now it is possible to see Edna without her noticing you
first.
svn-id: r49764
Bug 1879604: "MANIACNES: Music not played when loading game".
Actually previous attempt to fix this bug was not successful
since first entry of script 5 does not have needed functionality.
Now we resume music manually.
svn-id: r49763
Bug #1438631: "SCUMM: Detecting mac version of indy3/loom broken"
fixed by implementing recursive directory lookup similar to what
was done for AdvancedDetector, since SCUMM engine does not use it.
svn-id: r49656
- Removed AudioCDManager Singleton, and changed code for using AudioCDManager in OSystem.
- Added initialization code for new AudioCDManager in BaseBackend and OSystem_SDL.
svn-id: r49548
These are incorrect as '/' operator has precedence over >>, but this does improve readability anyway.
This bug in cppcheck has already been corrected: http://sourceforge.net/apps/trac/cppcheck/ticket/1714
svn-id: r49517
These functions are only used internally be Engine subclasses, and
by moving them to a separate header we can reduce indirect header
dependencies.
svn-id: r48934
The idea behind this is exactly the same as behind r48620,
but it affects all engines, thus engine authors can now use
CursorMan.replaceCursor without having to worry about possible
memory leaks or the like.
svn-id: r48626
The problem here was that SCUMM only uses CursorMan.replaceCursor. When no
cursor had been setup before it would cause the SCUMM cursor to be never
removed from CursorMan, since in this case replaceCursor just uses pushCursor.
To avoid this problem I am just pushing a dummy cursor (and palette, since
that is used in SCUMM HE games too) on engine setup and removing it on engine
destruction.
Actually every engine should setup their first cursor via CursorMan.pushCursor
and then on quit remove it again via CursorMan.popCursor. Using
CursorMan.replaceCursor is *no* good idea for the first cursor to setup, since
that might either replace an existing cursor, thus destroying the caller's
cursor, or pushing a new cursor on the stack, which might result in a leak.
This would also result in making a call to CursorMan.popCursor unsafe, since
that might also impact the caller's cursor setup again.
svn-id: r48620
In this case, it was always a break after a return in a switch case. There are
similar cases which cppcheck didn't detect, and a couple of cases where we have
a break after a continue in a switch case (where the continue refers to an
outer loop), but I didn't touch those. Not yet, at least.
svn-id: r48218
* now takes a SeekableReadStream *pointer* like (almost) all other
audiostream factories
* fix potential memory leak in it
* rename takeOwnershipOfStream to disposeAfterUse for consistency
svn-id: r48184