-
Notifications
You must be signed in to change notification settings - Fork 13
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
support new OPL proxy with dynamic address #119
Conversation
It must don't break the Win9x workflow, be sure the built DLL is still be runnable on Windows 98, otherwise, please keep my old OpenWatcom built DLL for compatibility reasons (for the case of modern deployment, the new DLL will be included). |
Why not rebuild the DLL with OpenWatcom based on new source? |
Never mind, I understood what you mean as I read into proxy code. |
19fc502
to
e8c67c7
Compare
I rearranged |
e8c67c7
to
691bdc5
Compare
InpOut32Helper.zip |
I fixed things and I made a build.
@datajake1999 do you have ability to confirm this build as working? the port setting is accessible in "Settings>Hardware OPL" |
The build you uploaded isn't screen reader accessible, and I think this is because it was built with an older QT version. The latest WIN32 release is screen reader accessible and I think this is because it uses a newer QT version which has accessibility features. |
I would but I unfortunately this computer of mine doesn't have the toolchain set up for Qt5, so this is Qt4. |
Wait you may be in luck, I think Appveyor has artifacts avialable. https://ci.appveyor.com/api/buildjobs/l5sucg6by98gxb2t/artifacts/opl3-bank-editor%2Fopl3-bank-editor-dev-win32.zip |
The address of my card is EF50, but when I enter the address it only enters EF5. |
a5e8f79
to
6610332
Compare
Fixed it, it's just a dumb text input problem. |
I just tested it with the correct port address and I don't get anything from the hardware. I don't know what I am doing wrong in my code, as the InpOut32Helper I am using is the same code I use in my OPL3 MIDI driver fork, which works perfectly. |
I completed the work and I fixed the bugs, this time tried on my side with a fake DLL. Does this look fine? |
It still doesn't work. I compiled liboplproxy.dll with the _DEBUG define, and the debug log only shows the driver opening and closing, no reads or writes. |
@Wohlstand please debug on real card when you are able, if you don't mind. |
I know that some C-Media chips are lacks OPL3 chip on backend, but, I have some set of C-Media where it's is presented, so, will test on it... I was able to even run it on Windows 98 with AdLib Gold driver that played FM sound on C-Media card! |
Ok instead of playing in WINE, I tested on real Windows following these steps.
The verdict: the |
I forgot to set the chip emulator to "Proxy to the real OPL3 chip". That was the problem. It works! |
I think, the usage of real OPL3 chip would be possible on Linux too: vgmrips/vgmplay-legacy#39 |
@Wohlstand for Linux, it can be made, have a look this code here. It needs to require IO permissions from kernel, such that it can make privileged assembly calls from user space. The code needs the root and is probably 32 bit only. |
I think, yeah, a proxy daemon that will be installed into the system, or the kernel module that will become as a bridge, that would be a solution. 🦊 |
Just now I installed my CMI8738 equiped sound card to my Brother's PC and tried a test, but: @datajake1999 , a minor question: how to figure out for a sound card address on Windows? I have tried the thing, but it won't work. Also, let's then make a little manual at Wiki how to figure out for the port and begin use it? Also, @jpcima, please save the port value into settings to restore it on program restart. I have tried this build: https://ci.appveyor.com/project/Wohlstand/opl3bankeditor/builds/21296132/job/vhowa69ysxmn3rym |
@Wohlstand : the answer is given by nukeykt in this issue thread you linked yourself.
|
Done! :3 |
#118 I implemented the new OPL proxy requested by @datajake1999 with port change UI.
I have no ability to test however, can you check that I did right?