Difference between revisions of "AGOS/TODO"

From ScummVM :: Wiki
Jump to navigation Jump to search
(Add puzzle pack issues)
(Add initial issues for earlier games and update)
Line 1: Line 1:
 +
== General ==
 +
* Add support for Protracker MOD format, used for music in Amiga and AtariST versions.
 +
* Improve support for conversion of planar graphics, used by Amiga and AtariST versions.
 +
 +
== Elvira 1 ==
 +
* Add support for mouse cursors
 +
* Add support for picking up and using items, to progress further.
 +
* Fix mouse cursor often been disabled, after been caught by guard.
 +
* Fix attempts to load zone zero, which doesn't exist.
 +
* And much more...
 +
 +
== Elvira 2 ==
 +
* Add support for mouse cursors
 +
* Add support for picking up and using items, to progress further.
 +
* And much more...
 +
 +
== Waxworks ==
 +
* Add support for mouse cursors
 +
* Add support for menus, to allow scenes to be entered.
 +
* Fix display of text animations.
 +
* And much more...
 +
 
== Simon the Sorcerer 1 ==
 
== Simon the Sorcerer 1 ==
* Add support for decoding graphics in the Amiga verisons
 
* Add support for Protracker MOD format, used for music in Amiga versions.
 
 
* Add support for the mt_fb.ibk Adlib instrument bank in DOS versions.
 
* Add support for the mt_fb.ibk Adlib instrument bank in DOS versions.
 
* Fix chest disappearing in Swampling's house in DOS versions.
 
* Fix chest disappearing in Swampling's house in DOS versions.

Revision as of 06:46, 14 October 2006

General

  • Add support for Protracker MOD format, used for music in Amiga and AtariST versions.
  • Improve support for conversion of planar graphics, used by Amiga and AtariST versions.

Elvira 1

  • Add support for mouse cursors
  • Add support for picking up and using items, to progress further.
  • Fix mouse cursor often been disabled, after been caught by guard.
  • Fix attempts to load zone zero, which doesn't exist.
  • And much more...

Elvira 2

  • Add support for mouse cursors
  • Add support for picking up and using items, to progress further.
  • And much more...

Waxworks

  • Add support for mouse cursors
  • Add support for menus, to allow scenes to be entered.
  • Fix display of text animations.
  • And much more...

Simon the Sorcerer 1

  • Add support for the mt_fb.ibk Adlib instrument bank in DOS versions.
  • Fix chest disappearing in Swampling's house in DOS versions.

Simon the Sorcerer 2

  • Add support for language files used by Amiga and Macintosh verisons.
  • Add support for music fade out in vc62_fastFadeOut() when changing locations.
  • Fix missing trails during lion ride to Goblin Camp in non-English versions.

Feeble Files

  • Add support for resuming position of last OmniTV video, after changing rooms.
  • Work around the scrolling glitch when repair man comes to fix the car, which occurs in original too. A race issue, the screen scrolling should have completed, before the video is played.
  • Fix occasional glitch when scrolling text in Oracle interface. See this series of screenshots from the DIRECTIVE CHARTER article. (It happens in other places as well.) This is actually not a bug in the Simon engine, but rather a problem with the automatic calculation of dirty rects that we use to speed up full screen updates in some engines. Maybe the checksum algorithm is more likely to fail when there are only two colours involved?

Some observations about the missing line breaks

(This text is kept for historical purposes. The line break bug should be fixed now.)

In the article titled THE COMPANY, only the first line is broken. The subsequent lines are not. The reason for this can be found in showmessage_print_char(): Every time an end of word (character codes 0, 10 or 32) appears, the function will check if the currently buffered word fits on the line or not:

    } else if (chr == 0 || chr == ' ' || chr == 10) {
        uint count = (getGameType() == GType_FF) ? _printCharPixelCount + 1 : _printCharPixelCount;
        if (_printCharMaxPos - _printCharCurPos >= count) {
            _printCharCurPos += _printCharPixelCount;

The test checks if the remaining space on the line is larger than the length of the buffered word, i.e. if the test succeeds the word will fit. In this case, _printCharMaxPos is always 360.

At the first line break, _printCharCurPos is 325 and count is 40. The word does not fit, and therefore the line is broken.

Where the second line break should be, _printCharCurPos is 366 and count is 25. At first glance it looks like the test will fail, because the remaining space is negative. However, we're using unsigned variables, so what at first apperas to be a small negative value is actually a large positive one.

So how did this happen? Shouldn't the line have been broken at the previous word? No, in fact it should not. At that point, _printCharCurPos is 327 and count is 32. The word fits, just barely, and _printCharCurPos is increased to 358. Problem is, the line break check is triggered, here as almost always, by a space. And in that case the width of that space will also be added to _printCharCurPos, bringing it up to 366.

There are several possible fixes. A few that come to mind:

  • Change the variables from unsigned to signed.
  • Check for overflow before adding the width of the space. (This may be what it's trying to do already by checking if _printCharCurPos == _printCharMaxPos.)
  • Rewrite the test so that signedness doesn't matter, e.g. if (_printCharCurPos + count < _printCharMaxPos)

Oddly enough, the original does use unsigned variables, and take none of these precautions. Is it possible that the compiler Adventure Soft used behaved differently (buggily?), or are we missing some subtle detail...?

Puzzle Pack

  • Add support for displaying, entering, loading and saving high scores in each game.

Demon In My Pocket

  • Add support for sound effects when idle.

Swampy Adventures

  • Add support for entering nickname at start of the game.
  • Add support for displaying rollover text, which displays explanation when clicking on items.