VOGONS


Reply 40 of 59, by aitotat

User metadata
Rank Member
Rank
Member

I somehow didn't even think the possibility that Line-IN mixer mode needs to work when SET BLASTER card is the one connected to another Sound Blaster cards Line-IN. Looks like some way to select the card is needed so I'll see what I can do. But since both are Sound Blaster Pro compatible, they should work without specifying the 'L'. That way it should not matter how they are connected.

Dual OPL should definitely work when SET BLASTER card is the left OPL card and right OPL card is the card connected to left cards Line-IN. If Left card is at 220h and right is at 240h, then "-fmr=a240l" should work. That is how I've done testing mostly.

There could be a bug that prevents Left OPL to be configured to be anything else than SET BLASTER card. I'll investigate.

I'll have to test Sardonic. I was supposed to but then forgot it. If it does mixer reset or any other adjusting to Line-IN volume, then make sure you use the -lock command line parameter. Otherwise nothing protects unwanted Line-IN volume changes and it must remain unchanged especially in the Line-IN mixer mode. Maybe I should force the -lock for dual OPL mode or at least protect the Line-IN volume even when -lock is not used.

Reply 41 of 59, by aitotat

User metadata
Rank Member
Rank
Member

Release 11 is ready. It has fixes for r10 FM problems.

It is now possible to override the SET BLASTER card with -sb=a# command line parameter. For example if SET BLASTER points to A220 but you want to trap card at A240 instead, then just use -sb=a240. MIDIto will detect the card type but if you use -v command line parameter, then MIDIto will print wrong interrupt and DMA numbers. Since IRQ or DMA is not used at all, those are just the hardware default values.

-fml to set left OPL should now work properly. Note, however, that volume is read from left OPL and copied to right so you might end up with different volumes depending on what card you set to be left and what right.

It is also possible to specify mixer card for the Line-IN mixer mode. Lets assume that you want to use OPL at 240h for the right OPL and that card is connected to Line-IN of the card at 230h but your SET BLASTER (or overrided with -sb) card is at 220h. Then you could do this: -fmr=a240la230. For better readability you can also write -fmr=a240 l a230. Delays or stereo mix can be set after that, like -fmr=a240 l a230,d3,m25.

I've not yet tested with three cards but I'll do so eventually. This mixer redirecting can be too complicated so I'm not surprised if there is still something I've not thought of.

Reply 43 of 59, by enaiel

User metadata
Rank Member
Rank
Member

Thank you for this very useful software. You already have a lot of fixes for SB16 related DSP issues to improve SB Pro compatibility. I was wondering if it would be possible to solve the very very niche use case of making the DOS demo Crystal Dream by Triton work on SB16 sound cards. More information on this issue can be found here: https://github.com/joncampbell123/dosbo ... ton-(1992)

Crystal Dream does not concern itself with the IRQ of the Sound Blaster, in fact, it ignores it. Instead, it uses the timer inte […]
Show full quote

Crystal Dream does not concern itself with the IRQ of the Sound Blaster, in fact, it ignores it. Instead, it uses the timer interrupt to watch the DSP’s busy cycle while the DMA block is playing. If it sees the busy cycle stop, then it issues another playback command to keep it going. This technique is effective on Sound Blaster and Sound Blaster Pro cards because the DSP’s busy bit will cycle periodically while audio is playing or recording.

On clone hardware, where there is no busy cycle, the demo’s Sound Blaster routines work regardless because they effectively then nag the DSP to restart the block constantly and audio playback runs properly anyway.

However, this demo is not able to play music on Sound Blaster 16 hardware. The reason is that the Sound Blaster 16 DSP busy cycle is always running, whether or not any audio playback is occuring, so the demo never senses the end of the DSP block and never issues any further commands to keep audio playback going.

Sound Blaster playback is rendered goldplay-style, using a 1 or 2 byte DMA buffer and the timer interrupt.

#1 VIA C3 Ezra-T 1.0GHz/MSI MS-6368/Voodoo2+ViRGE GX/SBPro2+YMF744+AWE64+SC-7
#2 Pentium III-S Tualatin 1.40GHz/QDI A10T/Voodoo3 3000+GF4 Ti4200/Audigy+AU8830+SC-50

Reply 44 of 59, by Stretch

User metadata
Rank Member
Rank
Member

Can this utility redirect port 620 for AWE32 to MIDI 330?

Win11 - AMD Ryzen 9 3900 - 16 GB - GeForce RTX 2060S - Sound BlasterX AE5-Plus
Win98SE - ASRock 775i65G R3.0 - Celeron 2.2 GHz - 2 GB - GeForce FX5700 - Ensoniq 1373
Win98SE - Via Apollo Pro Mobo - Pentium II 233 - 256 MB - Voodoo 3 1000 - ESS Solo-1 1938

Reply 45 of 59, by Gmlb256

User metadata
Rank Oldbie
Rank
Oldbie
Stretch wrote on 2022-04-05, 01:06:

Can this utility redirect port 620 for AWE32 to MIDI 330?

No. The AWE EMU8K chip lacks a hardware MPU-401 interface, so simply redirecting the port won't do the trick.

Consider trying DOS32AWE which allows the use of AWEUTIL for protected mode games in DOS.

Reply 46 of 59, by aitotat

User metadata
Rank Member
Rank
Member
enaiel wrote on 2022-04-04, 21:24:

I was wondering if it would be possible to solve the very very niche use case of making the DOS demo Crystal Dream by Triton work on SB16 sound cards.

I can try but it is possible that changing the busy bit to behave like SB pro will break some SB16 code instead. That SB16 busy cycle could perhaps be used to implement OPL delays without having to specify number of CPU jumps. So it is possible that there is SB16 code that uses busy cycle for something.

Reply 47 of 59, by enaiel

User metadata
Rank Member
Rank
Member
aitotat wrote on 2022-04-06, 09:47:

I can try but it is possible that changing the busy bit to behave like SB pro will break some SB16 code instead. That SB16 busy cycle could perhaps be used to implement OPL delays without having to specify number of CPU jumps. So it is possible that there is SB16 code that uses busy cycle for something.

It would be amazing if you could! It could be implemented with a command line option so as not to break other applications, only to be used for Crystal Dream, Goldplay, or similar.

#1 VIA C3 Ezra-T 1.0GHz/MSI MS-6368/Voodoo2+ViRGE GX/SBPro2+YMF744+AWE64+SC-7
#2 Pentium III-S Tualatin 1.40GHz/QDI A10T/Voodoo3 3000+GF4 Ti4200/Audigy+AU8830+SC-50

Reply 48 of 59, by digistorm

User metadata
Rank Member
Rank
Member

I have a question about the DSP fixes done by midito. I tried it on two SoundBlaster cards, a CT1740 SB16 (DSP 4.12) and a CT4520 AWE64 (DSP 4.16), but both still give me mono audio. I can hear that the pitch is different (like it is in mono mode), but no stereo sound. Am I missing something, or is stereo only working in certain games? I tried it with some demos and Impulse Tracker (because I can quickly switch between sound cards) but I only get mono audio.

Reply 49 of 59, by aitotat

User metadata
Rank Member
Rank
Member

Maybe I broke something on r10 or r11. Sounds like stereo bit is ignored. Do you use only -dsp or maybe -fm or -lock as well? They all need to trap mixer so it is possible that only some combination is broken. I've mostly tested with Aladdin so that is one game that should definitely work and stereo can be easily heard from the intro music. I've not tested with Impulse Tracker so I'll try it next.

Reply 50 of 59, by Gmlb256

User metadata
Rank Oldbie
Rank
Oldbie
aitotat wrote on 2022-04-11, 12:33:

I've mostly tested with Aladdin so that is one game that should definitely work and stereo can be easily heard from the intro music. I've not tested with Impulse Tracker so I'll try it next.

You could also test Second Reality and Scream Tracker which are one of the few programs that supports the SBPro stereo but not the SB16 one.

Aladdin has broken sound card detection for the SB16 and there is a workaround for it without the dsp command line switch.

Reply 51 of 59, by aitotat

User metadata
Rank Member
Rank
Member

It seems that the -dsp is broken in r11 (and likely in r10, I didn't test it) but works in r9. I tested Seconds Reality and it works with r9 and so does Scream Tracker. Impulse tracker works at first but eventually fails after playing more modules. I think I know why but first I need to fix r11.

Reply 52 of 59, by digistorm

User metadata
Rank Member
Rank
Member

Yes, r9 does work on both sound cards. I tried all previous versions, but only with Impulse Tracker and that does not work with r9 (or maybe too short). For my use case that is no big deal, as Impulse Tracker also supports SB16 natively.

I noticed something else: it doesn't play nice with the VIDECDD.SYS CD-ROM driver. It kept complaining about "Failed to install EMM386 port virtualization!" on one system. It had me puzzled for a while, so I hope if someone in the future searches for this problem, he finds the cause.
If I load the CD-ROM driver after midito (with DEVLOAD), everything seems to continue working.

Another thing: I noticed that the left and right channels are swapped (in Scream Tracker for example). Is that to be expected?

Reply 53 of 59, by aitotat

User metadata
Rank Member
Rank
Member

I too have noticed the problem with VIDECDD.SYS. I don't know what causes it. Maybe VIDECDD.SYS traps ports for some reason but I did test loading it before and after EMM386.EXE and there was no difference. If it traps ports, then it must do so during/after loading MSCDEX. But more likely it is some other compatibility problem.

I'll investigate why channels are swapped. Are they correct with real Sound Blaster Pro 2?

Reply 54 of 59, by Gmlb256

User metadata
Rank Oldbie
Rank
Oldbie

The real SBPro2 on Scream Tracker sometimes has the correct channel positining and sometimes not but eventually it can get the channels swapped, probably due to a odd numbered DMA transfer size.

That behavior doesn't happen with the AWE64 with the dsp command line switch (using MIDIto r9), because the mixer doesn't have the stereo DAC switch which affects the speaker channel positioning in DMA transfers.

Reply 55 of 59, by digistorm

User metadata
Rank Member
Rank
Member
aitotat wrote on 2022-04-12, 14:03:

I too have noticed the problem with VIDECDD.SYS. I don't know what causes it. Maybe VIDECDD.SYS traps ports for some reason but I did test loading it before and after EMM386.EXE and there was no difference. If it traps ports, then it must do so during/after loading MSCDEX. But more likely it is some other compatibility problem.

Well, I meant loading VIDECDD.SYS after midito has been loaded. On my system, it seemed to continue to work. I don't use MSCDEX by the way, but SHCDX33F. To save memory when I am also connecting to a NAS.

I'll investigate why channels are swapped. Are they correct with real Sound Blaster Pro 2?

If I compare for example Second Reality with the capture from Jim Leonard (who used a real Sound Blaster Pro), I can hear that all the sounds are swapped. And when you run the demo Panic, it opens with letters flying towards the screen from left to right. But you hear them right to left. So that does suggest that the channels are swapped.

Reply 56 of 59, by aitotat

User metadata
Rank Member
Rank
Member

I had to compare myself and it seems to be true. SB Pro 2 stereo is correct on that Panic demo but reversed with Midito r9 (and CT2940). I don't know why. Sound Blaster Series Hardware Programming Guide (from 1996) tells that left channel byte starts 8-bit stereo sample and then comes right byte. There is no mention about it being different for SB Pro. I don't know why it is reversed. Does anyone have Sound Blaster Pro programming guide dated before release of SB16? All I've found is programming guide for original Sound Blaster and that late 1996 pdf.

Edit: Also tested Sound Galaxy I38-MMSN850 (with AZT2316). It is one of those SB Pro clone cards that incorrectly swaps channels if one (silent) byte is inserted before sample. However it plays Panic correct just the same as real SB Pro 2. I was planning to fix the incorrect stereo reversal for these type of cards since it should be very easy thing to do (clear and set stereo bit again before playback command should do it).

Reply 57 of 59, by aitotat

User metadata
Rank Member
Rank
Member

For those having problems with VIDE-CDD.SYS, please try v2.14a from here. I think 2.15 is the one having the problem.

Edit: Also found and tested versions 1.11, 2.00 and 2.10. They are even worse than 2.15. They either freeze or reboot the computer. So use the v2.14a. It is the only one that works.

Edit 2: Tested unmodified v2.14 found from vogonsdrivers. It fails just the same as 2.15. So the modified v2.14a is the only one that works.

Edit 3: Seems like v2.14a is needed only for now. I found out that VIDE-CDD does not play nice when MIDIto searches if it is already loaded to memory. Installation check does something else to VIDE-CDD.SYS and that eventually leads to EMM386 error (don't ask how). I can fix that for MIDIto r12.

Reply 58 of 59, by digistorm

User metadata
Rank Member
Rank
Member

Ah, okay. Yeah, the 2.14a version works fine for me. I might just keep this version as it is working for this particular drive. With the XDVD2.SYS driver I get atrocious read speeds for some reason unknown to me.

Reply 59 of 59, by aitotat

User metadata
Rank Member
Rank
Member

r12 is now ready. No new features, just bug fixes. All versions of VIDE-CDD.SYS should now work and the broken -dsp command line parameter now works again but stereo channels are still swapped. There does not seem to be any easy fix for it but I'll try.