Open main menu

Difference between revisions of "SCI/TODO"

1,851 bytes added ,  12:43, 3 June 2010
Added information on the voice mapping and channel remapping TODOs, based on a discussion we had with waltervn concerning these, plus added two more missing features/TODOs
(Resolved the stack underflow back in QFG1VGA)
(Added information on the voice mapping and channel remapping TODOs, based on a discussion we had with waltervn concerning these, plus added two more missing features/TODOs)
Line 10: Line 10:


=== Sound ===
=== Sound ===
* Channel remapping
* Channel remapping. Songs that are played simultaneously might be using the same MIDI channels. E.g. in LSL1VGA, in the copy protection screen, there's the Larry music and a "pling" sound when a question is answered. Currently, the pling sound affects the instruments of the Larry song. Let's say that the Larry song is playing and it's using channel 1 to 5. Then the 'pling' effect is played, it uses channel 4. The instrument change in that song will change channel 4, and this will also affect the Larry song. In order to avoid this, the pling could be remapped to channel 6. We need some sort of lookup map, so that we redirect notes directed to channel X to go to channel Y, and we would need one such map per song. Ideally, we should find out what algorithm Sierra uses for this. We could try out own channel remapping implementation first, and then if we need it we could See what sierra does sometime in the future
* Voice mapping
* Voice mapping. This is used by all SCI games to assign hardware voices to midi channels in the Adlib and FB-01 drivers. So, for example, if a song tries to play more than 9 notes at the same time, we need to stop an earlier note. We currently do this round-robin, while we should be respecting voice assignments. If a game sets 3 voices for piano, we should not take one away unless 4 piano notes are played, then it's OK to stop one piano note. Currently if a song were to use 5 notes at once we would just play them all, even if that midi channel was set to use 2 voices, and those 3 extra notes might stop more important notes, e.g. in the melody. This has been implemented for SCI0, but it's not hooked up to Adlib at the moment. Also we're not sure if the initial voice assignments are in the MIDI stream in SCI1 (they're not in SCI0). Of course, channel remapping has an effect on this too
* Amiga (SCI01/1) and Mac (SCI1/1.1) sound support ([[SCI/Specifications/Sound/SCI0 Resource Format#Amiga Sound (SCI1)/Macintosh Sound (SCI1/1.1)|same format]])
* Amiga (SCI01/1) and Mac (SCI1/1.1) sound support ([[SCI/Specifications/Sound/SCI0 Resource Format#Amiga Sound (SCI1)/Macintosh Sound (SCI1/1.1)|same format]])
* Proper song volume support, currently volume is reset to max whenever a new song is loaded
* Proper song volume support, currently volume is reset to max whenever a new song is loaded
* kDoAudio subops 12 and 13 (used in Freddy Pharkas: subop 12 is called while people are talking and subop 13 is called while the narrator's voice is heard)
* kDoAudio subops 12 and 13 (used in Freddy Pharkas: subop 12 is called while people are talking and subop 13 is called while the narrator's voice is heard)
* Implement a CMS driver


=== Parser ===
=== Parser ===
Line 80: Line 81:


=== Sound ===
=== Sound ===
* KQ6 floppy: In the intro after cassima speaks, alexander calls her, but that sample is stopped too early
* The Tandy/PCjr driver needs more work
* KQ6 floppy: In the intro after Cassima speaks, Alexander calls her, but that sample is stopped too early


=== VM ===
=== VM ===
1,489

edits