Difference between revisions of "Tinsel/TODO"

From ScummVM :: Wiki
Jump to navigation Jump to search
m (Added another postponed DW1 bug)
(→‎Missing features: Mention RTL is impossible and sketch possible strategy for correcting this)
Line 2: Line 2:
  
 
* The AdLib music does not sound right. I'm speculating that we would need to use the SAMPLE.* files from the original for Adlib instruments. Here is a description of the format probably used by SAMPLE.BNK:  http://www.descent2.com/ddn/specs/bnk/ . The adlib.diff patch could possibly provide a starting point.
 
* The AdLib music does not sound right. I'm speculating that we would need to use the SAMPLE.* files from the original for Adlib instruments. Here is a description of the format probably used by SAMPLE.BNK:  http://www.descent2.com/ddn/specs/bnk/ . The adlib.diff patch could possibly provide a starting point.
 +
* Return to launcher is currently impossible, because the game uses a ton of global variables to keeps its state. These are not reset when one exits one Tinsel game to the launcher and then starts another Tinsel game (possibly the same). A quick way to fix it would be the following:
 +
*# Identify all global variables (this includes "static" variables hidden inside function bodies).
 +
*# Optionally, remove the inline initialization for all of them. This way, [http://valgrind.org/ Valgrind] can detect if they are used uninitialized, which may help in tracking down problematic vars.
 +
*# Initialize each global variable (or at least each that needs it) in an InitFILENAME() method in each file, which is to be called by the TinselEngine constructor or some other appropriate place.
 +
*# On the long run, turning all these variables into members of to-be-added classes (i.e. objectifying the engine) is preferable, but the above seems to be the easiest and quickest solution.
  
 
== Game issues ==
 
== Game issues ==

Revision as of 08:14, 16 November 2010

Missing features

  • The AdLib music does not sound right. I'm speculating that we would need to use the SAMPLE.* files from the original for Adlib instruments. Here is a description of the format probably used by SAMPLE.BNK: http://www.descent2.com/ddn/specs/bnk/ . The adlib.diff patch could possibly provide a starting point.
  • Return to launcher is currently impossible, because the game uses a ton of global variables to keeps its state. These are not reset when one exits one Tinsel game to the launcher and then starts another Tinsel game (possibly the same). A quick way to fix it would be the following:
    1. Identify all global variables (this includes "static" variables hidden inside function bodies).
    2. Optionally, remove the inline initialization for all of them. This way, Valgrind can detect if they are used uninitialized, which may help in tracking down problematic vars.
    3. Initialize each global variable (or at least each that needs it) in an InitFILENAME() method in each file, which is to be called by the TinselEngine constructor or some other appropriate place.
    4. On the long run, turning all these variables into members of to-be-added classes (i.e. objectifying the engine) is preferable, but the above seems to be the easiest and quickest solution.

Game issues

  • Perform play testing, look for problems, and then add them all here!
  • The scene where Rincewind finds the dragon's loot at the end of act 1 is severely bugged. Rincewind and the dragon's treasure constantly disappear and reappear, and Rincewind's animations constantly restart (e.g. the animation where he enters the scene, the animation where he stuffs the treasure into the trunk and so on). I do not remember this bug from earlier revisions, perhaps it is a regression from the latest ProcessSleep removals?
    • Update: The buggy animation is directly related to the subtitles speed. If the subtitles speed slider is moved all the way to the left (fast subtitles/no delay), the scene is shown correctly.
    • Subtitle speed seems to cause other glitches much earlier in the game, e.g. at the very beginning, when Rincewind gets out of his bed. (These, or at least something similar, happen in the original interpreter)
  • After finishing the game, after the ending animation and the credits screen, we are taken back to the title screen (where it says "Press any key to start"). If the game is started again, its state has not been reset so all the actors are in the state they were in act 3/4 - i.e. the luggage is awake, the dean is missing, the sleazy guy in prison and so on. (this happens in the original interpreter)
  • When you ask the Lecturer of Recent Runes (in the Dining Room) about the librarian, the subtitles say "No, no, no." while the voice-over says "Did you get the number of that donkey cart?" It is probably the sample that is wrong, not the script, since the sample IDs are played in order. (Only in English V2?) (this happens in the original interpreter)
  • When examining the trapdoor in the broken drum, its description ("Hmmmm... that characteristic scent of turpentine, crushed cockroaches and recycled beer!") does not fit on screen. (this happens in the original interpreter)
  • After opening/closing the Luggage's inventory, the frame around Rincewind's inventory is sometimes drawn wrong. I've only seen this happen after learning how to pick pockets. You can try this savegame, for English v2. (this happens in the original interpreter)

Other stuff

  • Right now, we semi-arbitrarily assigned F5 & F7 to open the load/save dialogs (dreammaster did that to match Lure, which in turn follows the 'Sierra standard'). I (Fingolfin) would prefer if we could agree on some standard hotkeys which work in all (most/many) engines...

Bugs Also in the Original

In the following you will find a number of bugs which actually already occur when using the original interpreter / .EXE. That is, those errors are bugs in the games themselves, not in ScummVM. Still, we sometimes are able to implement workarounds, meaning ScummVM at times works better than the original ;).

Note that neither of these lists is complete.

Not Yet Fixed