Open main menu

Difference between revisions of "SAGA/TODO"

3,965 bytes removed ,  01:30, 13 August 2007
Sprite bugs in IHNM are fixed now
m (Typo)
(Sprite bugs in IHNM are fixed now)
Line 12: Line 12:
=== IHNM ===
=== IHNM ===
* The '''demo''' has two parts, an interactive and a non-interactive one. It's playable and probably completable
* The '''demo''' has two parts, an interactive and a non-interactive one. It's playable and probably completable
** The door of the sarcophagus that Ellen enters in the non-interactive part is not rendered at all (it's an object with multiple frames, which is currently problematic). Same bug exists in the interactive part, in the sarcophagus with the mummy. Refer to the [[SAGA/TODO#Sprite_bugs|sprite bugs]] section below




* The '''full game''' is working, but there is an issue that causes problems with objects with multiple sprites, preventing it from being completable. Refer to the [[SAGA/TODO#Sprite_bugs|sprite bugs]] section below. Status:  
* The '''full game''' is working with some glitches. It needs further testing. Status:  
** '''Chapters 1-4''' (Gorrister, Ellen, Benny and Nimdok) are completable with full points but there are some occasional glitches
** '''Chapters 1-4''' (Gorrister, Ellen, Benny and Nimdok) are completable with full points but there are some occasional glitches
** '''Chapter 5''' (Ted): Not completable, it's impossible to interact with the maid's door (the closed door is not drawn), therefore it's not possible to tell Surgat to unlock it and move further
** '''Chapter 5''' (Ted): Needs testing
** '''Chapter 6''' (Endgame): Not possible to test yet
** '''Chapter 6''' (Endgame): Not possible to test yet




== IHNM ToDos ==
== IHNM ToDos ==
=== Sprite bugs ===
['''Important''']
These bugs occur because currently ScummVM doesn't handle properly objects that have more than 1 frame. In all the problematic cases, Actor::getSpriteParams throws an invalid frameNumber warning about the problematic object. Most of these objects are doors.
There are two main lists of sprites (_inventorySprites and _mainSprites), plus a list of objects, containing information on all the objects used. In the case of the problematic objects that have more than 1 frame, the object information itself remains the same, therefore we're not interested in the object information entry. I've checked the object flags, but saw no difference (they're 0). Perhaps the interactbits part is different? The incorrect sprite ID requested are always bigger than the largest ID in the _mainSprites list, so perhaps the correct approach would be to load the object's sprite list (using the sprite's resource ID) and append it to the end of the _mainSprites list, in a manner similar to what is done with actors (using loadActorSpriteList()) inside getSpriteParams().
Also, it seems that the original game does a slightly different calculation of frame IDs:
cseg01:0001446D                mov    edx, mainSprites
cseg01:00014473                xor    ebx, ebx
cseg01:00014475                mov    ecx, [eax+GameObject.figID]
cseg01:00014478                mov    bx, [edx+xSpriteSet.count]
cseg01:0001447B                cmp    ebx, ecx
cseg01:0001447D                jle    short loc_1448B
cseg01:0001447F                mov    eax, ecx
cseg01:00014481                '''mov    eax, [edx+eax*4+2]'''
cseg01:00014485                '''add    eax, edx'''
Initially, I thought of adding something like this to Actor::getSpriteParams (after line 1787 in actor.cpp, inside the if case):
  if (spriteList->spriteCount <= frameNumber) {
    _vm->_sprite->loadList(frameNumber, _vm->_sprite->_mainSprites);
    return true;
  }
The sprite list is loaded, but it looks to be incorrect, cause then ScummVM stops in Sprite::decodeRLEBuffer with the following error:
'''Sprite::decodeRLEBuffer outLength > _decodeBufLen!'''
Known locations where this bug manifests:
* Chapter 1 (Gorrister): The hatch inside the zeppelin is not drawn correctly
* Chapter 1 (Gorrister): Repeatedly looking at the cages in the zeppelin's engine room while a caged animal is shown causes ScummVM to crash. During the animal torture animation, Actor::getSpriteParams keeps throwing warnings
* Chapter 1 (Gorrister): When flushing the toilet, the door is moved to a weird spot (looks like a line above the toilet stall)
* Chapter 1 (Gorrister): Actor::getSpriteParams keeps throwing warnings when walking to the upper floor, in the scene with the balloons and the stitching/opening
* Chapter 2 (Ellen): When pushing/using any monitor, after the cutscene the monitor doesn't show anything on its screen
* Chapter 2 (Ellen): The animation shown when the sarcophagus opens and closes is wrong. This occurs in the IHNM demo as well
* Chapter 4 (Nimdok): When pushing the vent in the patient recovery room, the vent sprite is not updated (but the vent opens normally)
* Chapter 5 (Ted): ['''Important'''] It's not possible to interact with the maid's door, as the closed door is not drawn at all. Therefore, it's not possible to tell Surgat to unlock it




Line 75: Line 31:
** Some colors are wrong
** Some colors are wrong
** The save game scrollbar is wrong
** The save game scrollbar is wrong
* Chapter 1 (Gorrister): Repeatedly looking at the cages in the zeppelin's engine room while a caged animal is shown causes ScummVM to crash




Line 85: Line 42:


=== Pathfinding bugs ===
=== Pathfinding bugs ===
* Chapter 2 (Ellen): When trying to interact with the monitor on the right in the monitors room, Ellen enters the next room instead. This seems to be caused because the monitor object is problematic (could this be related to the sprite bugs above?). 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
* 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




1,489

edits