Difference between revisions of "Tinsel/TODO"

From ScummVM :: Wiki
Jump to navigation Jump to search
m (consistency change)
(Update DW1 Mac status)
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
== Missing features ==
+
{{Infobox_TODO|
 +
taskname=Tinsel Engine TODO|
 +
techcontact=[[Tinsel]] Engine Team|
 +
subsystem=Engine|
 +
}}
 +
 
 +
== TODO ==
  
 
* 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.
 +
* Check engine code for any 64-bit system incompatible code.
 +
* Check engine code for endian issues, specifically Big Endian issues (most issues should be fixed by now).
  
== Game issues ==
+
* The following (minor) bugs were found in a Discworld 1 playthrough on 2012-05-27. It is suspected, but unconfirmed that they occur in the original interpreter. If so, they should be moved to [[Tinsel/Bugs]].
 
+
** Act 2: After the first trip through L-Space to the library in the past, the game can get stuck when the "Hiding From Thief" script is triggered and Rincewind hides. This appears to be caused by a problem with the Luggage pathfinding to hide and getting stuck. As the mouse is disabled at this point and the game is waiting for the Luggage to hide before the Thief appears, the game is stuck. This only seems to occur when playing the game from a clean new game start to this point i.e. during release playtesting, but it is recoverable as exiting and loading a savegame from just before this does not exhibit the bug and allows the game to continue.
* Perform play testing, look for problems, and then add them all here!
+
** Act 2: The scene outside of the Hideout waiting for the Thief to give the password can glitch badly if the glass is used on the pipe very early. This causes a bad GFX glitch with Ego (Rincewind) jumping to the top left of the screen and then walking down-right until back to normal. This is not game-breaking.
* 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?
+
** Acts 1-3: (Seen in Act 3) At the Livery Stable, the drunk Donkey's "hiccup" bubbles are in the top left of the screen, rather than correctly located over the Donkey's head. Unsure if the original exhibits this.
** 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.
+
** Act 4: Loading Mambo/M16 with coals, only the coughing animation is shown each time, except for the last time when he "roars" and smokes. Though this act's scripts are known to be buggy, IIRC the original interpreter shows an animation of Rincewind pouring the coals into M16 prior to coughing animations...
** 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)
+
** Act 2-4: In the Dark Wood (heading to Nanny Ogg's cottage), there are two trees on the path with a large spider web between. On the first walk, Ego (Rincewind) triggers a "Walking into Spiderweb" animation, and the web is no longer visible on latter visits. However, either on any latter visit or after load, though the web is not visible, the "Walking into Spiderweb" animation plays when Ego walks through this point. This probably occurs in the original.
* 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)
+
** Act 3-4: Pathfinding on the drive at Lady Ramkin's Dragon Sancturary is buggy and can result in Ego (Rincewind) walking through the closed gate/gatepost. This probably occurs in the original.
* 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)
+
* Add fixes/workarounds for bugs present in the original games - See [[Tinsel/Bugs]].
* 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)
+
* Currently, we semi-arbitrarily assigned F5 & F7 to open the load/save dialogs (dreammaster did this to match Lure, which in turn follows the 'Sierra standard'). Maybe we should agree on some standard hotkeys which work in all (most/many) engines?
* 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 [http://www.update.uu.se/~d91tan/ScummVM/dw.004 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 ===
+
== Discworld 1 Mac (demo / full) TODO ==
* In DW1 Alchemist animation glitch (Act II). {{BugTrack|num=2807633}}
+
* Some stray black pixels are shown in some sprites (palette glitch, or an issue with our graphics function implementation)
* In DW1 Luggage animation glitch. {{BugTrack|num=2805881}}
 
* In DW1 Rincewind can walk behind a wall in dining room. {{BugTrack|num=2477254}}
 

Latest revision as of 20:01, 15 December 2012

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

TODO

  • 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.
  • Check engine code for any 64-bit system incompatible code.
  • Check engine code for endian issues, specifically Big Endian issues (most issues should be fixed by now).
  • The following (minor) bugs were found in a Discworld 1 playthrough on 2012-05-27. It is suspected, but unconfirmed that they occur in the original interpreter. If so, they should be moved to Tinsel/Bugs.
    • Act 2: After the first trip through L-Space to the library in the past, the game can get stuck when the "Hiding From Thief" script is triggered and Rincewind hides. This appears to be caused by a problem with the Luggage pathfinding to hide and getting stuck. As the mouse is disabled at this point and the game is waiting for the Luggage to hide before the Thief appears, the game is stuck. This only seems to occur when playing the game from a clean new game start to this point i.e. during release playtesting, but it is recoverable as exiting and loading a savegame from just before this does not exhibit the bug and allows the game to continue.
    • Act 2: The scene outside of the Hideout waiting for the Thief to give the password can glitch badly if the glass is used on the pipe very early. This causes a bad GFX glitch with Ego (Rincewind) jumping to the top left of the screen and then walking down-right until back to normal. This is not game-breaking.
    • Acts 1-3: (Seen in Act 3) At the Livery Stable, the drunk Donkey's "hiccup" bubbles are in the top left of the screen, rather than correctly located over the Donkey's head. Unsure if the original exhibits this.
    • Act 4: Loading Mambo/M16 with coals, only the coughing animation is shown each time, except for the last time when he "roars" and smokes. Though this act's scripts are known to be buggy, IIRC the original interpreter shows an animation of Rincewind pouring the coals into M16 prior to coughing animations...
    • Act 2-4: In the Dark Wood (heading to Nanny Ogg's cottage), there are two trees on the path with a large spider web between. On the first walk, Ego (Rincewind) triggers a "Walking into Spiderweb" animation, and the web is no longer visible on latter visits. However, either on any latter visit or after load, though the web is not visible, the "Walking into Spiderweb" animation plays when Ego walks through this point. This probably occurs in the original.
    • Act 3-4: Pathfinding on the drive at Lady Ramkin's Dragon Sancturary is buggy and can result in Ego (Rincewind) walking through the closed gate/gatepost. This probably occurs in the original.
  • Add fixes/workarounds for bugs present in the original games - See Tinsel/Bugs.
  • Currently, we semi-arbitrarily assigned F5 & F7 to open the load/save dialogs (dreammaster did this to match Lure, which in turn follows the 'Sierra standard'). Maybe we should agree on some standard hotkeys which work in all (most/many) engines?

Discworld 1 Mac (demo / full) TODO

  • Some stray black pixels are shown in some sprites (palette glitch, or an issue with our graphics function implementation)