I imagine you wanted something that runs inside Windows but I know of something you can do at the emulator level. If you meet the narrow criteria of running under emulation and willing to use either Sound Blaster 16 or ES1370, then.. this still might not be very good, I don't know! Under Bochs 2.7, when I set "loglevel=5" for the sb16 device, I get a fairly verbose log file with output including stuff like this:
100035845661 (3) Read access to 0x0226: unsupported port! 200035845681 (4) DSP Reset port write value 0 300035845681 (4) DSP resetting... 400035845717 (4) DSP output status read, result ff 500035845744 (4) DSP Data port read, result = aa 600035845793 (4) DSP Buffer status read, result 7f 700035845813 (4) DSP Data port write, value e1 800035845813 (4) DSP command e1 with 0 arg bytes 900035845845 (4) DSP output status read, result ff 1000035845865 (4) DSP Data port read, result = 4 1100035845895 (4) DSP output status read, result ff 1200035845915 (4) DSP Data port read, result = 5 1300035845966 (4) DSP Buffer status read, result 7f 1400035845986 (4) DSP Data port write, value e1 1500035845986 (4) DSP command e1 with 0 arg bytes 1600035846019 (4) DSP output status read, result ff 1700035846039 (4) DSP Data port read, result = 4 1800035846070 (4) DSP output status read, result ff 1900035846090 (4) DSP Data port read, result = 5 2000035846145 (4) DSP Buffer status read, result 7f 2100035846165 (4) DSP Data port write, value e3 2200035846165 (4) DSP command e3 with 0 arg bytes 2300035846198 (4) DSP output status read, result ff 24... 2500035849605 (4) DSP Data port write, value 0 2600035849605 (4) DSP command 5 with 2 arg bytes 2700035849656 (4) DSP Buffer status read, result 7f 2800035849676 (4) DSP Data port write, value 4 2900035849729 (4) DSP Buffer status read, result 7f 3000035849749 (4) DSP Data port write, value fc 3100035849749 (4) DSP command 4 with 1 arg bytes 3200035849798 (4) DSP Buffer status read, result 7f 33... 3400066922309 (1) Resources set to I5 D1 H5 3500066964603 (4) read from mixer register ff returns ff 3600066964774 (4) read from mixer register ff returns ff 3700066964943 (4) read from mixer register ff returns ff 3800066965029 (4) read from mixer register fe returns 06 3900067366942 (4) read from mixer register 82 returns 40 40... 4100204010022 (4) 8-bit DMA or SBMIDI IRQ acknowledged 4200204010022 (4) DSP output status read, result 7f 4300204147303 (5) Received 8-bit DMA: 0x88, 1375 remaining 4400204286601 (5) Received 8-bit DMA: 0x81, 863 remaining 4500204425907 (5) Received 8-bit DMA: 0x81, 351 remaining 4600204425907 (4) DMA transfer done, triggering IRQ 4700204425907 (4) auto-DMA reinitializing to length 1375 48... 4900573463924 (4) DMA initialized. Cmd c6, mode 00, length 1375, comp 0 5000573463924 (5) DMA is 8b, 22050Hz, mono, output, mode 2, unsigned, normal speed, 22050 bps, 13931 usec/DMA 51...
You can get it to write samples to a file too. I suppose lots of other emulators probably do the same kind of thing. Perhaps it's far too low-level for what you're after though. It might be necessary to read the Bochs source code to figure out which register numbers the different messages refer to if they're not the conventional names.
dosheawrote on 2023-03-13, 05:38:I imagine you wanted something that runs inside Windows but I know of something you can do at the emulator level. If you meet t […] Show full quote
I imagine you wanted something that runs inside Windows but I know of something you can do at the emulator level. If you meet the narrow criteria of running under emulation and willing to use either Sound Blaster 16 or ES1370, then.. this still might not be very good, I don't know! Under Bochs 2.7, when I set "loglevel=5" for the sb16 device, I get a fairly verbose log file with output including stuff like this:
100035845661 (3) Read access to 0x0226: unsupported port! 200035845681 (4) DSP Reset port write value 0 300035845681 (4) DSP resetting... 400035845717 (4) DSP output status read, result ff 500035845744 (4) DSP Data port read, result = aa 600035845793 (4) DSP Buffer status read, result 7f 700035845813 (4) DSP Data port write, value e1 800035845813 (4) DSP command e1 with 0 arg bytes 900035845845 (4) DSP output status read, result ff 1000035845865 (4) DSP Data port read, result = 4 1100035845895 (4) DSP output status read, result ff 1200035845915 (4) DSP Data port read, result = 5 1300035845966 (4) DSP Buffer status read, result 7f 1400035845986 (4) DSP Data port write, value e1 1500035845986 (4) DSP command e1 with 0 arg bytes 1600035846019 (4) DSP output status read, result ff 1700035846039 (4) DSP Data port read, result = 4 1800035846070 (4) DSP output status read, result ff 1900035846090 (4) DSP Data port read, result = 5 2000035846145 (4) DSP Buffer status read, result 7f 2100035846165 (4) DSP Data port write, value e3 2200035846165 (4) DSP command e3 with 0 arg bytes 2300035846198 (4) DSP output status read, result ff 24... 2500035849605 (4) DSP Data port write, value 0 2600035849605 (4) DSP command 5 with 2 arg bytes 2700035849656 (4) DSP Buffer status read, result 7f 2800035849676 (4) DSP Data port write, value 4 2900035849729 (4) DSP Buffer status read, result 7f 3000035849749 (4) DSP Data port write, value fc 3100035849749 (4) DSP command 4 with 1 arg bytes 3200035849798 (4) DSP Buffer status read, result 7f 33... 3400066922309 (1) Resources set to I5 D1 H5 3500066964603 (4) read from mixer register ff returns ff 3600066964774 (4) read from mixer register ff returns ff 3700066964943 (4) read from mixer register ff returns ff 3800066965029 (4) read from mixer register fe returns 06 3900067366942 (4) read from mixer register 82 returns 40 40... 4100204010022 (4) 8-bit DMA or SBMIDI IRQ acknowledged 4200204010022 (4) DSP output status read, result 7f 4300204147303 (5) Received 8-bit DMA: 0x88, 1375 remaining 4400204286601 (5) Received 8-bit DMA: 0x81, 863 remaining 4500204425907 (5) Received 8-bit DMA: 0x81, 351 remaining 4600204425907 (4) DMA transfer done, triggering IRQ 4700204425907 (4) auto-DMA reinitializing to length 1375 48... 4900573463924 (4) DMA initialized. Cmd c6, mode 00, length 1375, comp 0 5000573463924 (5) DMA is 8b, 22050Hz, mono, output, mode 2, unsigned, normal speed, 22050 bps, 13931 usec/DMA 51...
You can get it to write samples to a file too. I suppose lots of other emulators probably do the same kind of thing. Perhaps it's far too low-level for what you're after though. It might be necessary to read the Bochs source code to figure out which register numbers the different messages refer to if they're not the conventional names.
Thanks. So apparently this is one way to get what I want. But it is too convoluted for me, and will output more than what I need. I shall ask around if anyone would have the patience to intercept whatever is needed. I would be helped if there is an even easier technique, but still it is better than nothing.
Have you looked into any generic Win32 API monitoring/tracing/spying tools? I'm fairly sure that it was possible to perform Windows API tracing in Windows 3.x, so I'd like to think it could be done for Win32 API in 9x/Me too.
Have you looked into any generic Win32 API monitoring/tracing/spying tools? I'm fairly sure that it was possible to perform Windows API tracing in Windows 3.x, so I'd like to think it could be done for Win32 API in 9x/Me too.
A certain application crashes on Windows NT when it is set to play sound on "PCM Audio" instead of "DirectSound Audio". I am Interested to see what operation goes successfully on Win9x. The application has a chatacter voice option which also causes the same issue.
I never did API tracing on Win3.x so I can't know.
PC Magazine 14 Jun 1994 page 340 talks about some relevant tools under the heading "Spying Tools". On page 341 it mentions Nu-Mega Bounds-Checker32. From Wikipedia I guessed that version 3 might have supported Windows 9x and so I did a Google search for "Bounds Checker 3.0" which revealed that there was apparently a thing called "Bounds Checker 3.0 SE for Windows 95/NT", although I don't know for sure that it was the one from Nu-Mega - from some other searching I did I think I found other tools called "Bounds Checker" too.
Also I suppose there is a chance that DirectX APIs aren't hooked, or are only hooked in newer versions or something.
If you find one of these tools and find it useful I'd be very interested to hear about it! I am interested in similar things for Windows 9x and 3.x but have never had time to pursue it.
PC Magazine 14 Jun 1994 page 340 talks about some relevant tools under the heading "Spying Tools". On page 341 it mentions Nu-Mega Bounds-Checker32. From Wikipedia I guessed that version 3 might have supported Windows 9x and so I did a Google search for "Bounds Checker 3.0" which revealed that there was apparently a thing called "Bounds Checker 3.0 SE for Windows 95/NT", although I don't know for sure that it was the one from Nu-Mega - from some other searching I did I think I found other tools called "Bounds Checker" too.
Also I suppose there is a chance that DirectX APIs aren't hooked, or are only hooked in newer versions or something.
If you find one of these tools and find it useful I'd be very interested to hear about it! I am interested in similar things for Windows 9x and 3.x but have never had time to pursue it.
It looks interesting. I am trying to find the aforementioned application, but I can't find it anywhere. I didn't even find Bounds Checker 3.0 SE for Win95/NT
The program I am trying to log might not be using just DirectX in sound, it may well be running without DirectX. The application hanged when run without the DirectSound setting, so if Bounds-Checker32 works, will be interesting to see what's happening in the application.