VOGONS


SBEMU: Sound Blaster emulation on AC97

Topic actions

Reply 380 of 1276, by Baron von Riedesel

User metadata
Rank Member
Rank
Member
crazii wrote on 2023-04-01, 15:29:

@Baron von Riedesel, I think at least an open sourced repo will help diff the code. 😁

I have no problem with that. It's already on github, as a private repo. If you don't mind, I'll make it public..

However, I'm not sure that it will help - because my goal is to finally remove the Mpxplay part ( that code was never meant to be a "library", it's virtually uncommented and huge parts aren't needed for sbemu ). So I already removed and "adjusted" quite a bit of it - making it futile to run a simple diff between this code and yours.

Reply 381 of 1276, by th3bar0n

User metadata
Rank Newbie
Rank
Newbie
th3bar0n wrote on 2023-03-25, 12:19:

I have a Vt8233 in an HP T5520 thin client. I don't get any of the DMA conflict errors, but otherwise similar - MPXPlay works perfectly, but with SBEMU beta 2 no sound at all and with the VT8233FIX build..

crazii wrote on 2023-03-31, 12:20:

Thanks folks! I found no laptop in my local market, I decided to buy a HP T5520 instead. 😁

Excellent choice! 😁

Reply 382 of 1276, by mikedebian

User metadata
Rank Newbie
Rank
Newbie

Hey, I got sound in doom working. All I had to do was modify this line in config.sys to:

DEVICE=C:\DOS\JEMMEX.EXE I=B000-B7FF

Now it ran, with sound and all.

Man, I wish there was a souped up config.sys all ready for people with way too modern system to use jemmex in all kinds of compatability modes available. I haven't touched all of this in so many years, it's hard.

Reply 384 of 1276, by mikedebian

User metadata
Rank Newbie
Rank
Newbie
MBH wrote on 2023-04-01, 22:39:

The only difference is, now you have some additional memory, otherwise reserved for Hercules graphics.

Still, it worked. I got some upper memory available, which I did not have before! Now I have 32KB.

Reply 385 of 1276, by crazii

User metadata
Rank Oldbie
Rank
Oldbie
Baron von Riedesel wrote on 2023-04-01, 16:00:
crazii wrote on 2023-04-01, 15:29:

@Baron von Riedesel, I think at least an open sourced repo will help diff the code. 😁

I have no problem with that. It's already on github, as a private repo. If you don't mind, I'll make it public..

However, I'm not sure that it will help - because my goal is to finally remove the Mpxplay part ( that code was never meant to be a "library", it's virtually uncommented and huge parts aren't needed for sbemu ). So I already removed and "adjusted" quite a bit of it - making it futile to run a simple diff between this code and yours.

OK, I didn't know that until now, I thought that there's no big difference between the two. Are you planning to open source eventually? if yes, then under what circumstances? that when MPXPlay is totally removed?

About the MPXPlay part, I agree that it is not a library, when porting & tailoring it to djgpp for SBEMU, I found some code coupling which gives me headache and I have to include files that are mostly not useful. But, it doesn't need to be a good portable library. I still preferred to keep it as "original" as possible, with minimal modifications, the bugfix can feed back to the original author of MPXPlay to make itself better, and he can easily cherry-pick the changes. it's a win-win situation. it's just what open sourced for, isn't it? That's why the macro "SBEMU" is used for MPXPlay, for most changes I'll guard the changes with the macro and keep the original code. That's the experience of a 15 years programmer - me.

I'm not trying to sell my coding philosophy, but MPXPlay now is working with low maintenance cost, I don't see any actual needs to reform it, adding comments won't hurt; the unused code is left there with some kilobytes extra XMS cost. it's not worth the effort. I'm in no position to persuade you, but I just don't understand, are you really, really sure to do that? to transform a third party code into your own, instead of making it better for both? that question can also apply to SBEMU, are you really want to make "another SBEMU", instead of helping making this one better? I'm more confused than ever.

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 386 of 1276, by crazii

User metadata
Rank Oldbie
Rank
Oldbie
mikedebian wrote on 2023-04-01, 21:32:
Hey, I got sound in doom working. All I had to do was modify this line in config.sys to: […]
Show full quote

Hey, I got sound in doom working. All I had to do was modify this line in config.sys to:

DEVICE=C:\DOS\JEMMEX.EXE I=B000-B7FF

Now it ran, with sound and all.

Man, I wish there was a souped up config.sys all ready for people with way too modern system to use jemmex in all kinds of compatability modes available. I haven't touched all of this in so many years, it's hard.

This is a good inspiration. Doom works fine for me but I have a Chinese game that works in VirtualBox and in my VIA VT82C686 laptop, but no sound in my TP T540p, after adding I=B000-B7FF to JEMMEX, it works! 😁

EDIT: NOEMS also works but I'd prefer EMS for some games.

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 387 of 1276, by sega dude

User metadata
Rank Newbie
Rank
Newbie

I tried this on several different computers before I had it work. I used the method in this video to create a flash drive with FreeDOS and SBEMU. I first tried it on my Dell Latitude E6500. SBEMU ran and recognized the sound card as Intel HDA. I got no sound in any game I tried. I tried plugging in headphones into the headphone jack but I didn't get any audio that way either. I then tried my Dell XPS M140 (a.k.a Inspiron 630m). SBEMU recognized the sound card as Intel HDA on this machine as well. Again I got no sound in any game I tried. I also tried the headphone jack on this machine and I again didn't get any audio out of it. I finally had it work on my Thinkpad R51 1830-BTU. On this machine SBEMU recognized the sound card as ICH AC97. I got sound in Doom, ROTT, the Warcraft 2 demo, and Duke Nukem 3D: Atomic Edition.

Reply 388 of 1276, by stamasd

User metadata
Rank l33t
Rank
l33t

Hey, the I=b000-b7ff is a very good hint. Jemmex does not detect/use that automatically. Now I can have mouse and SBEMU and EMS to play FE2, without that I had to leave out the mouse which made the game unplayable (it's a space combat simulator, no mouse=control of the ship and UI is crap). 😀

I/O, I/O,
It's off to disk I go,
With a bit and a byte
And a read and a write,
I/O, I/O

Reply 389 of 1276, by stamasd

User metadata
Rank l33t
Rank
l33t
sega dude wrote on 2023-04-02, 01:30:

I tried this on several different computers before I had it work. I used the method in this video to create a flash drive with FreeDOS and SBEMU. I first tried it on my Dell Latitude E6500. SBEMU ran and recognized the sound card as Intel HDA. I got no sound in any game I tried. I tried plugging in headphones into the headphone jack but I didn't get any audio that way either. I then tried my Dell XPS M140 (a.k.a Inspiron 630m). SBEMU recognized the sound card as Intel HDA on this machine as well. Again I got no sound in any game I tried. I also tried the headphone jack on this machine and I again didn't get any audio out of it. I finally had it work on my Thinkpad R51 1830-BTU. On this machine SBEMU recognized the sound card as ICH AC97. I got sound in Doom, ROTT, the Warcraft 2 demo, and Duke Nukem 3D: Atomic Edition.

Try the version of SBEMU from the attachment in this post: Re: SBEMU: Sound Blaster emulation on AC97
I had a machine which like yours had the sound card recognized but no sound would come out, that version of SBEMU fixed it for me.

I/O, I/O,
It's off to disk I go,
With a bit and a byte
And a read and a write,
I/O, I/O

Reply 390 of 1276, by crazii

User metadata
Rank Oldbie
Rank
Oldbie
sega dude wrote on 2023-04-02, 01:30:

I tried this on several different computers before I had it work. I used the method in this video to create a flash drive with FreeDOS and SBEMU. I first tried it on my Dell Latitude E6500. SBEMU ran and recognized the sound card as Intel HDA. I got no sound in any game I tried. I tried plugging in headphones into the headphone jack but I didn't get any audio that way either. I then tried my Dell XPS M140 (a.k.a Inspiron 630m). SBEMU recognized the sound card as Intel HDA on this machine as well. Again I got no sound in any game I tried. I also tried the headphone jack on this machine and I again didn't get any audio out of it. I finally had it work on my Thinkpad R51 1830-BTU. On this machine SBEMU recognized the sound card as ICH AC97. I got sound in Doom, ROTT, the Warcraft 2 demo, and Duke Nukem 3D: Atomic Edition.

Hi, Which version of SBEMU is used? The original beta2 or beta2c? Beta2c should have the power states fixed but there might be more problems that need fixing.

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 391 of 1276, by zyzzle

User metadata
Rank Member
Rank
Member
stamasd wrote on 2023-04-01, 13:02:

Indeed it doesn't. With no SBEMU loaded, and sound disabled (otherwise it complains "can't find FM chip") indeed Duke3D ends up in that same blank screen.
The same may happen with the other games that get a blank screen when launched in my tests above (Dune and Dune2) on this machine. They all work fine on other, older computers. This one uses the iGPU from the i5-6600T which is IIRC a HD530.

Yes, the black screen is not SBEMU problem. I can verify that, doubly.

I also have that problem on MANY SVGA games on my system which uses iGPU (HD620) on i5-8250 and i5-6600 (HD530). It is an awful bug in the onboard vBIOS. It doesn't support VBE2/3 correctly at 640x480 or 640x400 or above. For example, most of the Allegro DOS games which have any VESA (2) code in them fail (freeze) at loading with same black screen. However, SBEMU driver works perfectly with Allegro sound library in these games at 320x200!

Duke3d works perfectly with SVGA on my i7-5600 and i5-5300 systems, with its onboard iGPU (Intel HD Graphics 5500), so something was borked (intentionally?) between the vBIOS ROM code between the 5th - 6th Gen Intel CPUs. It's horribly, terribly frustrating that proper VBE compatibility broke. I wish someone smarter than I could release a software patch that could fix this awful bug / problem in onboard intel graphics > 5th gen core i3/i5/i7.

Reply 392 of 1276, by Baron von Riedesel

User metadata
Rank Member
Rank
Member
crazii wrote on 2023-04-01, 23:57:

I'm not trying to sell my coding philosophy, but MPXPlay now is working with low maintenance cost, I don't see any actual needs to reform it, adding comments won't hurt; the unused code is left there with some kilobytes extra XMS cost. it's not worth the effort. I'm in no position to persuade you, but I just don't understand, are you really, really sure to do that? to transform a third party code into your own, instead of making it better for both?

I guess you're right, it's irrational, but code that hurts my aesthetic perception cannot be left unchanged... 😀

Anyway, I added an optional numeric argument to hdpmi's -x option, working as "right shift" factor, so -x still restricts mem to 256mb, but -x1 changes that to 128mb, -x2 to 64mb and so on... System Shock is happy with -x2.

Had to notice, however, that there are games that won't be cheated so easily: Bleifuss ( English: Screamer ) isn't impressed by -x2, -x3 or whatever. I could make it run with hdpmi32's -v option, but have no idea why this works...

Reply 393 of 1276, by stamasd

User metadata
Rank l33t
Rank
l33t
zyzzle wrote on 2023-04-02, 04:25:
Yes, the black screen is not SBEMU problem. I can verify that, doubly. […]
Show full quote
stamasd wrote on 2023-04-01, 13:02:

Indeed it doesn't. With no SBEMU loaded, and sound disabled (otherwise it complains "can't find FM chip") indeed Duke3D ends up in that same blank screen.
The same may happen with the other games that get a blank screen when launched in my tests above (Dune and Dune2) on this machine. They all work fine on other, older computers. This one uses the iGPU from the i5-6600T which is IIRC a HD530.

Yes, the black screen is not SBEMU problem. I can verify that, doubly.

I also have that problem on MANY SVGA games on my system which uses iGPU (HD620) on i5-8250 and i5-6600 (HD530). It is an awful bug in the onboard vBIOS. It doesn't support VBE2/3 correctly at 640x480 or 640x400 or above. For example, most of the Allegro DOS games which have any VESA (2) code in them fail (freeze) at loading with same black screen. However, SBEMU driver works perfectly with Allegro sound library in these games at 320x200!

Duke3d works perfectly with SVGA on my i7-5600 and i5-5300 systems, with its onboard iGPU (Intel HD Graphics 5500), so something was borked (intentionally?) between the vBIOS ROM code between the 5th - 6th Gen Intel CPUs. It's horribly, terribly frustrating that proper VBE compatibility broke. I wish someone smarter than I could release a software patch that could fix this awful bug / problem in onboard intel graphics > 5th gen core i3/i5/i7.

Indeed that is the case.
I tried to see if UniVBE would help, though I didn't think so since the last version was launched in 2002, 15 years before this chip was made. https://web.archive.org/web/20060118061752/ht … ree_titles.html
It flat out refuses to work with "no supported VESA chipset detected"
The test program included (Display Doctor 6.53 for DOS) recognizes the name of the chipset and says that supposedly it's VBE 1.2 compatible. But when going to the actual tests, they either don't run or crash. All 4-bit modes tests for instance won't start, and several 8-bit modes tests crash part of the way.

I/O, I/O,
It's off to disk I go,
With a bit and a byte
And a read and a write,
I/O, I/O

Reply 394 of 1276, by flynnsbit

User metadata
Rank Newbie
Rank
Newbie

Not sure if this will help with the newer video chipsets but I did find this a while ago in relation to vbe issues with newer cards:

https://web.archive.org/web/20020619230758/ht … /videoproblems/
"
Videoproblems
So, you are trying some of your old dos programs and find out that they will not work with your new video card. The programs tell you that your video card is not VESA compatible/ that no SVGA hardware is found or something similar. You think you need a VESA TSR but the manufacturer of your video card claims that that is not needed because your video card supports VBE 2.0/3.0.

That is what this page is about: getting those great old dos programs to work again!
It seems that a lot of programs suffer from only a few problems.
Although it is often said that new video cards are made for windows and 3d and thus have no or buggy vga/svga/VESA support this is in my opinion not true. The cards from 3dfx and NVIDIA even support VBE 3.0!
"

Attachments

  • Filename
    uvbe_mod.zip
    File size
    3.06 KiB
    Downloads
    78 downloads
    File license
    Public domain

Reply 395 of 1276, by RayeR

User metadata
Rank Oldbie
Rank
Oldbie
Baron von Riedesel wrote on 2023-04-02, 08:29:

Anyway, I added an optional numeric argument to hdpmi's -x option, working as "right shift" factor, so -x still restricts mem to 256mb, but -x1 changes that to 128mb, -x2 to 64mb and so on... System Shock is happy with -x2.

Good idea, can it be changed on the fly after HDPMI was loaded resident by -r?
Also would it be possible to set whole -x on the fly to limit only specific programs? Then every "crippled" program could have a batch file for start that will adjust memory limit to its needs and disable it at exit without disturbing other programs.

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 8GB DDR3, 128GB SSD, GTX970(GF7900GT), SB Audigy + YMF724F + DreamBlaster combo + LPC2ISA

Reply 396 of 1276, by stamasd

User metadata
Rank l33t
Rank
l33t

Testing SBEMU with a HP Elitebook 8470W laptop: i7-3630QM CPU, 16GB RAM, VGA card: Radeon HD7540M.
Using DOS 6.22
Using SBEMU beta2c.

First of all, on this laptop I cannot use ANY of the UMBs that Jemmex finds for anything else but EMS frame page. If I try to load ANY drivers high it crashes with Jemmex exceptions. The EMS if enabled and with the page frame placed at D000-DFFF seems usable. But if I disable the EMS frame and try for instance to load HDPMI32i there, instant crash.
So I tested with no UMBs, EMS enabled with frame as above, and that with SBEMU loaded leaves me with 584kB conventional memory only.
SBEMU detects and enables sound as Intel HDA.

OPL440.com: generates OPL sound normally.
Dune: works if I select OPL/AdLib sound. Does not let me enable SB sound, claiming IRQ conflict (SBEMU enables emulation on IRQ7, Dune clains IRQ7 is in use by something else).
Dune2: does not work. Game hangs at startup (not a blank screen, there is a blinking cursor but nothing happens).
Monkey Island: crashes with "integer divide by zero" error.
Duke3D: works perfectly with sound effects+music.
Frontier Elite 2: works perfectly with AdLib music
JJFFE: crashes with an endless scrolling list of Jemmex exceptions, requires hard reboot.
XCOM: works perfectly with SB sounds+music.

general note: the sound volume for all OPL and SB sound is very low in all instances where it works.

Last edited by stamasd on 2023-04-02, 13:59. Edited 1 time in total.

I/O, I/O,
It's off to disk I go,
With a bit and a byte
And a read and a write,
I/O, I/O

Reply 397 of 1276, by RayeR

User metadata
Rank Oldbie
Rank
Oldbie

>crazii
Can you please test the Dynablaster? https://stahnu.cz/stare-hry/dyna-blaster#prehled
For me it runs without any sound with SBEMU but it works with YMF724 PCI with DSDMA TSR so it's definitely doable to trap and emulate sound for this game.

Last edited by RayeR on 2023-04-02, 13:59. Edited 1 time in total.

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 8GB DDR3, 128GB SSD, GTX970(GF7900GT), SB Audigy + YMF724F + DreamBlaster combo + LPC2ISA

Reply 398 of 1276, by stamasd

User metadata
Rank l33t
Rank
l33t
flynnsbit wrote on 2023-04-02, 13:22:
Not sure if this will help with the newer video chipsets but I did find this a while ago in relation to vbe issues with newer ca […]
Show full quote

Not sure if this will help with the newer video chipsets but I did find this a while ago in relation to vbe issues with newer cards:

https://web.archive.org/web/20020619230758/ht … /videoproblems/
"
Videoproblems
So, you are trying some of your old dos programs and find out that they will not work with your new video card. The programs tell you that your video card is not VESA compatible/ that no SVGA hardware is found or something similar. You think you need a VESA TSR but the manufacturer of your video card claims that that is not needed because your video card supports VBE 2.0/3.0.

That is what this page is about: getting those great old dos programs to work again!
It seems that a lot of programs suffer from only a few problems.
Although it is often said that new video cards are made for windows and 3d and thus have no or buggy vga/svga/VESA support this is in my opinion not true. The cards from 3dfx and NVIDIA even support VBE 3.0!
"

Unfortunately that does not work. The files in that zip are from an even older version of UNIVBE (version 5.x) and they're still not compatible with modern chipsets. There is a list of supported VGA chips, and it doesn't seem to support anything else hardware-wise.

I/O, I/O,
It's off to disk I go,
With a bit and a byte
And a read and a write,
I/O, I/O

Reply 399 of 1276, by flynnsbit

User metadata
Rank Newbie
Rank
Newbie
stamasd wrote on 2023-04-02, 13:52:
Testing SBEMU with a HP Elitebook 8470W laptop: i7-3630QM CPU, 16GB RAM, VGA card: Radeon HD7540M. Using DOS 6.22 Using SBEMU b […]
Show full quote

Testing SBEMU with a HP Elitebook 8470W laptop: i7-3630QM CPU, 16GB RAM, VGA card: Radeon HD7540M.
Using DOS 6.22
Using SBEMU beta2c.

First of all, on this laptop I cannot use ANY of the UMBs that Jemmex finds for anything else but EMS frame page. If I try to load ANY drivers high it crashes with Jemmex exceptions. The EMS if enabled and with the page frame placed at D000-DFFF seems usable. But if I disable the EMS frame and try for instance to load HDPMI32i there, instant crash.
So I tested with no UMBs, EMS enabled with frame as above, and that with SBEMU loaded leaves me with 584kB conventional memory only.
SBEMU detects and enables sound as Intel HDA.

OPL440.com: generates OPL sound normally.
Dune: works if I select OPL/AdLib sound. Does not let me enable SB sound, claiming IRQ conflict (SBEMU enables emulation on IRQ7, Dune clains IRQ7 is in use by something else).
Dune2: does not work. Game hangs at startup (not a blank screen, there is a blinking cursor but nothing happens).
Monkey Island: crashes with "integer divide by zero" error.
Duke3D: works perfectly with sound effects+music.
Frontier Elite 2: works perfectly with AdLib music
JJFFE: crashes with an endless scrolling list of Jemmex exceptions, requires hard reboot.
XCOM: works perfectly with SB sounds+music.

general note: the sound volume for all OPL and SB sound is very low in all instances where it works.

Monkey could be that known issue with fast machines, try this patch noted here:
https://web.archive.org/web/20170823020416/ht … wnload/patches/