What's new

Audio v0.70 WIP 4 Feedback

F

Fanatic 64

Guest
You could also try putting them in the same folder as Project64.exe.
 

Iconoclast

New member
Thought about telling him that, but in my experience I wouldn't recommend it.

Project64 2.0 (not 2.1) also had an issue with core directory initialization. The idea to put MSVC* dll's in the "exe folder" would not necessarily be a universal solution, nor a portable one between emulators, and could start to get redundant when testing other emulators that do a better core job for games like Donkey Kong 64.

imo it's easy: 32-bit goes in SySWoW64 if it exists =P
Many other applications can complain about missing these DLLs besides Azimer's audio plugins, so that's another reason I don't recommend specifically copying them to Project64 folder. Also, the Dependency Walker scan would fail to know the DLLs were installed correctly for this plugin, if they were just put in the "exe folder" and not SySWoW64.

So now that I've figured out emulators may play a role in crackling, can those who have had crackling try using mupen64 0.5.1? Also for those with dual cores & crackling issues, try using the dummy video plugin and see if you still get crackling.

It doesn't matter what video plugin I use (whether it's that "Dummy Video Plugin" I created, or something else), as long as my CPU usage exceeds something like 35% of a full single core on my dual-core system. Then it crackles any game with this plugin on Project64.

However, you bring up an interesting idea. I just tested it on Mupen64 0.5.1 like you said, and no longer receive the crackling that I do on Project64, even with 40+ % CPU usage. The only reason I have even the minor, lesser crackling on Mupen64 is because Pure Interpreter makes it way slower than Project64's recompiler. Even then, I have virtually no crackling, using the same plugins as I used on pj64 1.6. Switching back to Project64 1.6 EXE again with same plugins, I have about 2 % less CPU usage than the Mupen64 recompiler, but way more noticeable crackling. I wonder if the AUDIO_INFO.hWnd handle that Azimer's plugin is attaching to can in any way control the buffer quality or formula on some people's systems??
 

AIO

New member
I suggested dummy video plugin, to reduce cpu usage.

Interesting thing is, I decided to try Apollo and sure enough 0 crackling! I even tried unchecking Prevent Buffer Overuns since that option acts as a frame limiter for that emulator and I still hear no crackling in SM64's file select menu. I think my next project after RSP will be working with emulator source codes! Apollo has good potential. Hopefully my idea will work for getting Apollo to compile.
 

PistolSlap

New member
ah ok i misread. well, I wasn't able to get the depends log to open error-free. originally I was told that I needed these files:
MSVCP120.DLL
MSVCR120.DLL
GPSVC.DLL
IESHIMS.DLL
SYSNTFY.DLL

first I had downloaded the 64 bit dlls, because I am on win 7, but they didn't work in system32. when i put them in syswow64 i was told they should be 32 bit. so, after I downloaded the 32 bit dlls and put them in the syswow64, it stopped telling me that I needed those files, and instead now tells me that it is missing these files, which it never said it was missing before I added the ones it told me to add:

API-MS-WIN-CORE-COM-L1-1-1.DLL
API-MS-WIN-CORE-DEBUG-L1-1-1.DLL
API-MS-WIN-CORE-DELAYLOAD-L1-1-1.DLL
API-MS-WIN-CORE-ERRORHANDLING-L1-1-1.DLL
API-MS-WIN-CORE-FILE-L1-2-1.DLL
API-MS-WIN-CORE-FILE-L2-1-1.DLL
API-MS-WIN-CORE-HEAP-L1-2-0.DLL
API-MS-WIN-CORE-HEAP-OBSOLETE-L1-1-0.DLL
API-MS-WIN-CORE-INTERLOCKED-L1-2-0.DLL
API-MS-WIN-CORE-JOB-L2-1-0.DLL
API-MS-WIN-CORE-KERNEL32-LEGACY-L1-1-1.DLL
API-MS-WIN-CORE-LIBRARYLOADER-L1-1-1.DLL
API-MS-WIN-CORE-LIBRARYLOADER-L1-2-0.DLL
API-MS-WIN-CORE-LOCALIZATION-L1-2-1.DLL
API-MS-WIN-CORE-LOCALIZATION-OBSOLETE-L1-2-0.DLL
API-MS-WIN-CORE-MEMORY-L1-1-2.DLL
API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL
API-MS-WIN-CORE-PROCESSENVIRONMENT-L1-2-0.DLL
API-MS-WIN-CORE-PROCESSTHREADS-L1-1-1.DLL
API-MS-WIN-CORE-PROCESSTHREADS-L1-1-2.DLL
API-MS-WIN-CORE-REGISTRY-L1-1-0.DLL
API-MS-WIN-CORE-REGISTRY-PRIVATE-L1-1-0.DLL
API-MS-WIN-CORE-STRING-OBSOLETE-L1-1-0.DLL
API-MS-WIN-CORE-SYNCH-L1-2-0.DLL
API-MS-WIN-CORE-SYSINFO-L1-2-0.DLL
API-MS-WIN-CORE-SYSINFO-L1-2-1.DLL
API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL
API-MS-WIN-CORE-THREADPOOL-LEGACY-L1-1-0.DLL
API-MS-WIN-CORE-THREADPOOL-PRIVATE-L1-1-0.DLL
API-MS-WIN-CORE-TIMEZONE-L1-1-0.DLL
API-MS-WIN-SECURITY-ACTIVEDIRECTORYCLIENT-L1-1-0.DLL
API-MS-WIN-SECURITY-BASE-L1-2-0.DLL
API-MS-WIN-SECURITY-GROUPPOLICY-L1-1-0.DLL
API-MS-WIN-SECURITY-LSALOOKUP-L1-1-1.DLL
API-MS-WIN-SECURITY-LSALOOKUP-L2-1-1.DLL
API-MS-WIN-SECURITY-PROVIDER-L1-1-0.DLL
API-MS-WIN-SERVICE-CORE-L1-1-1.DLL
API-MS-WIN-SERVICE-WINSVC-L1-2-0.DLL


so i don't know what that is all about. regardless, pj64 now reads the audio plugins :D
 

Iconoclast

New member
Yeah, none of that mattered.

Only MSVCR is needed (MSVCP also if doing C++ builds). The rest of that is just faults of Microsoft.
Instead of explaining where 32-bit DLLs go I guess I should have just left it at the MSDN installer link.

Anyway this latest version you have gotten to work is best for HLE, but I've seen it won't fix main CPU bugs in DK64.
 

Iconoclast

New member
DirectSound/DirectX 8.0 versus XAudio2. Just different layers of Microsoft DirectX for audio.

If, in configuration settings of my RSP plugin, you have checked the second box from the top ("Send audio lists to audio plugin"), it generally means audio HLE. Turning that off is better for accuracy and testing my RSP interpreter. Turning it on is better for speed and for testing Azimer's and bobby smiles' audio HLE code.
 

AIO

New member
Woot! Finally was able to compile Apollo. Kinda tough deciding what to do now. Lots of things I want to fix in various source codes.

Azimer, you mind explaining exactly what Prevent Buffer Overruns does? I know it seems to reduce crackling but what I don't get why it effects frame rate of certain emulators and not others. Well it's a nice quick fix for Apollo's lack of a frame limiter option :satisfied .

I guess I'll just do a bunch of experimentation so I can learn a lot, before trying to do anything major.
 

cloudstr

New member
Hi all, i'm newbie here.. I found that since the project is compiled with MSVC 2013, this plugin no longer work with windows XP SP2 and lower operating system :(
The reason was explained in this thread: https://connect.microsoft.com/VisualStudio/feedback/details/811379/vs-2013-msvcr120-dll-not-support-windows-xp-sp2-and-earlier

I hope you can use MSVC 2012 and older version to make it compatible with old OS, it look crazy as hell but well.. there're some people don't have powerful machine to upgrade to latest OS here..

Regards
 
Last edited:

AIO

New member
Hi all, i'm newbie here.. I found that since the project is compiled with MSVC 2013, this plugin no longer work with windows XP SP2 and lower operating system :(
Well, just know that XAudio is probably worse than DS8 on windows xp.

That's a good point you brought up though. I totally forgot about that ;/ .
 

Darkness Knight

New member
Thanks for this new plugin, but I noticed a bit of crackling in my system.

Config:

Emulator: Project64 2.1.0.1.
Video: Glide64 FINAL.
Audio: Azimer's XA2 Audio v0.70 WIP4 (LLE).
Input: N-Rage Input Plugin v2 2.3c.
RSP: Static Interpreter.


Salu2 - Darkness Knight
 
Last edited:
OP
Azimer

Azimer

Emulator Developer
Moderator
A lot of responses in the last week. I appreciate the feedback and notes. A couple points I'd like to make...

First, I do intend to support Windows XP. This is something I will work on prior to the full .70 release.
Second, I have no intention of deprecating DirectSound for .70. I do intent to roll the audio code into a structure so I only need to maintain one code base. However, after .70, DirectSound will remain an option but will not be supported.
Thirdly, I still believe all these crackles are buffer related and the plugin is either not providing the XA2 engine enough data or the AI emulation is messing up the game sound buffers. More trial and error is needed and is my #1 issue.
Lastly, I am going to remain busy and not much progress done until the 21st. I am 24/7 parent until my wife finishes up some work due on the 19th. I keep trying to teach my son how to code but all he knows how to do so far is life up the mouse and point the laser directly into his eyes....
 

Iconoclast

New member
Cats love staring contests with mice.

I didn't really understand programming until I was 20 years old. It's predictable to wish that I'd started when I was 10, but actually, I feel like I don't have any regrets about it happening so much later. My fluency to effectively learn it wasn't really optimized until my curiosity for it was. Applied interests in using college math definitely helped.

So my inexperienced feeling is that I don't think programming can be optimally taught to anyone who isn't intrigued enough to keep asking oneself deeper and deeper questions about the subject...application of it, abstraction of computer hardware or otherwise.

Hi all, i'm newbie here.. I found that since the project is compiled with MSVC 2013, this plugin no longer work with windows XP SP2 and lower operating system :(
The reason was explained in this thread: https://connect.microsoft.com/Visua...20-dll-not-support-windows-xp-sp2-and-earlier

It's not exactly because MSVC 2013 compiled this plugin; it's more because of the version of Microsoft linker used to link to the DLL. With each incrementing release, Microsoft starts banning old version numbers of Windows more and more until you're forced to a minimum value of something recent like Windows Vista, 7 or 8.

It's far from impossible for this plugin to load on Windows XP, but I can see that the link-stamped OS version is "6.0" (Windows Vista) for the DLL, which I think is the default value in the project's linker settings if you don't explicitly type one. Specifying "5.1" for the subsystem version (can't seem to ask for anything lower on VS2013 myself) should be enough for Windows XP. The dependency on MSVCR120.DLL can be replaced with an older version of the CRT by using a special version of the 2013 toolkit that comes with VS2013, so that C standard library dependencies won't also cause the plugin to fail loading on Windows XP.
 

AIO

New member
I tried using HLE audio for WDC, and it didn't work ;/ . Not sure if it's because of your plugin, or if it's PJ64's fault.

Anyway, I'd love to contribute in any way I can. I'm free these days, now that I've nearly completed a goal of mine. Any updates?
 

Iconoclast

New member
It's because this game (and Stunt Racer 64) starts calling AiLenChanged before changing the DAC rate register. Since most DirectSound audio plugins, open-source or otherwise, use zilmar's traditional method of initializing DirectSound within AiDacrateChanged, it depends on the assumption that a game will never begin to play any audio before changing the value of AI_DACRATE_REG at least once. This game, along with certain others, breaks that assumption. As a result, XAudio is trying to play a sound buffer without having initialized it first.

Only Jabo and LaC seem to have had this problem voided out by doing things their own way, but, I thought for sure that Azimer's [XAudio] plugin also fixed this issue. Maybe now in WIP4, there is a regression that once again broke it. Good find.
 
OP
Azimer

Azimer

Emulator Developer
Moderator
I will check for regression in WDC. Afaik, the XA2 plugin worked just fine. I plan to get back to work next week.

Edit:

Yep WDC for XA2 is indeed broken. I think I knew this. However, the DS8 one does work. I think I was waiting to fix this when I'd come up with a new option for streaming the audio from emulated RAM.
 
Last edited:

acters124

New member
Does setting the counter factor to 1 fix the crackling and popping for any one?(all other settings are possibly irrelevant)
 

Attachments

  • possible fix.jpg
    possible fix.jpg
    106.7 KB · Views: 1,010

Frank74

New member
For Windows XP, download and install Visual C++ Redistributable Packages for Visual Studio 2013.

You need the vcredist_x86.exe.

The DS8 plugin works fine on my PentiumD 2.8Ghz PC with XP SP3. Using the latest WIP4. Tested TWINE and the speech is perfect.

XA2 WIP4 has no speech in TWINE with XP, but the music and SFX play ok.

Edit:
XA2 WIP2 has perfect speech.
 
Last edited:

AIO

New member
Does setting the counter factor to 1 fix the crackling and popping for any one?(all other settings are possibly irrelevant)
I doubt setting it to 1 would fix crackling. But if you want to test, i believe you have to exit the game and rerun it for the new settings to take effect. So have a save state handy.
Only Jabo and LaC seem to have had this problem voided out by doing things their own way, but, I thought for sure that Azimer's [XAudio] plugin also fixed this issue. Maybe now in WIP4, there is a regression that once again broke it. Good find.
Just curious, how would you know if LaC had this problem voided out? I don't think there's a way to test those games with his plugin. Did you examine his plugin or something?
 

Iconoclast

New member
Not specifically. You would just run the games under Nemu64.
Since the problem pertains just to AI threading wrt audio API initialization, what graphics plugin you use to get through to the menus hardly matters.

It isn't attributed to Nemu having its own plugin system, though. It seems similar enough to the one zilmar made and copied in that department; it's just that the actual creation of the sound device was managed better from the get-go.
 

Top