Difference between revisions of "SAGA/TODO"

From ScummVM :: Wiki
Jump to navigation Jump to search
(Fix use of Tracker template)
 
(219 intermediate revisions by 8 users not shown)
Line 1: Line 1:
Russian is allowed here. Можно пиÑ?ать и по-руÑ?Ñ?ки. Я переведу. [sev]
{{Infobox_TODO|
taskname=SAGA Engine TODO|
techcontact=[[SAGA]] Engine Team|
subsystem=Engine|
}}


== Status ==
== Status ==
Game is completable with occasional minor gfx glitches.


== Short-term ToDos ==
=== ITE ===
* Requests
* ITE is completable
** We need to find out where following functions are called:
* The Amiga version is not supported yet
*** SF_cycleColors -- all implementation bits sit in palanim.cpp
* Demo versions:
*** sfPlayVoice -- used in ITE CD
** The older non-interactive demos are supported
* Implement script functions:
** The newer interactive demo versions of the game are supported
** SF_showMap -- this one is called when clicking on map
** The original DOS demo is not supported yet, as it is based on very early version of engine, so many structures are different. Most of the resources have been mapped but they're still untested. The actors and objects list needs to be moved to our code. They've been found but not processed yet
* BUGS
** dragon-maze scene have inproper pal after zero state load
** Protection screen (in Rats maze) is skipped in Floppy version.
** Occasional graphics glitches in ISO rooms. (At least in the Rats maze.) Most notable when entering rounded doors. (3d draw sequence wrong)
** Dialogs get truncated at first encounter with Elara and most noteably in Okk's confess near Boars Castle.
** In Glassmaster's house piece of broken glass (usually an inventory item) is shown on outset room. Clicking on it leaves room immediately, in general Rif and Glassmaster walk over inset room there. As far as I can tell the broken glass object is correctly initialized, which means it really is supposed to be in the Glassmaster's house. Perhaps object drawing should be clipped to the inset scene?
** When loading a savegame made during an "inset" scene where the background scene is not an ISO scene, Rif may show up in both scenes. Moreover with current code options panel is inserted between scenes when load from interface.
** When savegame is loaded from interface script is running for a while and then game switches back to options panel which is completely wrong. This takes part in above bug.


** Puzzle
*** Garbage isn't cleaned up when move Puzzle piece over the interface panel. The original clips the pieces so that they are never drawn over the interface panel.
*** No non-actor speech, so hints aren't visible.
*** Related to above. No CD voices in non-actor speech.


** Ending sequence has zillions of GFX bugs
=== IHNM ===
*** Actors are drawn at Chota's falling. They shouldn't
* The '''demo''' has two parts, an interactive and a non-interactive one. It's playable and probably completable
*** Inventory is visible when Chota's talking and his portrait is drawn on top of it
* The '''full game''' is completable, with some small glitches
*** Celebration scene has inventory when it should be full screen


* Interface
** wrong Option button draw sequence - some dots have inproper color.
** handleConverseUpdate scrolls converse too quickly.
** handleCommandUpdate scrolls inventory too quickly.
** Options dialog functionality.
** "P" should be the hot-key for "Pick Up". In ScummVM, it's "Paws Game" instead.


* DONE - review&remove it
== ToDos ==
** Rif walks backwards at first enounter with Elara and in hardware store at Ferret Village.


== Long-term ToDos ==
 
=== Bugs/misfeatures ===
=== General ===
* ['''ITE'''] There's a slight pause (about a second or less) when a digital music track loops, when using compressed music. This pause does not exist when the music tracks are not compressed
* ['''IHNM/ITE'''] The first frame of animations is not shown when changing scenes. Perhaps a problem with the rendering pipeline. Currently, there's a hack to show it correctly. This issue is apparent in IHNM in Nimdok's chapter, with the mob of prisoners, when the prisoners break loose and take the prison. Note that there is currently a hack that fixes it, but the prisoner animation itself is problematic as well, and will look incorrect if the player hasn't put the jar in the box and tries to leave the prison. In this case, a video is shown, and after the video is done and the game returns back to the scene, the prisoner animation is wrong, because the animation is paused and then resumed, and it doesn't resume from the first frame (thus showing incorrectly)
* ['''IHNM'''] The (dis)appearing compact disk in Ellen's chapter is currently handled with a hack
* ['''IHNM'''] Pathfinding bugs: When a character moves over an exit zone while doing an action, he stops his action and exits the room instead. The known places where this occurs are:
** Chapter 2 (Ellen): When trying to interact with the monitor on the right in the monitors room, Ellen enters the next room instead. The character interacts correctly with the monitor in the IHNM demo, but there the monitor has a corresponding hitzone, which does not exist in the full version. {{Tracker|id=3541}}
** Chapter 4 (Nimdok): When Nimdok is moved to the patient's table in the recovery room, he doesn't stop at the table and enters the back room instead
** A workaround has been installed by commit c825cc41a57b40a9af6ca51a3674b90e5f17e00f. As this fix causes regressions if used globally, it is limited to IHNM and the two rooms (chapter/scene) listed above.
* ['''IHNM'''] Chapter 1 (Gorrister): In the engine room if you pick up the bloody key and re-enter the room another key is there (seems the corresponding hitzone is not disabled correctly)
* ['''IHNM'''] Chapter 2 (Ellen): When Ellen picks up the chalice, the phrase she says "Now I got the cup, but what do I do with it?" is cut off prematurely, as she exits the scene
* ['''IHNM'''] When clicking on Gorrister in the character selection screen, it seems that it doesn't play the entire animation. He should disappear completely (he does in the original), but in ScummVM he doesn't. Not always, at least.
* ['''IHNM'''] When clicking on the right side of a screen in Nimdok's chapter, a masking issue occurs sometimes. Here's a screenshot:
{| border=0 align=center
|[[Image:Scummvm00001pz8.png|thumb|70px|left|frame|Masking bug in Nimdok's chapter]]
|}
 
=== compress_saga tool ===
* ['''IHNM'''] Currently, the SFX.RES file in IHNM cannot be compressed
* ['''ITE'''] MacBinary files are not supported yet (used by the Mac CD Guild version)
 
 
=== Opcodes ===
* ['''ITE'''] We need to find out where following script functions are called:
** SF_cycleColors -- all implementation bits sit in palanim.cpp
** sfPlayVoice -- used in ITE CD
 
 
== Long-term ToDos for the SAGA engine ==
 
=== Optimizations ===
* Make actor animation Event-driven. See FIXME in actor.cpp. Maybe it should be INTERVAL_EVENT
* Make actor animation Event-driven. See FIXME in actor.cpp. Maybe it should be INTERVAL_EVENT
* No script func should use ScriptDataWord directly. All of them should be converted to appropriate data types via getTYPE() functions
* Fix the usage of Rect so that it's more consistent with the rest of ScummVM, e.g. a rectangle covering the entire ITE screen should have right=320 and bottom=200. (eriktorbjorn, partly - mostly? - done)
* Inspect Font module - free memory, GameFontIds <-> FONT_ID
* Walk bug. When announcer puts medallion on Rif he should go backwards instead of turning and walking faced to screen
* In many places RSC_LoadResource() is called but memory is not freed afterwards, i.e. there is a huge leak
* In many places RSC_LoadResource() is called but memory is not freed afterwards, i.e. there is a huge leak
* Optimize screen output. Now we blit whole screen for each frame.
* Optimize screen output. Now we blit whole screen for each frame. Use "dirty rectangles" instead
* Remove use of floating point, especially doubles.
* The text is not always positioned like in the original (can be seen in ITE, but it's more apparent in IHNM, where text that should be on the top of the screen is in the bottom)
 
 
=== MIDI related ===
* When using the original XMIDI music resources, some songs play at the wrong speed. The worst example I've heard of this is the "Elk Fanfare" during the intro. It could be the meta events we don't handle, but at least the tempo event doesn't seem to make any difference. Maybe something in the data header instead...?
* When using the original XMIDI music resources, some songs play at the wrong speed. The worst example I've heard of this is the "Elk Fanfare" during the intro. It could be the meta events we don't handle, but at least the tempo event doesn't seem to make any difference. Maybe something in the data header instead...?
* In the dog's castle at guards' room (scene_change 177 ang go down) subtitles aren't shown. In floppy version there is complete silence both textual and audial. Looks to me as if subtitles are drawn outside the screen. Are the coordinates calculated wrong, or should the text drawing code compensate?
* Sound in old Win demo is all wrong -- either there is some unique sound format or I didn't guess it correctly
* Remove use of floating point, especially doubles.


=== Legacy items ===
 
* Remove any traces of the additional level of abstraction reinherit used
== Bugs in the original games ==
* Remove homerolled high level data structures like stacks that should be provided by ScummVM if they aren't already.
Check about bugs that occured in the original games (some of which have been fixed in ScummVM) in the [[SAGA/Bugs|SAGA Bugs]] page
* OO'ify (blah_mod.h contains public stuff, blah.h private stuff) [almost done]
* Remove use of floating point, especially doubles.

Latest revision as of 16:57, 21 February 2016

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

Status

ITE

  • ITE is completable
  • The Amiga version is not supported yet
  • Demo versions:
    • The older non-interactive demos are supported
    • The newer interactive demo versions of the game are supported
    • The original DOS demo is not supported yet, as it is based on very early version of engine, so many structures are different. Most of the resources have been mapped but they're still untested. The actors and objects list needs to be moved to our code. They've been found but not processed yet


IHNM

  • The demo has two parts, an interactive and a non-interactive one. It's playable and probably completable
  • The full game is completable, with some small glitches


ToDos

General

  • [ITE] There's a slight pause (about a second or less) when a digital music track loops, when using compressed music. This pause does not exist when the music tracks are not compressed
  • [IHNM/ITE] The first frame of animations is not shown when changing scenes. Perhaps a problem with the rendering pipeline. Currently, there's a hack to show it correctly. This issue is apparent in IHNM in Nimdok's chapter, with the mob of prisoners, when the prisoners break loose and take the prison. Note that there is currently a hack that fixes it, but the prisoner animation itself is problematic as well, and will look incorrect if the player hasn't put the jar in the box and tries to leave the prison. In this case, a video is shown, and after the video is done and the game returns back to the scene, the prisoner animation is wrong, because the animation is paused and then resumed, and it doesn't resume from the first frame (thus showing incorrectly)
  • [IHNM] The (dis)appearing compact disk in Ellen's chapter is currently handled with a hack
  • [IHNM] Pathfinding bugs: When a character moves over an exit zone while doing an action, he stops his action and exits the room instead. The known places where this occurs are:
    • Chapter 2 (Ellen): When trying to interact with the monitor on the right in the monitors room, Ellen enters the next room instead. The character interacts correctly with the monitor in the IHNM demo, but there the monitor has a corresponding hitzone, which does not exist in the full version. [Bug #3541]
    • Chapter 4 (Nimdok): When Nimdok is moved to the patient's table in the recovery room, he doesn't stop at the table and enters the back room instead
    • A workaround has been installed by commit c825cc41a57b40a9af6ca51a3674b90e5f17e00f. As this fix causes regressions if used globally, it is limited to IHNM and the two rooms (chapter/scene) listed above.
  • [IHNM] Chapter 1 (Gorrister): In the engine room if you pick up the bloody key and re-enter the room another key is there (seems the corresponding hitzone is not disabled correctly)
  • [IHNM] Chapter 2 (Ellen): When Ellen picks up the chalice, the phrase she says "Now I got the cup, but what do I do with it?" is cut off prematurely, as she exits the scene
  • [IHNM] When clicking on Gorrister in the character selection screen, it seems that it doesn't play the entire animation. He should disappear completely (he does in the original), but in ScummVM he doesn't. Not always, at least.
  • [IHNM] When clicking on the right side of a screen in Nimdok's chapter, a masking issue occurs sometimes. Here's a screenshot:
Masking bug in Nimdok's chapter

compress_saga tool

  • [IHNM] Currently, the SFX.RES file in IHNM cannot be compressed
  • [ITE] MacBinary files are not supported yet (used by the Mac CD Guild version)


Opcodes

  • [ITE] We need to find out where following script functions are called:
    • SF_cycleColors -- all implementation bits sit in palanim.cpp
    • sfPlayVoice -- used in ITE CD


Long-term ToDos for the SAGA engine

Optimizations

  • Make actor animation Event-driven. See FIXME in actor.cpp. Maybe it should be INTERVAL_EVENT
  • In many places RSC_LoadResource() is called but memory is not freed afterwards, i.e. there is a huge leak
  • Optimize screen output. Now we blit whole screen for each frame. Use "dirty rectangles" instead
  • Remove use of floating point, especially doubles.
  • The text is not always positioned like in the original (can be seen in ITE, but it's more apparent in IHNM, where text that should be on the top of the screen is in the bottom)


MIDI related

  • When using the original XMIDI music resources, some songs play at the wrong speed. The worst example I've heard of this is the "Elk Fanfare" during the intro. It could be the meta events we don't handle, but at least the tempo event doesn't seem to make any difference. Maybe something in the data header instead...?


Bugs in the original games

Check about bugs that occured in the original games (some of which have been fixed in ScummVM) in the SAGA Bugs page