1,502
edits
m (Add TODO Infobox.) |
(Added a lot of missing items to the TODO) |
||
Line 8: | Line 8: | ||
== SCI0-SCI1.1 missing features == | == SCI0-SCI1.1 missing features == | ||
=== Sound === | === Sound === | ||
Line 19: | Line 17: | ||
* The algorithm that decides what does and doesn't get played is different from SSCI, when running out of channels | * The algorithm that decides what does and doesn't get played is different from SSCI, when running out of channels | ||
* The code that rewinds music should be reconsidered, | * The code that rewinds music should be reconsidered, | ||
=== Kernel functions === | |||
Implement the following: | |||
* kMergePoly: quite rare function, used to merge polygons. Used for example in QFG1VGA when killing a monster, to prevent the player from walking over the dead body. Currently a stub, but not very important | |||
=== Mac-specific === | === Mac-specific === | ||
Line 30: | Line 32: | ||
== SCI2-SCI2.1 missing features == | == SCI2-SCI2.1 missing features == | ||
=== Graphics === | === Graphics === | ||
* | * Finish support for Robot (RBT) videos | ||
** Fix sound "hiccups" | |||
* kRemapColors used for transparency | ** Fix scaling (e.g. in the Phantasmagoria logo video) | ||
** Other issues(?) | |||
* kRemapColors, mainly used for transparency and adapting sprite colors (e.g. for nightfall scenes) | |||
** Also used in QFG4 demo (SCI1.1), but mainly a SCI32 item | ** Also used in QFG4 demo (SCI1.1), but mainly a SCI32 item | ||
( | * Check the behavior of the plane/item graphics code against dissassembly (more information below) | ||
=== Kernel functions === | |||
==== SCI2 ==== | |||
* kAddPlane/kDeletePlane/kUpdatePlane ("planes" = parts of a picture) | |||
** These work, but they haven't been checked against dissassembly (might be totally different) | |||
** In Phantasmagoria, a lot of the UI widgets are off. Likely culprits are these functions, or the ScreenItem functions below | |||
* kAddScreenItem/kDeleteScreenitem/kUpdateScreenItem | |||
** Add support for text bitmaps (kCreateTextBitmap - below) | |||
** These work, but they haven't been checked against dissassembly (might be totally different) | |||
** In Phantasmagoria, a lot of the UI widgets are off. Likely culprits are these functions, or the Plane functions above | |||
* kCreateTextBitmap: Proper support for text bitmaps - create text bitmaps from strings and use them instead of the original strings | |||
* kFrameOut: Works, but hasn't been checked against dissassembly (might be totally different) | |||
Implement the following: | |||
* DisposeTextBitmap (when kCreateTextBitmap is done properly) | |||
* kRepaintPlane | |||
* kTextWidth: Add the SCI32 equivalent | |||
* kCantBeHere: Add the SCI32 equivalent | |||
* kSetShowStyle (used to programmatically mass set properties of the target plane) | |||
* kSetScroll | |||
* kAddMagnify/kDeleteMagnify (most probably similar to the SCI1.1 functions. We need a test case) | |||
* kEditText | |||
* kPalCycle (might be similar to kPaletteAnimate) | |||
* kObjectIntersect - used in QFG4 floppy (perhaps similar to kMergePoly) | |||
* kMakeSaveCatName - used in the Save/Load dialog of GK1CD (SRDialog, script 64990) | |||
* kMakeSaveFileName - used in the Save/Load dialog of GK1CD (SRDialog, script 64990) | |||
* kScrollWindow: turned to Dummy in SCI3, perhaps unused(?) | |||
* kVibrateMouse (used in QFG4 floppy): turned to Dummy in SCI3, perhaps unused(?) | |||
* kDoAudio | |||
** Find out what the 2 extra params are used for in kSciAudioPlay | |||
** Implement subop 10 (was kSciAudioCD) - we need a test case | |||
* kPalVary: find out where subop 8 (and 7, perhaps) is used and what it does | |||
=== | ==== SCI2.1 ==== | ||
( | Implement the following: | ||
* Bitmap: Used to preload bitmaps. In SCI3, it's also used to show them (e.g. the popup menus in LSL7) | |||
* MovePlaneItems - used by SQ6 to scroll through the inventory via the up/down buttons | |||
* AddLine - used by Torin's Passage to highlight the chapter buttons | |||
* DeleteLine - used by Torin's Passage to delete the highlight from the chapter buttons | |||
* UpdateLine - used by LSL6 hires | |||
* SetPalStyleRange - 2 integer parameters, start and end. All styles from start-end (inclusive) are set to 0 | |||
* NewRoom - 1 integer parameter, the current room number. Probably peforms initializations | |||
* MorphOn - used by SQ6, script 900, the datacorder reprogramming puzzle (from room 270) | |||
* SetHotRectangles - used by Phantasmagoria 1 | |||
* kAddPicAt | |||
* Finish off kPlayVMD | |||
* Finish off kRobot | |||
* Add the rest of the kText subops (perhaps kTextColors and kTextFonts) | |||
* Implement the kSave() timer callback subop (case 8). Check for any other missing subops | |||
* Implement kList subops kAddBefore, kMoveToFront, kMoveToEnd | |||
* kGetWindowsOption/kSetWindowsOption (Windows only): check for subops other than 0 (title bar on/off in Phantasmagoria) | |||
* kWinHelp (Windows only): Opens a Windows .hlp file. Currently shows a popup info box specifying the file to open externally | |||
* kDoSoundPlay: find out what the extra integer param is for | |||
* Phantasmagoria currently crashes when trying to load save slots. Likely culprits are kFileIOReadByte/kFileIOReadWord (or it could be something entirely different) | |||
=== VM === | === VM === | ||
( | * Future TODO: Merge the SCI0-SCI1.1 and SCI2-SCI2.1 string/array handling code, if possible | ||
* kArray/kString: Find out why later SCI2.1 versions call these interchangeably (kString on arrays and vice versa) | |||
== SCI3 missing features == | == SCI3 missing features == | ||
''' | '''This list is VERY incomplete, SCI3 support is still in very early stages''' | ||
=== Graphics === | === Graphics === | ||
Line 57: | Line 111: | ||
=== Sound === | === Sound === | ||
(TODO) | (TODO) | ||
=== Kernel Functions === | |||
Implement the following: | |||
* kPlayDuck | |||
* kMessageBox | |||
* kMinimize | |||
=== VM === | === VM === | ||
* Support for | * Support for scripts larger than 64kb. Previous SCI versions used a 16-bit memory addressing scheme, which has been changed to a 32-bit one in SCI3. There are two ways of doing this: either switch to a 32-bit memory addressing scheme (a fairly big change), or create an overlaying mechanism for such scripts | ||
edits