VOGONS


Reply 20 of 89, by MaliceX

User metadata
Rank Newbie
Rank
Newbie

Why is it that some audio drivers do not expose the I/O addresses in Device manager, and only the Memory address ranges and IRQ used? I'm trying to find the base i/o address for my YMF724 card under XP x86 but it doesn't seem to appear. Otherwise I can't exactly use a base address to poke the offset I need to enable Legacy Mode on the YMF724 under x64.

Reply 21 of 89, by Stretch

User metadata
Rank Member
Rank
Member
MaliceX wrote:

Why is it that some audio drivers do not expose the I/O addresses in Device manager, and only the Memory address ranges and IRQ used? I'm trying to find the base i/o address for my YMF724 card under XP x86 but it doesn't seem to appear. Otherwise I can't exactly use a base address to poke the offset I need to enable Legacy Mode on the YMF724 under x64.

If you download the devcon program from Microsoft, you can find all the IO addresses.

You can input in a command prompt, devcon resources *>> C:\resources.txt

My YMF744 shows up in Windows 7 x64 as "Multimedia Audio Controller" since there is no driver installed.

Win 11 - Intel i7-1360p - 32 GB - Intel Iris Xe - Sound BlasterX G5

Reply 22 of 89, by MaliceX

User metadata
Rank Newbie
Rank
Newbie
Stretch wrote:
If you download the devcon program from Microsoft, you can find all the IO addresses. […]
Show full quote
MaliceX wrote:

Why is it that some audio drivers do not expose the I/O addresses in Device manager, and only the Memory address ranges and IRQ used? I'm trying to find the base i/o address for my YMF724 card under XP x86 but it doesn't seem to appear. Otherwise I can't exactly use a base address to poke the offset I need to enable Legacy Mode on the YMF724 under x64.

If you download the devcon program from Microsoft, you can find all the IO addresses.

You can input in a command prompt, devcon resources *>> C:\resources.txt

My YMF744 shows up in Windows 7 x64 as "Multimedia Audio Controller" since there is no driver installed.

C:\Windows\system32>devcon resources *VEN_1073*DEV_0*
PCI\VEN_1073&DEV_000D&SUBSYS_000D1073&REV_03\5&36BEC05D&0&0000E4
Name: Multimedia Audio Controller
Device has the following resources reserved:
MEM : f4340000-f4347fff
IRQ : 11
1 matching device(s) found.

This doesn't tell me anything, and is the exact same information I get from Device Manager in XP (and it doesn't appear I can poke that location. also it doesn't look like I can directly access that memory address either with HxD).

Reply 23 of 89, by Stretch

User metadata
Rank Member
Rank
Member

This is the output from mine:

PCI\VEN_1073&DEV_0010&SUBSYS_00101073&REV_02\4&768C482&0&08F0
Name: Multimedia Audio Controller
Device has the following reserved resources:
MEM : e4200000-e4207fff
IO : 1000-103f
IO : 1060-1063
IRQ : 11

Win 11 - Intel i7-1360p - 32 GB - Intel Iris Xe - Sound BlasterX G5

Reply 24 of 89, by MaliceX

User metadata
Rank Newbie
Rank
Newbie

OK. After some assistance from a friend, although it's not a full solution yet, using HWcompare seems to allow me to select the PCI device and access the PCI config registers directly. Enabling the Legacy bit enables 0x220 and 0x388 to active low, which DOSBOX-DAUM seems to register. Having said that, there doesn't seem to be any output coming from the line out despite power management seemingly enabled.

Here is an output of the current status of my card under Win7 X64 (note offset 0x040 being 107F instead of 907F. read the YMF724 datasheet to know what this means.):

========================= Current PCI Device Information==========================

Audio device (VendorID=1073 (Yamaha Corporation), DeviceID=000D, Bus 8, Device 0, Function 0)

Offset (Hex) Value (Hex) Description
000 000D1073 DeviceID VendorID
004 02100006 StatusRegister CommandRegister
008 04010003 BaseClass Sub-class Prog.I/F RevID
00C 00002000 Bist HeaderType LatencyTimer CacheLineSize
010 F4340000 BAR0
014 00000000 BAR1
018 00000000 BAR2
01C 00000000 BAR3
020 00000000 BAR4
024 00000000 BAR5
028 00000000 Cardbus CIS Pointer
02C 000D1073 SubsystemID SubsystemVendorID
030 00000000 Expansion ROM Base Address
034 00000050 Reserved Capabilities Pointer
038 00000000 Reserved
03C 1905010B Max_Lat Min_Gnt InterruptPin InterruptLine
040 0000107F PCI device specific
044 000D1073 PCI device specific
048 00000001 PCI device specific
04C 00000000 PCI device specific
050 04010001 PCI device specific
054 00000000 PCI device specific
058 00000000 PCI device specific
05C 00000000 PCI device specific
060 00000000 PCI device specific
064 00000000 PCI device specific
068 00000000 PCI device specific
06C 00000000 PCI device specific
070 00000000 PCI device specific
074 00000000 PCI device specific
078 00000000 PCI device specific
07C 00000000 PCI device specific
080 00000000 PCI device specific
084 00000000 PCI device specific
088 00000000 PCI device specific
08C 00000000 PCI device specific
090 00000000 PCI device specific
094 00000000 PCI device specific
098 00000000 PCI device specific
09C 00000000 PCI device specific
0A0 00000000 PCI device specific
0A4 00000000 PCI device specific
0A8 00000000 PCI device specific
0AC 00000000 PCI device specific
0B0 00000000 PCI device specific
0B4 00000000 PCI device specific
0B8 00000000 PCI device specific
0BC 00000000 PCI device specific
0C0 00000000 PCI device specific
0C4 00000000 PCI device specific
0C8 00000000 PCI device specific
0CC 00000000 PCI device specific
0D0 00000000 PCI device specific
0D4 00000000 PCI device specific
0D8 00000000 PCI device specific
Show last 10 lines
             0DC        00000000	PCI device specific
0E0 00000000 PCI device specific
0E4 00000000 PCI device specific
0E8 00000000 PCI device specific
0EC 00000000 PCI device specific
0F0 00000000 PCI device specific
0F4 00000000 PCI device specific
0F8 00000000 PCI device specific
0FC 00000000 PCI device specific

Reply 25 of 89, by Stretch

User metadata
Rank Member
Rank
Member

I'm trying also with a YMF744 but no success so far.

I'm using RWEverything from http://rweverything.com to modify the PCI registers.

oplmode is set to "hardware" in dosbox daum.

How do I test if port 0x388 is accessible?

Win 11 - Intel i7-1360p - 32 GB - Intel Iris Xe - Sound BlasterX G5

Reply 26 of 89, by MaliceX

User metadata
Rank Newbie
Rank
Newbie

Use the peekpoke thingy on page 1 (or make your own inpout32 app) , run as administrator and peek 220 and 388. Both should return 00 to indicate they're active.

Reply 27 of 89, by MaliceX

User metadata
Rank Newbie
Rank
Newbie

So I received a CMI8738 PCI card as well as two ESS Solo-1's. The CMI8738 card is functionally DOA 🙁 (hardware detected, drivers installed, no sound at all even under normal usage in either OS-- the Line-Out jack appears to be broken), but it looks like the steps described on the first page appear to have an effect. I just can't listen to it 🙁

The ESS Solo-1 card, a lot of noise on internal loop. I/O port range for OPL3-compatible block determined however by default the I/O is closed whenever the sound driver is closed. Need to determine how the driver open routine activates to be able to access the FM block.

Noteworthy: ESS Solo-1 internal digital recording has noise bursts 🙁

Reply 28 of 89, by Unknown_K

User metadata
Rank Oldbie
Rank
Oldbie

Are the CMI8738's any good? I purchased a couple new Zoltrix Nightingale Pro 6 (8738 MX chipset) for some old 95 boxes (has the optical and coax digital IN/OUT daughter cards as well) for $7.50 shipped each.

Collector of old computers, hardware, and software

Reply 29 of 89, by MaliceX

User metadata
Rank Newbie
Rank
Newbie

At any rate, I received two more CMI8738 cards from eBay today since the first one had a busted line-out. Steps as described on the front of this thread confirmed working.. First impressions so far: it sounds very, very much like how the YMF724F-V's OPL3 component does, perhaps slightly more treble.

Timing synchronisation for real-time playback direct to 0x388 after enabling SB legacy block appears to be more tighter than the YMF724F-V with VGMPlay 0.40.4 hardware OPL passthrough playback (ie: no dropped notes), which probably validates the comment earlier that this is much more like the SB16 (and the register push timings were optimized for SB16 as well).

Reply 30 of 89, by Stretch

User metadata
Rank Member
Rank
Member

I replaced my YMF-744 with a CMI-8738 since I'm going back to Windows 7. I can get OPL working with the analog out in DOSBOX Daum, but not the spdif output. Does anyone have OPL working over spdif on a CMI-8738 (Terratec Aureon 5.1)? I know the spdif output works because mp3s and other pcm sources work.

Win 11 - Intel i7-1360p - 32 GB - Intel Iris Xe - Sound BlasterX G5

Reply 31 of 89, by ik777

User metadata
Rank Member
Rank
Member
Stretch wrote:

I replaced my YMF-744 with a CMI-8738 since I'm going back to Windows 7. I can get OPL working with the analog out in DOSBOX Daum, but not the spdif output. Does anyone have OPL working over spdif on a CMI-8738 (Terratec Aureon 5.1)? I know the spdif output works because mp3s and other pcm sources work.

Still same question, There's NO WAY.

Reply 32 of 89, by Stretch

User metadata
Rank Member
Rank
Member

I think it might be possible but you have to have a certain old CMI-8738 model. I don't yet know how to identify my revision.

From http://alsa.opensrc.org/Cmipci:

"IEC958 Mix Analog" - Mix analog PCM playback and FM-OPL/3 streams and output through SPDIF. This switch appears only on ol […]
Show full quote

"IEC958 Mix Analog" - Mix analog PCM playback and FM-OPL/3 streams and
output through SPDIF. This switch appears only on old chip
models (CM8738 033 and 037).
Note: without this control you can output PCM to SPDIF.
This is "mixing" of streams, so e.g. it's not for AC3 output
(see the next section).

Win 11 - Intel i7-1360p - 32 GB - Intel Iris Xe - Sound BlasterX G5

Reply 33 of 89, by Stretch

User metadata
Rank Member
Rank
Member

OK, I found out my Terratec Aureon 5.1 is a model 55 CMI-8738.

I got a model 33 CMI-8738, and I am able to get FM through the coax spdif cable.

But, I can't get PCM through the digital cable, so no sound FX.

Win 11 - Intel i7-1360p - 32 GB - Intel Iris Xe - Sound BlasterX G5

Reply 35 of 89, by socram8888

User metadata
Rank Newbie
Rank
Newbie

Sorry for bumping this but I want to clarify something:

  1. The file on the first post does NOT have virus. Google Drive reports that is infected because I'm using a programming language often used by script kiddies to make keyloggers and the like. I would like to upload the original source code so you could compile it, but I've lost it. However, much like Java, it can be decompiled to the original source code using programs widely available on Google.

    I've reuploaded it here: http://www.mediafire.com/download/ex4gn9wu69n … 1q/peekpoke.zip
  2. The POKE address on first page WILL NOT WORK on a YMF7x4. The said address is a hardware-specific flag for the CMI8738. Enabling the YMF7x4 OPL3 section uses another one. Though improbable, you can damage your hardware if you interact with your hardware directly, specially if you modify a register which may have another purpose on your computer.

Reply 36 of 89, by ik777

User metadata
Rank Member
Rank
Member

Finally understand about PCI-e to PCI bridge chip, and my "asm1182e" is not able to use your tweak.
And nowaday MBs use their PCI bridge chip this asmedia one.
I also experienced "IT8893E" also didn't support. If anyone still succeed in this, post your PCI-e to PCI bridge chip please.

Reply 37 of 89, by Soeuni

User metadata
Rank Newbie
Rank
Newbie
ik777 wrote:

Finally understand about PCI-e to PCI bridge chip, and my "asm1182e" is not able to use your tweak.
And nowaday MBs use their PCI bridge chip this asmedia one.
I also experienced "IT8893E" also didn't support. If anyone still succeed in this, post your PCI-e to PCI bridge chip please.

I don't think it is influenced by what PCI-E to PCI bridge chip used. Asus P8Z68-V used Asmedia asm1083 chip and supports OPL3 passthrough using DOSBOX-CVN(both YMF7x4 and CMI8738) Asus Z170-K uses same chip but do not support OPL3 passthrough.

Reply 38 of 89, by Ace

User metadata
Rank Oldbie
Rank
Oldbie

Hey guys, I've got some questions for those who managed to get OPL3 working with DOSBox Daum.

Question 1: For those who've managed to get a Yamaha sound card working, how did you get it to work? So far, I only got a CMI8738-LX working under Windows 7 Ultimate x86; no matter what I try with my Yamaha cards (YMF724, although I do also have a YMF744 that I didn't try yet), I can't get a peep from its OPL3. As I know this is genuine OPL3, I really want to get one of these cards working. And yes, both ports 220 and 388 are open (using RWEverything like Stretch did).

Question 2: Has anybody got OPL3 working under Windows 10 x64? Currently trying on an HP Workstation Z420 and I keep getting non-stop BSODs with the CMI8738 (and the YMF7x4 cards won't work since they don't have 64-bit drivers). The drivers install fine, but I consistently get BSODs with NMI_HARDWARE_FAILURE as the error. Might just be a motherboard incompatibility, but I want to make sure.

Question 3: Has anybody got OPL3 working on any Z170 chipset-based motherboard, and if so, which one? I'm looking to build a Skylake Core i7 computer and I would like a motherboard that can work with OPL3 and has two PCI slots, preferably located where they won't obstruct a PCI Express graphics card (two slots are a must as I am not going to dump my SoundBlaster Audigy 2 anytime soon - I need this card for audio sampling).

Creator of The Many Sounds of:, a collection of various DOS games played using different sound cards.

Reply 39 of 89, by Ace

User metadata
Rank Oldbie
Rank
Oldbie

I hate to bump this again, but I have a different problem in need of resolution. I got a hold of a PCI Express version of the CMI8738-LX with an ASMedia ASM1083 PCI bridge, but I am absolutely unable to access the CMI8738's registers. It seems whenever I use PeekPoke to enable OPL3 on the CMI8738-LX, the ASM1083 seems to intercept this and instead write it to itself. In this situation, the CMI8738-LX displays itself as using I/O 2000 - 20FF in the Device Manager, but when looking with RWEverything, it's actually the ASM1083 that is occupying this space! Instead of writing 08 to the CMI8738-LX, 08 is instead written to the ASM1083, and whenever I try to access the CMI8738-LX directly with RWEverything, every single register reverts to the way it was.

Would there be some way to, say, modify the CMI8738 driver to enable OPL3 by default? Unless there's some way to get around the ASM1083 and directly access the CMI8738's registers, the only other way I can think of to enable OPL3 through a PCI bridge like this that doesn't want to allow access to the chip would be to modify the drivers to enable FM when the chipset is initialized.

Creator of The Many Sounds of:, a collection of various DOS games played using different sound cards.