Difference between revisions of "SAGA/TODO"

From ScummVM :: Wiki
Jump to navigation Jump to search
m (typos)
(Fix use of Tracker template)
 
(154 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{Infobox_TODO|
taskname=SAGA Engine TODO|
techcontact=[[SAGA]] Engine Team|
subsystem=Engine|
}}
== Status ==
== Status ==
* '''ITE''' is completable with rare minor gfx glitches.<br>
* '''IHNM''' shows complete intro. Also, some chapters are partially working, but it's not possible to return to the character selection screen once a chapter is completed (or abruptly stopped by a wrong player option) and ScummVM exits instead.
** Chapter 1 (Gorrister): Completable with full points but has some glitches
** Chapter 2 (Ellen): Not fully tested
** Chapter 3 (Benny): Not fully tested
** Chapter 4 (Nimdok): Not completable, it's impossible to use the scalpel with the doctor in the surgery room
** Chapter 5 (Ted): Not completable, it's impossible to interact with the icon in the chapel or the books in the room of the witch
** Chapter 6 (Endgame): Not possible to test yet


== IHNM ToDos ==
=== 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


=== General ===
* ['''Important'''] Implement sfScriptGotoScene differences for IHNM, which will allow to go back to the character selection screen once a chapter is complete
* Implement several missing script functions (e.g. sfScriptFade, sfScriptStartVideo, sfScriptReturnFromVideo, sfScriptEndVideo etc) and functions (e.g. restoreScreen)
* Conversation options are not shown correctly (wrong colors). Also, if a conversation option is selected, the character does not say it and we immediately jump to the other character's reply instead
* Psychic Profile display. Underlying variables seem to be deciphered.
* Actor walking speed is not correct when exiting from rooms
* After chapter selection AM has intro speech. After the speech, the actor is incorrectly shown for a brief moment. In the original, the screen colors get garbled momentarily, so this seems to be an issue with the scripts in the original game, albeit it affects ScummVM in a different manner
* After the introduction, during the character selection screen, 5 warnings are thrown (Frame List ID = 0 for actor index 0,1,2,3,9). This happens at other places, too
* It seems that depth image isn't correct. Different format?
* Options panel shows up without textures on the buttons and some options are not functioning yet (e.g. the load/save dialogs)
* Voices volume isn't implemented yet
* Implement saving and loading
* The way that verbs are assigned internally is ugly and needs to be cleaned up
* Characters can get stuck in environmental objects (might be because of mistakes in actor animation). E.g. Gorrister can get stuck in the corridor railings
* Only numbers 1-4 on the keyboard are working to select a converse option, the rest are only selectable with the mouse
* When the spiritual barometer changes, the character's portrait changes to "happy" or "sad", but the background color is updated after moving to another screen
* Actor::getActorFrameRange keeps throwing wrong frametypes 0x0 and 0x2 for actorId 0x2000 and 0x2001 during character selection
* In-game animations are not shown, because of the unimplemented sfScriptStartVideo(), sfScriptEndVideo()  and sfScriptReturnFromVideo() opcodes


=== Chapter 1: Gorrister ===
=== IHNM ===
* When flushing the toilet, the door is moved to a weird spot (looks like a line above the toilet stall)
* The '''demo''' has two parts, an interactive and a non-interactive one. It's playable and probably completable
* The hatch inside the zeppelin is not drawn correctly
* The '''full game''' is completable, with some small glitches
* When trying to climb up the stairs to the second floor of the zeppelin with Gorrister, the game tries to disable the hitzone of the tear at the end of the corridor, however the hitzone returned is wrong. Currently, the hitzone is not disabled using a hack in the code, which makes the staircase work correctly in that room, thus preventing a crash.
* Some in-game animations are not shown in ScummVM (look at the general TODOs section)
** in the screen just outside the tear, where Gorrister's heart is, when trying to pick up the heart with the rope placed, there should be an animation where Gorrister is picking up his heart, which is not shown in ScummVM
** when using the knife on an air bag, there should be an animation where the bag is losing gas
** the zeppelin landing animation is not shown
** the zeppelin takeoff animation is not shown
** the animation of Gorrister killing Max in the honky tonk is not shown
* sfPlaceActor throws a "Wrong frameOffset 0x1" warning when using the knife to scare the mice away in the kitchen
* Using the jukebox in the honky-tonk changes "use" to "use with". Perhaps an issue with whichObject()
* Looking at the cages in the zeppelin's engine room can cause ScummVM to crash
* If you look outside the porthole in the room where the gun is (Gorrister's chapter, exit starting room, go left and enter the right door), the screen will change, showing the ship's engine. However, after the animation is complete, the scene diesn't update properly to show the room again, and it shows the last frame of the engine animation instead. This occurs because of the unimplemented parts of Anim::returnFromCutaway(), in particular the missing restoreScene() function
* When doing a good deed which raises the spiritual barometer with Gorrister (e.g. when Gorrister is wiping his hands on the tablecloth), the music should change to a more "light" theme. This is not happening in ScummVM


=== Chapter 2: Ellen ===
* Ellen's walking animation is not showing at all
* When Ellen is selected at the character selection screen and while AM is talking to her, she should have a different expression in her portrait, which changes once she gets zapped outside the pyramid. Her portrait is static in ScummVM


=== Chapter 3: Benny ===
== ToDos ==
* Pathfinding algorithm bugs: When walking with Benny from the forest to the caves, the actor can't find the path properly. Also, when clicking on a cave entrance with Ben, he starts walking to the cave and then moves a step back, thus he can't enter it. If the user clicks on the lower left of each cave (or other spots around the cave entrance), Ben enters the cave correctly


=== Chapter 4: Nimdok ===
* ['''Important'''] It's not possible to use the scalpel with the doctor in the surgery room. This makes it impossible to complete Nimdok's chapter
* When Nimdok enters the hospital at the beginning of the chapter and talks with the other doctor, the text of their dialog goes off screen
* Some in-game animations are not shown in ScummVM (look at the general TODOs section)
** The animation of the golem killing Nimdok is not shown


=== Chapter 5: Ted ===  
=== General ===
* ['''Important'''] It's not possible to interact with the icon in the chapel (e.g look at it, take it). This makes it impossible to complete Ted's chapter
* ['''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
* ['''Important'''] When trying to interact with the books in the room of the witch, Ted turns around and moves out of the room. This makes it impossible to complete Ted's chapter. This seems to be related to the (now closed) ITE bug #1328045. Perhaps a walk with the pathfinding algorithm
* ['''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)
* When a wrong monitor is selected with Ted, normally the door closes, screen goes black and AM says "Oh oh oh sorry Ted, try again", and we're taken to the character selection screen again. ScummVM just exits, because this case is currently not handled by sfScriptGotoScene yet
* ['''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]]
|}


=== Chapter 6: Endgame ===  
=== compress_saga tool ===
[Not possible to test yet]
* ['''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)


=== Original engine bugs ===
* When loading games, the music played is the one that was playing from the scene where the game was loaded. For example, if a saved game is loaded from the character selection screen, which was made on chapter X, then once the game is loaded, the music from the character selection screen is still played


 
=== Opcodes ===
== ITE ToDos ==
* ['''ITE'''] We need to find out where following script functions are called:
* Amiga versions of the game would be nice to support. Though Amiga porter which once appeared at our forums doesn't reply to sev's letters. Maybe another dev should try that?
* Original DOS demo. It is based on very early version of engine, so many structures are different. I've mapped most of resources but they stay untested.
** Move actors and objects list to our code. I've found them but not yet processed.
 
=== Requests ===
* We need to find out where following functions are called:
** SF_cycleColors -- all implementation bits sit in palanim.cpp
** SF_cycleColors -- all implementation bits sit in palanim.cpp
** sfPlayVoice -- used in ITE CD
** sfPlayVoice -- used in ITE CD
* There are currently two versions of ITE that are not uniquely identified: the Wyrmkeep "Win32 CD Version" and the original "DOS/Win32 CD Version". When adding games, the user gets to do the disambiguation, but what happens with the detection when playing the game?


=== BUGS ===
* Occasional graphics glitches in ISO rooms. (At least in the Rats maze.) Most notable when entering rounded doors. (3d draw sequence is wrong)
* pressing ESC during making fire - breaks anim sequence


=== Interface ===
== Long-term ToDos for the SAGA engine ==
* wrong Option button draw sequence - some dots have inproper color.
* handleConverseUpdate scrolls converse too quickly.
* handleCommandUpdate scrolls inventory too quickly.


=== Original engine bugs ===
=== Optimizations ===
* Actors are drawn (some pixels above status bar) at Chota's falling.  - Original engine draws its too - so it is not our bug
* 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)




== Long-term ToDos ==
=== MIDI related ===
=== Bugs/misfeatures ===
* Make actor animation Event-driven. See FIXME in actor.cpp. Maybe it should be INTERVAL_EVENT
* Inspect Font module - free memory, GameFontIds <-> FONT_ID
* 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.
* 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...?
* Remove use of floating point, especially doubles.
 
 
== 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|SAGA Bugs]] page

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