Difference between revisions of "SCUMM/TODO"

From ScummVM :: Wiki
Jump to navigation Jump to search
(Moved HE bugs to separate page)
(Mention v7/v8 still having old memory-related issues on Dreamcast (backend related? engine related?))
 
(20 intermediate revisions by 11 users not shown)
Line 1: Line 1:
{{Infobox_TODO|
taskname=SCUMM Engine TODO|
techcontact=[[SCUMM]] Engine Team|
subsystem=Engine|
}}
== General TODO ==
== General TODO ==
* Make it possible to restart games properly
* Make it possible to restart games properly
* Possibly implement a new resource manager, which then also could be shared by ScummEX. [Jamieson has some ideas about this].
* Possibly implement a new resource manager, which then also could be shared by ScummEX. [Jamieson has some ideas about this].
* Figure out the resource types in the Turbografx/PC Engine version of Loom
* Add support for music and sound effects in the Apple II version of Maniac Mansion
* Add support for music and sound effects in the Commodore 64 versions of Maniac Mansion and Zak McKracken
* Add support for music and sound effects in the Macintosh version of Loom
* Add support for TFMX music format in Amiga version of Monkey Island 1 Check http://www.wotsit.org/search.asp?s=TFMX and http://freshmeat.net/projects/tfmx-play/ for music format details
* Add support for handling Kanji in FM-Towns games (foreground is rendered on a second plane at 640x480), text uses Shift_JIS encoding [implementation now that currently depends on font rom, not needing the rom would be preferable]
* Clean up class Gdi. This class right now mostly is about decoding various graphic formats. However some other functionality has crept into it, too. It would be nice if class Gdi would only contain the GFX decoding code, and nothing else (assuming that is feasible w/o too much trouble). OTOH, the code which is responsible for managing virtual screens, rendering virtual screens to the real display etc. could be grouped into a new class (e.g. VSManager or so).
* Clean up class Gdi. This class right now mostly is about decoding various graphic formats. However some other functionality has crept into it, too. It would be nice if class Gdi would only contain the GFX decoding code, and nothing else (assuming that is feasible w/o too much trouble). OTOH, the code which is responsible for managing virtual screens, rendering virtual screens to the real display etc. could be grouped into a new class (e.g. VSManager or so).
* Reduce kMD5FileSizeLimit from 1MB to e.g. 80 kb (this will force us to recompute the MD5 for the mac bundles, but hopefully nothing else)
* Reduce kMD5FileSizeLimit from 1MB to e.g. 80 kb (this will force us to recompute the MD5 for the mac bundles, but hopefully nothing else)
* ADLIB: There seems to be some loop/repeat mechanism in old Adlib sound effects that we do not handle. [http://vogons.zetafleet.com/viewtopic.php?t=8644 This thread] has some discussion, and recordings. Two good examples are the door opening sound in Indy 3 and Monkey Island 1 (floppy), and the typewriter sound in Indy 3.
** The main motivation for that is to improve detection speed: If a file has the right name but is big, we waste a lot of time reading 1MB of data and computing its MD5, when it should suffice to look at a few kilobytes at most.
* ADLIB: We don't handle (global) music volume changes for adlib sounds in older SCUMM games. See {{BugTrack|num=1159581}}.
** Alternatively, change it to 5000 bytes to match the AdvancedDetector. This will affect far more games, so we'd end up with many obsolete MD5 ideas. But since we are pretty good at detecting SCUMM games correctly even without MD5, this shouldn't be so bad. However, some files might not be easily distinguishable with only the first 5000 bytes, need to check on that.
* AdLib: There seems to be some loop/repeat mechanism in old AdLib sound effects that we do not handle. [http://vogons.zetafleet.com/viewtopic.php?t=8644 This thread] has some discussion, and recordings. Two good examples are the door opening sound in Indy 3 and Monkey Island 1 (floppy), and the typewriter sound in Indy 3. See {{Tracker|id=3830}}.
* AdLib: We don't handle (global) music volume changes for AdLib sounds in older SCUMM games. See {{Tracker|id=1946}}.
* Add support for non-interactive demo of Monkey Island 2. This can be done either by hacking the SCUMM loop and adding code to parse the existing 'demo.rec' file and re-injecting events in the event loop. Another possible approach would be to "specialize" the (future) events recording/playback code to deal with the original SPUTM .rec files.
* Add support for non-interactive demo of Monkey Island 2. This can be done either by hacking the SCUMM loop and adding code to parse the existing 'demo.rec' file and re-injecting events in the event loop. Another possible approach would be to "specialize" the (future) events recording/playback code to deal with the original SPUTM .rec files.
* Work around actor (re)color bugs in Indy3 FM-TOWNS / VGA. See http://home.comcast.net/~ervind/ij3misc.html
* Might also be nice to use the trick they used in AGI/Sarien to add custom recoloring to costumes at least for the EGA games. E.g. in MM, an actor with blue trousers working on a blue ground looks... stealthy :)
* Add support for the original instrument samples for Indy4 Amiga and MI2 Amiga versions to make sound as per original interpreter. See [http://forums.scummvm.org/viewtopic.php?p=79201&sid=4eb7cfe67921a2e97e9b338225fbea40 here].
* Add support for the high resolution interface used in the Mac version of Indiana Jones and the Last Crusade. See [http://web.archive.org/web/20140126034048/http://home.comcast.net/~ervind/ij3mac.html Indiana Jones and the Last Crusade]


== SCUMM V0 ==
== SCUMM V0 ==
Line 19: Line 25:
== SCUMM NES ==
== SCUMM NES ==
* see [[SCUMM/NES|SCUMM NES TODO list]]
* see [[SCUMM/NES|SCUMM NES TODO list]]
== SCUMM v7+ ==
* Optimize the v7/v8 engine for memory-limited platforms such as Dreamcast; see Trac#6008 and Github PR#4693 for more context.


== HE games ==
== HE games ==
* see [[Humongous Entertainment/Progress|HE Progress status]]
* see [[Humongous Entertainment/Progress|HE Progress status]]
* see [[Humongous Entertainment/Progress/16bits Support|HE 16bits Support]]


== Bugs Also in the Original ==
== Bugs Also in the Original ==
=== Not Yet Fixed ===
* see [[SCUMM/Bugs|SCUMM Original Bugs list]]
* In Sam and Max, part of Bruno is not cleared off the screen when leaving Bumpusville. {{BugTrack|num=2028711}}
* In German Sam and Max (talkie), voices can be out of sync. {{BugTrack|num=2023466}}
* In Day of the Tentacle, the glow of the Chron-O-John can be drawn in front of the closed door. {{BugTrack|num=1803628}}
* In Day of the Tentacle, the Chron-O-John's rotor and glow can be missing. {{BugTrack|num=1794309}}
* In Zak McKracken (Amiga), the credits in the intro are too fast. {{BugTrack|num=1690207}}
* In Zak McKracken (V2), Zak walks behind the guard in London, instead of in front of him. {{BugTrack|num=1571747}}
* In Zak McKracken (V2), Zak walks behind the guard in Katmandu, instead of in front of him. {{BugTrack|num=1571707}}
* In Zak McKracken (FM-Towns), switching back from Zak to the bird causes the bird to fly into the screen multiple times. {{BugTrack|num=1528862}}
* In Zak McKracken (FM-Towns), the caponian and Zak appear in wrong positions after retrieving the "glowing item" from the bottom of the sea. {{BugTrack|num=1527640}}
* In Sam and Max, Doug the Moleman temporarily loses his head after giving him the pecan candy. {{BugTrack|num=1496577}}
* In Sam and Max, some animations of Max don't disappear in the second encounter with flambee. {{BugTrack|num=1496566}}
* In Monkey Island 2, skipping speech with escape at Captain Dread's boat will display weird results. {{BugTrack|num = 995942}}
* In Loom (CD), voice goes out of sync when casting fear. {{BugTrack|num=770066}}
* In Loom, Hetchel has two heads in her flight. {{BugTrack|num=770050}}
* In Maniac Mansion, the tape player keeps playing the tape. {{BugTrack|num=752874}}
 
=== Fixed ===
* In Day of the Tentacle,  in the lobby, Bernard can use Laverne's voice. {{BugTrack|num=2016521}}

Latest revision as of 13:14, 10 February 2023

TODO List
Name SCUMM Engine TODO
Technical Contact(s) SCUMM Engine Team
Subsystem Engine

General TODO

  • Make it possible to restart games properly
  • Possibly implement a new resource manager, which then also could be shared by ScummEX. [Jamieson has some ideas about this].
  • Clean up class Gdi. This class right now mostly is about decoding various graphic formats. However some other functionality has crept into it, too. It would be nice if class Gdi would only contain the GFX decoding code, and nothing else (assuming that is feasible w/o too much trouble). OTOH, the code which is responsible for managing virtual screens, rendering virtual screens to the real display etc. could be grouped into a new class (e.g. VSManager or so).
  • Reduce kMD5FileSizeLimit from 1MB to e.g. 80 kb (this will force us to recompute the MD5 for the mac bundles, but hopefully nothing else)
    • The main motivation for that is to improve detection speed: If a file has the right name but is big, we waste a lot of time reading 1MB of data and computing its MD5, when it should suffice to look at a few kilobytes at most.
    • Alternatively, change it to 5000 bytes to match the AdvancedDetector. This will affect far more games, so we'd end up with many obsolete MD5 ideas. But since we are pretty good at detecting SCUMM games correctly even without MD5, this shouldn't be so bad. However, some files might not be easily distinguishable with only the first 5000 bytes, need to check on that.
  • AdLib: There seems to be some loop/repeat mechanism in old AdLib sound effects that we do not handle. This thread has some discussion, and recordings. Two good examples are the door opening sound in Indy 3 and Monkey Island 1 (floppy), and the typewriter sound in Indy 3. See [Bug #3830].
  • AdLib: We don't handle (global) music volume changes for AdLib sounds in older SCUMM games. See [Bug #1946].
  • Add support for non-interactive demo of Monkey Island 2. This can be done either by hacking the SCUMM loop and adding code to parse the existing 'demo.rec' file and re-injecting events in the event loop. Another possible approach would be to "specialize" the (future) events recording/playback code to deal with the original SPUTM .rec files.
  • Work around actor (re)color bugs in Indy3 FM-TOWNS / VGA. See http://home.comcast.net/~ervind/ij3misc.html
  • Might also be nice to use the trick they used in AGI/Sarien to add custom recoloring to costumes at least for the EGA games. E.g. in MM, an actor with blue trousers working on a blue ground looks... stealthy :)
  • Add support for the original instrument samples for Indy4 Amiga and MI2 Amiga versions to make sound as per original interpreter. See here.
  • Add support for the high resolution interface used in the Mac version of Indiana Jones and the Last Crusade. See Indiana Jones and the Last Crusade

SCUMM V0

SCUMM NES

SCUMM v7+

  • Optimize the v7/v8 engine for memory-limited platforms such as Dreamcast; see Trac#6008 and Github PR#4693 for more context.

HE games

Bugs Also in the Original