Since Novus pointed it out, I decided to play around with DOSBox's built-in debugger, and using a HEAVY_DEBUG build, I obtained the following (excerpt from the debugger):
Code:
462876: EXEC:Execute sc3.EXE 0
462876: FILES:file open command 0 file sc3.EXE
464196: FILES:file open command 0 file C:\SC3.EXE
464407: FILES:file open command 0 file C:\SC3.ETX
465760: BIOS:INT15:Unknown call BFDE
465811: DOSMISC:DOS:Multiplex Unhandled call 1687
465834: BIOS:INT15:Unknown call BFDE
470291: BIOS:INT15:Unknown call BF01
470349: BIOS:INT15:Function 0x88 Remaining 0000 kb
1503533: FILES:file open command 0 file C:\SC3.EXE
9000353: FILES:file open command 0 file LEGEND.INI
9023854: PIT:PIT 0 Timer at 18.21 Hz mode 3
9190030: PIT:PIT 0 Timer at 99.99 Hz mode 3
9192092: FILES:Special file open command 10 file AUTORUN.LOC
9222210: FILES:file open command 0 file MDI.INI
9248830: FILES:file open command 0 file MPU401.MDI
9258415: FILES:file open command 0 file MPU401.MDI
9266178: FILES:file open command 0 file MPU401.MDI
9281409: MISC:MPU-401:Reset FF
9281907: MISC:MPU-401:Set UART mode 3F
10903521: PIT:PIT 0 Timer at 120.00 Hz mode 3
10904754: FILES:file open command 0 file GM.XMI
10992615: FILES:file open command 0 file DIG.INI
11016330: FILES:file open command 0 file SB16.DIG
11026586: FILES:file open command 0 file SB16.DIG
11035030: FILES:file open command 0 file SB16.DIG
11051512: SBLASTER:DSP:Reset
11051718: PIC:1 mask EC
11051722: PIC:0 mask 78
11052043: SBLASTER:Short transfer scheduling IRQ in 0.023 milliseconds
11052043: SBLASTER:DMA unmasked,starting output, auto 0 block 1
11052043: SBLASTER:DMA Transfer:16-bits PCM Stereo Single-Cycle freq 22050 rate 44100 size 1
11052069: IO:Writing 04 to port 00ED
11052268: SBLASTER:Single cycle transfer ended
11052268: SBLASTER:Raising IRQ
11136859: PIC:1 mask EC
11136863: PIC:0 mask F8
11140162: PIC:1 mask EC
11140166: PIC:0 mask 78
11140181: SBLASTER:MIXER:Read from unhandled index 32
11140187: SBLASTER:MIXER:Read from unhandled index 33
11140205: SBLASTER:MIXER:Read from unhandled index 32
11140208: SBLASTER:MIXER:Write 0 to unhandled index 32
11140213: SBLASTER:MIXER:Read from unhandled index 33
11140216: SBLASTER:MIXER:Write 0 to unhandled index 33
11143464: PIT:PIT 0 Timer at 200.00 Hz mode 3
11155239: FILES:file open command 0 file STAR001.VOC
11187488: INT10:Function 6F not supported
11188096: INT10:Function 5F not supported
11188338: IO:Read from port 03CD
11188342: IO:Writing 55 to port 03CD
11188737: INT10:Function 12:Call 80 not handled
11378620: INT10:Set Video Mode 101
11378620: VGA:Blinking 0
11378620: MOUSE:Unhandled videomode 69 on reset
11387796: FILES:file open command 0 file STAR000.PIC
11398032: MOUSE:Unhandled videomode 69 on reset
11404208: FILES:file open command 0 file STAR000.FNT
11421087: FILES:file open command 0 file SC3STR.DAT
11442600: MOUSE:Define Hortizontal range min:0 max:639
11443241: MOUSE:Define Vertical range min:0 max:479
11449370: FILES:file open command 0 file .\Q\STAR909.Q
11858361: VGA:H total 100, V Total 525
11858361: VGA:H D End 80, V D End 480
11858361: VGA:Width 640, Height 480, fps 70.007141
11858361: VGA:normal width, normal height aspect 1.000000
13196077: FILES:file open command 0 file .\Q\STAR923.Q
13497437: SBLASTER:DMA unmasked,starting output, auto 1 block 2047
13497437: SBLASTER:DMA Transfer:16-bits PCM Stereo Auto-Init freq 22050 rate 44100 size 1024
13708984: SBLASTER:Raising IRQ
13939022: SBLASTER:Raising IRQ
14168409: SBLASTER:Raising IRQ
...
19784215: SBLASTER:Raising IRQ
20004240: SBLASTER:Raising IRQ
20234289: SBLASTER:Raising IRQ
30696035: FILES:file open command 0 file STAR200.PIC
35391734: FILES:file open command 0 file STAR220.PIC
35771776: FILES:file open command 0 file STAR400.PIC
37563673: FILES:file open command 0 file STAR000.PIC
41174719: FILES:file open command 0 file STAR800.PIC
41195646: FILES:file open command 2 file RESTART.DAT
69015087: SBLASTER:DMA unmasked,starting output, auto 1 block 2047
69224460: SBLASTER:Raising IRQ
69444582: SBLASTER:Raising IRQ
69674713: SBLASTER:Raising IRQ
69904075: SBLASTER:Raising IRQ
70481783: FILES:file open command 0 file STAR200.PIC
75455670: FILES:file open command 0 file STAR220.PIC
75863420: FILES:file open command 0 file STAR400.PIC
77734434: FILES:file open command 0 file STAR000.PIC
81504589: FILES:file open command 0 file STAR800.PIC
81529665: FILES:file open command 0 file RESTART.DAT
101593877: FILES:file open command 0 file .\Q\STAR905.Q
102020600: SBLASTER:DMA unmasked,starting output, auto 1 block 2047
102231354: SBLASTER:Raising IRQ
102471391: SBLASTER:Raising IRQ
102701423: SBLASTER:Raising IRQ
...
462876: FILES:file open command 0 file sc3.EXE
464196: FILES:file open command 0 file C:\SC3.EXE
464407: FILES:file open command 0 file C:\SC3.ETX
465760: BIOS:INT15:Unknown call BFDE
465811: DOSMISC:DOS:Multiplex Unhandled call 1687
465834: BIOS:INT15:Unknown call BFDE
470291: BIOS:INT15:Unknown call BF01
470349: BIOS:INT15:Function 0x88 Remaining 0000 kb
1503533: FILES:file open command 0 file C:\SC3.EXE
9000353: FILES:file open command 0 file LEGEND.INI
9023854: PIT:PIT 0 Timer at 18.21 Hz mode 3
9190030: PIT:PIT 0 Timer at 99.99 Hz mode 3
9192092: FILES:Special file open command 10 file AUTORUN.LOC
9222210: FILES:file open command 0 file MDI.INI
9248830: FILES:file open command 0 file MPU401.MDI
9258415: FILES:file open command 0 file MPU401.MDI
9266178: FILES:file open command 0 file MPU401.MDI
9281409: MISC:MPU-401:Reset FF
9281907: MISC:MPU-401:Set UART mode 3F
10903521: PIT:PIT 0 Timer at 120.00 Hz mode 3
10904754: FILES:file open command 0 file GM.XMI
10992615: FILES:file open command 0 file DIG.INI
11016330: FILES:file open command 0 file SB16.DIG
11026586: FILES:file open command 0 file SB16.DIG
11035030: FILES:file open command 0 file SB16.DIG
11051512: SBLASTER:DSP:Reset
11051718: PIC:1 mask EC
11051722: PIC:0 mask 78
11052043: SBLASTER:Short transfer scheduling IRQ in 0.023 milliseconds
11052043: SBLASTER:DMA unmasked,starting output, auto 0 block 1
11052043: SBLASTER:DMA Transfer:16-bits PCM Stereo Single-Cycle freq 22050 rate 44100 size 1
11052069: IO:Writing 04 to port 00ED
11052268: SBLASTER:Single cycle transfer ended
11052268: SBLASTER:Raising IRQ
11136859: PIC:1 mask EC
11136863: PIC:0 mask F8
11140162: PIC:1 mask EC
11140166: PIC:0 mask 78
11140181: SBLASTER:MIXER:Read from unhandled index 32
11140187: SBLASTER:MIXER:Read from unhandled index 33
11140205: SBLASTER:MIXER:Read from unhandled index 32
11140208: SBLASTER:MIXER:Write 0 to unhandled index 32
11140213: SBLASTER:MIXER:Read from unhandled index 33
11140216: SBLASTER:MIXER:Write 0 to unhandled index 33
11143464: PIT:PIT 0 Timer at 200.00 Hz mode 3
11155239: FILES:file open command 0 file STAR001.VOC
11187488: INT10:Function 6F not supported
11188096: INT10:Function 5F not supported
11188338: IO:Read from port 03CD
11188342: IO:Writing 55 to port 03CD
11188737: INT10:Function 12:Call 80 not handled
11378620: INT10:Set Video Mode 101
11378620: VGA:Blinking 0
11378620: MOUSE:Unhandled videomode 69 on reset
11387796: FILES:file open command 0 file STAR000.PIC
11398032: MOUSE:Unhandled videomode 69 on reset
11404208: FILES:file open command 0 file STAR000.FNT
11421087: FILES:file open command 0 file SC3STR.DAT
11442600: MOUSE:Define Hortizontal range min:0 max:639
11443241: MOUSE:Define Vertical range min:0 max:479
11449370: FILES:file open command 0 file .\Q\STAR909.Q
11858361: VGA:H total 100, V Total 525
11858361: VGA:H D End 80, V D End 480
11858361: VGA:Width 640, Height 480, fps 70.007141
11858361: VGA:normal width, normal height aspect 1.000000
13196077: FILES:file open command 0 file .\Q\STAR923.Q
13497437: SBLASTER:DMA unmasked,starting output, auto 1 block 2047
13497437: SBLASTER:DMA Transfer:16-bits PCM Stereo Auto-Init freq 22050 rate 44100 size 1024
13708984: SBLASTER:Raising IRQ
13939022: SBLASTER:Raising IRQ
14168409: SBLASTER:Raising IRQ
...
19784215: SBLASTER:Raising IRQ
20004240: SBLASTER:Raising IRQ
20234289: SBLASTER:Raising IRQ
30696035: FILES:file open command 0 file STAR200.PIC
35391734: FILES:file open command 0 file STAR220.PIC
35771776: FILES:file open command 0 file STAR400.PIC
37563673: FILES:file open command 0 file STAR000.PIC
41174719: FILES:file open command 0 file STAR800.PIC
41195646: FILES:file open command 2 file RESTART.DAT
69015087: SBLASTER:DMA unmasked,starting output, auto 1 block 2047
69224460: SBLASTER:Raising IRQ
69444582: SBLASTER:Raising IRQ
69674713: SBLASTER:Raising IRQ
69904075: SBLASTER:Raising IRQ
70481783: FILES:file open command 0 file STAR200.PIC
75455670: FILES:file open command 0 file STAR220.PIC
75863420: FILES:file open command 0 file STAR400.PIC
77734434: FILES:file open command 0 file STAR000.PIC
81504589: FILES:file open command 0 file STAR800.PIC
81529665: FILES:file open command 0 file RESTART.DAT
101593877: FILES:file open command 0 file .\Q\STAR905.Q
102020600: SBLASTER:DMA unmasked,starting output, auto 1 block 2047
102231354: SBLASTER:Raising IRQ
102471391: SBLASTER:Raising IRQ
102701423: SBLASTER:Raising IRQ
...
The ... indicates more lines of the same (i.e. Sound Blaster raising an IRQ, which just plays audio in this case). What I found was that Star Control 3's Q files, which were accessed before playing a video (STAR909.Q, STAR923.Q, STAR905.Q), also contain WAVE headers. STAR905.Q seems to be the first intro video, for which I posted a link containing the audio portion from STAR001.VOC earlier in this discussion. I poked around in some of the other Q files, and not all of them contain WAVE headers. The ones that do contain headers will extract properly with MRIP, but the data they contain is useless as-is. BAH! More riddles.
What we do now is watch the ASM instructions to see what SC3.EXE does with this data. While we can see the code accessing the sound driver (SB16.DIG) in the listing above, I can't tell if, or when, DOSBox's debugger is displaying the instructions executed by the driver, though we can probably assume that most of the "SBLASTER:" commands are coming from it. This may not be particularly relevant to the decoding process anyway, but I thought it was worth mentioning. I do know that SoftICE will tell you when switching to and displaying a driver's code as soon as it is called, though I still haven't had the time to set up a box for this yet. With luck, the calls will be documented (right, haha) and our solution will be found. I'm even not going to try and assert the probability of this, heh.