VOGONS


Possibility to write OPL3 sound driver for protected mode games

Topic actions

Reply 400 of 406, by zyzzle

User metadata
Rank Member
Rank
Member
crazii wrote on 2023-03-03, 08:05:

Yes, that was it. However, tried different values with DEBUG - had to go down to 0x240 to make the distortion disappear.

Btw, I just tried an Audigy 2 - works as well.

You mean 0x3ff doesn't work good but 0x240 works? weird.
[/quote]
Strange. Don't know if this also would apply to HDA, (I don't have SB Audigy), but on some programs, I get distorted sound as well (ColEm, for one). Would lowering interrupt intrval value to 0x240 possibly fix that problem, or are we talking about something which would only fix the SB Audigy emulation distortion?

Reply 401 of 406, by zyzzle

User metadata
Rank Member
Rank
Member
crazii wrote on 2023-03-04, 15:26:

I tested Major Stryker it uses ADPCM, currently not supported yet.
Interesting that there're a few games using ADPCM: Re: Why is ADPCM so important?

EDIT: tried Commander Keen4, I didn't see any SB port IO in the log. 🤣

CK 4-6 (real mode) works very well for me. I think it only uses OPL / FM synthesis and not digital audio. There's another, re-made version called Omnispeak which ports CK4-6 to CWSDMPI protected mode

https://davidgow.net/keen/omnispeak.html

It also works with full sound in SBEMU.

Re: Major Stryker. ADPCM digital audio must be the reason! This type of digital audio also apparently used in other Apogee games I mentioned (but not CK 4-6, since it has no PCM audio), like Monster Bash, Wacky Wheels, etc.

Re: NFS and your custom HDPMI32i version posted above: It did not improve the crashes on my Kaby Lake HDA system. Very strange problems in NFS. It is perplexing why it works *perfectly* (even without JemmEX loaded) on one of my HDA systems but bombs out so badly, unpredictably on the other, using every combination I've tried:

-JemmEX NOVCPI after HDPMI32i loaded
-QHIMEM2.sys alone in config.sys + HDMI32i
-himem.sys + EMSMagic + HDPM32i
-various tweaks to SBEMU itself, such as T1 vs -T5 vs -T6, changing emulated IRQ, DMA, address port, changing sample rate
- enabling / disabling different options in NFS.EXE (no videos, etc),
- changing clock frequency of my Intel Kaby Lake CPU, turning on / of Turboboost, etc), enabling / disabling MTRRs

But, thanks so much for your help; your effort is so much appreciated in all of this; it makes SBEMU better each time. At least I've got one "newer" DOS HDA laptop (Broadwell chip) which works very well with NFS with SBEMU. Mysteries of the deep...

Reply 402 of 406, by crazii

User metadata
Rank Oldbie
Rank
Oldbie
zyzzle wrote on 2023-03-05, 02:30:
crazii wrote on 2023-03-03, 08:05:

Yes, that was it. However, tried different values with DEBUG - had to go down to 0x240 to make the distortion disappear.

Btw, I just tried an Audigy 2 - works as well.

You mean 0x3ff doesn't work good but 0x240 works? weird.

Strange. Don't know if this also would apply to HDA, (I don't have SB Audigy), but on some programs, I get distorted sound as well (ColEm, for one). Would lowering interrupt intrval value to 0x240 possibly fix that problem, or are we talking about something which would only fix the SB Audigy emulation distortion?
[/quote]

NO, that's a totally different problem we were talking about.

Toshiba Satellite Pro 4300 - YMF744, Savage IX
Toshiba Satellite 2805-S501 - YMF754, GeForce 2Go
IBM Thinkpad A21p - CS4624, Mobility Radeon 128
main: Intel NUC11PHKi7C Phantom Canyon: i7-1165G7 RTX2060 64G 2T760PSDD

Reply 403 of 406, by crazii

User metadata
Rank Oldbie
Rank
Oldbie

Updates:
1. SBLive/Audigy is working
2.add Creative ADPCM support.
3.fix bugs on IRQ routing when IRQ shared (tested with USB mouse)

The new zip is uploaded here: SBEMU: Sound Blaster emulation on AC97, this thread is too long (20 pages), download links are hidden is posts. so I started a new thread 😁.

Toshiba Satellite Pro 4300 - YMF744, Savage IX
Toshiba Satellite 2805-S501 - YMF754, GeForce 2Go
IBM Thinkpad A21p - CS4624, Mobility Radeon 128
main: Intel NUC11PHKi7C Phantom Canyon: i7-1165G7 RTX2060 64G 2T760PSDD

Reply 404 of 406, by sulix

User metadata
Rank Newbie
Rank
Newbie
zyzzle wrote on 2023-03-05, 02:47:
CK 4-6 (real mode) works very well for me. I think it only uses OPL / FM synthesis and not digital audio. There's another, re-ma […]
Show full quote
crazii wrote on 2023-03-04, 15:26:

I tested Major Stryker it uses ADPCM, currently not supported yet.
Interesting that there're a few games using ADPCM: Re: Why is ADPCM so important?

EDIT: tried Commander Keen4, I didn't see any SB port IO in the log. 🤣

CK 4-6 (real mode) works very well for me. I think it only uses OPL / FM synthesis and not digital audio. There's another, re-made version called Omnispeak which ports CK4-6 to CWSDMPI protected mode

https://davidgow.net/keen/omnispeak.html

It also works with full sound in SBEMU.

Indeed, the latter Commander Keen games (Dreams, 4–6) only support OPL2/Adlib sound (and PC-speaker SFX). Omnispeak should behave very similarly (except for the Adlib detection code). I have thought about adding support for emulating the OPL2 via SB PCM or similar (since the emulators are already there to support the Win/Linux versions), but it didn't seem useful outside of SB-compatible cards with nasty-sounding OPL2 clones.

In any case, I'm glad to hear that it works well with SBEMU!

Reply 405 of 406, by sergio_prado

User metadata
Rank Newbie
Rank
Newbie
zyzzle wrote on 2023-02-20, 02:34:
I got Doom with DOS32a working with sound. […]
Show full quote
georgel wrote on 2023-02-16, 12:28:

Try doom with dos32a then. Are you sure the ess solo-1 is not using any resident software to emulate SB? I have such card and can test it too after a day or two.

I got Doom with DOS32a working with sound.

I also got full sound and music out of Duke Nukem. 8-bit only, and I think its audio samples are internally only 8-bit 11.025 Khz. Same with Doom. I could not get 16-bit audio out of SBEMU, only 8-bit stereo up to 22.05 khz (ie, SB Pro, DSP v. 3.02).

One more point: It's not possible to set MTRR VGA writeback caching with RayeR's excellent MTRRLFBE and / or Fastvid programs. EMS memory page frame appears interfering, with EMS memory. So, VESA graphics, work, but are very slow due to the writecombining caching being unable to be activated.

How to enable MTRR's if possible, with SBEMU running?

It's really a shame that MTRRLFBE VGA writecombining doesn't work. But LFB writecombining does.

Reply 406 of 406, by rasz_pl

User metadata
Rank l33t
Rank
l33t
rasz_pl wrote on 2023-02-03, 11:38:

EMM386 already has facilities to trap all the ports anyway (and uses them for Keyboard Data/cmd ports 60/64h for A20 changes, all the DMA channels for Virtual DMA Services (VDS), whole PIC), so the limitation is clearly arbitrary/artificial. Underpants Gnomes tell me sadly int 2f ax=4a15 routines werent part of DOS source leak (5.0?) so cant just look it up.

https://github.com/AR1972/astro/blob/91e0bc1f … iotrap.asm#L503

IO_Trap proc	near
;
push dx
push ds
push gs

push VDMD_GSEL
pop ds ; set DS = _DATA
push RCODEA_GSEL
pop gs ; set GS = R_CODE

cmp dx,0100h ;Q: I/O Addr < 0100h (system brd port)?
jae SHORT IOT_NotISASys ; N: check mapping regs

AT&T Globalyst/FIC 486-GAC-2 Cache Module reproduction
Zenith Data Systems (ZDS) ZBIOS 'MFM-300 Monitor' reverse engineering