Open main menu

Difference between revisions of "SCI/TODO"

4,397 bytes added ,  14:11, 23 September 2011
Added a lot of missing items to the TODO
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 ==
=== Graphics ===


=== 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 ==
'''This list is VERY incomplete, SCI2-SCI2.1 support is still in very early stages'''


=== Graphics ===
=== Graphics ===
* Proper support for text bitmaps
* Finish support for Robot (RBT) videos
* 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
(TODO)
* 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


=== Sound ===
==== SCI2.1 ====
(TODO)
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 ===
(TODO)
* 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 ==


'''Support for SCI3 is non-existent'''
'''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 the new SCI3 scripts
* 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




1,502

edits