-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pcibios_enable_memmap_set_master_all, fix PCI command register width #74
Conversation
The PCI configuration space allow byte IO, so it's OK, only some devices doesn't support byte/word IO, but only dwords. |
Does the YMF7x4 driver (SETUPDS.EXE and DSDMA.EXE) work? And if it still doesn't work perfectly, I think we can add ymf driver support. |
Thanks. I know about the Yamaha drivers and use them for my core 2 duo machine with win98. One other thing, setupds and dsdma will freeze if you have QPIEMU.DLL loaded! |
Do such newer motherboard at least make those resources available on higher (non-legacy) ports? Because if so, it would be nice if SBEMU could redirect the OPL3 legacy port I/O to the ports on the YMF7x4 cards, instead of emulating OPL3 completely in software. That would save quite a few CPU cycles and also it would be cool to actually be using that functionality in the card, even in newer motherboards that lack support for subtractive decode. 🙂 |
I made a YMF744 version because Kamerat asked a similar question on Vogons. It only works with YMF744 or YMF754, since YMF724/YMF740 only support the legacy addresses. |
Yes, it can be done, but it will be the last solution.
Is it done by one cmdline opt, or automatically use FM if the YMF744/754 is detected? Are you planning to add PCM support to YMF754? I think it'll be great if you add PCM. :) |
It automatically detects and uses YMF744/754 if detected, and you can use both the serial port and YMF gameport for MIDI. I am trying to add PCM. I probably would have finished it over the weekend, but I got sidetracked verifying S/PDIF output, checking status bits with a logic analyzer etc. |
I finished the PCM driver, but it might not be stable. I have some weird problem where mTCP's ftp server hangs when receiving a file, after running Doom or Duke 3D. Also the volume is fixed at maximum. When I make a pull request later, is it OK to add the HW port remapping and the NULL driver? For HW port remapping, see main_hw_fmport and main_hw_mpuport in main.c: |
OK I check it later. |
Theoretically It's OK to redirect to hardware FM, but the problem is that the PCM is needed to feed muted samples to keep interrupts happening, otherwise there'll be no interrupts and SBEMU will stop working, or if the sound cards uses LOOP mode, it will play the last samples repeatedly. I was planning to remove the muted samples and then trigger AU_start on SB playback, but never did that. BTW, did it work on YMF753 (AC-XG aka ac97 without dos support)? I have a Toshiba laptop win YMF753, I could test with it. |
Btw I have 2 piece of Yamaha waveforce 192xg which is 724 with midi, but the midi is not available in dos, maybe I can test it with dsxg driver and SBEMU, with only p330 remapped. |
The way that FM/MPU/SB ports are setup on the 724 is different, so it won't work yet. YMF753 is just a tiny AC97 IC, like the Realtek AC97 ICs you can see on some motherboards. Does the ICH driver work? I tried it on a Pentium 4 motherboard. SBEMU and games run, but there is no sound at all. The PCI device is 8086:24D5 |
I haven't tested sbemu on 753, maybe it needs special handling, what about the midi of 753, can it work? |
I think that the WDM drivers use a software synth, like S-YXG50, and send PCM data to the 753. |
I added YMF724 support and made a pull request. There is a big problem with the 754. Maybe you can help? Now, the weird thing is, if you boot Linux and then immediately reboot into DOS, it works perfectly! |
Cool, I'll review the code in a day or two. There's a possibility Linux touched some registers that you missed, (not for the YMF but the PCI config space registers) I haven't check the code yet, it's all blind guess that might not help. |
Take your time. BTW, it appears that setupds will run with QPIEMU.DLL loaded, but not with HDPMI32i enabled. |
Yes that laptop's board has SBLINK and it's wired to the 754, so the DS-XG works in PCPCI mode not DSDMA. Interesting that setupds won't work with hdpmi32i, I'll check my desktop on it after merging your code. My desktop board has SBLINK too and I connected it with the 724 (All the 724 I bought have PCPCI connector except the waveforce 192xgs but they also work in DSDMA), so it works in PCPCI mode. I tested when SBLINK not connected and it also works. EDIT: I don't know whether DSDMA needs motherboard support, you can check that too. |
Is it OK to change all byte reads/writes to 16 bit word read/writes?
Maybe there is some hardware that doesn't work one byte at a time?
Also, I think pcibios_enable_memmap_set_master_all (new function) is needed for some cards like YMF7xx.