I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Discussion about old sound cards, MIDI devices and sound related accessories.

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby MaliceX » 2013-11-16 @ 03:37

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.
User avatar
MaliceX
Newbie
 
Posts: 86
Joined: 2004-10-03 @ 05:03
Location: Australia, VIC

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby Stretch » 2013-11-18 @ 00:10

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.
Win98SE - Intel SE440BX-2 - Pentium II 233 Mhz - 256 MB System Ram - Voodoo 3 1000 AGP - Yamaha YMF-724 PCI - Soundblaster 32 ISA
Stretch
Member
 
Posts: 271
Joined: 2013-11-16 @ 00:57

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby MaliceX » 2013-11-18 @ 07:18

Stretch wrote:
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).
User avatar
MaliceX
Newbie
 
Posts: 86
Joined: 2004-10-03 @ 05:03
Location: Australia, VIC

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby Stretch » 2013-11-18 @ 12:03

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
Win98SE - Intel SE440BX-2 - Pentium II 233 Mhz - 256 MB System Ram - Voodoo 3 1000 AGP - Yamaha YMF-724 PCI - Soundblaster 32 ISA
Stretch
Member
 
Posts: 271
Joined: 2013-11-16 @ 00:57

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby MaliceX » 2013-11-23 @ 09:53

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.):

Code: Select all
========================= 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
             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
User avatar
MaliceX
Newbie
 
Posts: 86
Joined: 2004-10-03 @ 05:03
Location: Australia, VIC

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby Stretch » 2013-11-23 @ 21:24

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?
Win98SE - Intel SE440BX-2 - Pentium II 233 Mhz - 256 MB System Ram - Voodoo 3 1000 AGP - Yamaha YMF-724 PCI - Soundblaster 32 ISA
Stretch
Member
 
Posts: 271
Joined: 2013-11-16 @ 00:57

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby MaliceX » 2013-11-24 @ 03:44

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.
User avatar
MaliceX
Newbie
 
Posts: 86
Joined: 2004-10-03 @ 05:03
Location: Australia, VIC

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby MaliceX » 2013-12-01 @ 05:50

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 :(
User avatar
MaliceX
Newbie
 
Posts: 86
Joined: 2004-10-03 @ 05:03
Location: Australia, VIC

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby Unknown_K » 2013-12-01 @ 06:55

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
Unknown_K
Oldbie
 
Posts: 681
Joined: 2013-4-22 @ 18:59
Location: Youngstown, OH USA

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby MaliceX » 2013-12-16 @ 05:28

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).
User avatar
MaliceX
Newbie
 
Posts: 86
Joined: 2004-10-03 @ 05:03
Location: Australia, VIC

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby Stretch » 2014-4-20 @ 03:00

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.
Win98SE - Intel SE440BX-2 - Pentium II 233 Mhz - 256 MB System Ram - Voodoo 3 1000 AGP - Yamaha YMF-724 PCI - Soundblaster 32 ISA
Stretch
Member
 
Posts: 271
Joined: 2013-11-16 @ 00:57

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby ik777 » 2014-4-20 @ 10:32

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.
User avatar
ik777
Member
 
Posts: 125
Joined: 2012-7-08 @ 13:02
Location: Seoul, Korea

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby Stretch » 2014-4-20 @ 14:04

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 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).
Win98SE - Intel SE440BX-2 - Pentium II 233 Mhz - 256 MB System Ram - Voodoo 3 1000 AGP - Yamaha YMF-724 PCI - Soundblaster 32 ISA
Stretch
Member
 
Posts: 271
Joined: 2013-11-16 @ 00:57

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby Stretch » 2014-5-03 @ 00:51

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.
Win98SE - Intel SE440BX-2 - Pentium II 233 Mhz - 256 MB System Ram - Voodoo 3 1000 AGP - Yamaha YMF-724 PCI - Soundblaster 32 ISA
Stretch
Member
 
Posts: 271
Joined: 2013-11-16 @ 00:57

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby ik777 » 2014-5-29 @ 10:38

Gigabyte GA-Z77-DS3H - code 10 error, do not buy this board for FM passthrough
User avatar
ik777
Member
 
Posts: 125
Joined: 2012-7-08 @ 13:02
Location: Seoul, Korea

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby socram8888 » 2014-8-27 @ 19:03

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/ex4gn ... ekpoke.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.
socram8888
Newbie
 
Posts: 21
Joined: 2013-8-02 @ 20:43

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby ik777 » 2014-11-07 @ 15:14

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.
User avatar
ik777
Member
 
Posts: 125
Joined: 2012-7-08 @ 13:02
Location: Seoul, Korea

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby Soeuni » 2015-12-25 @ 18:13

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.
User avatar
Soeuni
Newbie
 
Posts: 4
Joined: 2011-10-13 @ 08:15
Location: Seoul, Korea

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby Ace » 2016-2-21 @ 01:27

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.
Ace
Oldbie
 
Posts: 529
Joined: 2010-10-16 @ 17:35
Location: Montreal, Canada

Re: I've got the OPL3 synth from a CMI8738 working in Windows 7 x64

Postby Ace » 2016-3-13 @ 23:30

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.
Ace
Oldbie
 
Posts: 529
Joined: 2010-10-16 @ 17:35
Location: Montreal, Canada

PreviousNext

Return to Sound

Who is online

Users browsing this forum: No registered users and 2 guests