PDA

View Full Version : Shunyuan's HLE audio plugin v1.8.1



wraggster
August 4th, 2013, 20:53
via http://www.aep-emu.de/

Shunyuan updated his soundplugin for N64 (http://www.aep-emu.de/Sections-req-viewarticle-artid-17.html) emulators.
The release/diskussion thread at pj64-emu.com could be found here (http://forum.pj64-emu.com/showthread.php?t=3644).

Quote:
Shunyuan´s HLE audio plugin v1.8.1
---------------------------------
HLE audio plugin v1.8.1
---------------------------------
HLE audio plugin is written by Shunyuan with features:

* audio plugin spec #1.2 for pj64-2.0, spec #1.1 for other emulators
* XAudio2, DirectSound8 and No Sound driver support.
* XAudio2 upmix to 5.1 or 7.1
* prebuffer stream audio
* HLE interface
* LLE interface
* audio thread to update sound buffer
* tested with project64 (http://www.pj64-emu.com/) 1.6, project64 (http://www.pj64-emu.com/) 2.0, project64 (http://www.pj64-emu.com/) 2.1,
1964 (http://www.aep-emu.de/Web_Links-req-visit-lid-113.html) svn r146, 1964_ultrafast 3.0, and mupen64 (http://www.aep-emu.de/Web_Links-req-visit-lid-143.html) 5.1.
* debug OSD
* auto sync game to audio
* dynamic plugin interface
* Lua interface to tweak per game settings


Special thanks:
CXD4 for his LLE RSP plugin, source of rsp_interface here.

adnd nintendo1889 for testing and push me to improve the audio quality of this plugin every time.

--------
Note:
--------
From 2013/04/23 to 2013/05/17

I have implemented all the features that I need, so there won´t be a new release in short time.
Thanks for people that help me to develop and debug this plugin.


------------
Lua script to tweak per game settings
------------

Code:

-- -------------
-- HleAudio.lua
-- --------------
-- *Note* don´t change the file name, and this file must be at the same place as HleAudio dll (http://www.dll-files.com/)
--

-- --------------------
-- predefined function:
-- --------------------
-- SetPlaybackSetting( SettingID, Value ) ==> return none
-- GetPlaybackSetting( SettingID ) ==> return int

-- --------------------
-- predefined constant
-- --------------------

K_TRUE = 1;
K_FALSE = 0;

K_MIN_QUEUE_SIZE = 4;
K_MAX_QUEUE_SIZE = 16;

K_MIN_BLOCK_SIZE = 2048;
K_MAX_BLOCK_SIZE = 8192;

K_FixedAudioTiming = 1; -- pj64 2.x setting (read only)
K_SyncViaAudio = 2; -- pj64 2.x setting (read only)
K_HighQualityAudio = 3; -- N64 (http://www.aep-emu.de/Sections-req-viewarticle-artid-17.html) game audio frequency > 22 KHz (be careful with this setting)
K_NoSyncGameToAudio = 4; -- force HleAudio don´t sync game to audio
K_SmallAiLen = 5; -- force HleAudio to report small unplayed DMA size
K_BigAudioChunk = 6; -- audio chunk bigger than 4 KB (Top Gear Rally)
K_QueueSize = 7; -- HleAudio audio queue size (default: 8, be careful with this setting)
K_BlockSize = 8; -- HleAudio audio block size (calculate from AI_DACRATE_REG, be careful with this setting)

--
-- OnRomOpen:
-- override HleAudio playback setting in this function
-- (this function will be called by HleAudio when rom open)
--
-- in: RomName
-- game name in rom header, you can get this name from pj64 rom infromation
--
-- out: none
--
function OnRomOpen(RomName)

-- How to use:
-- (1) check rom name
-- (2) adjust settings

if RomName == "RIDGE RACER 64" then
SetPlaybackSetting(K_SmallAiLen, K_TRUE);
end

if RomName == "TOP GEAR RALLY" then
SetPlaybackSetting(K_BigAudioChunk, K_TRUE);
SetPlaybackSetting(K_SmallAiLen, K_TRUE);
end

if RomName == "Kirby64" then
SetPlaybackSetting(K_SmallAiLen, K_TRUE);
SetPlaybackSetting(K_NoSyncGameToAudio, K_TRUE);
end

if RomName == "PAPER MARIO" then
SetPlaybackSetting(K_SmallAiLen, K_TRUE);
end

if RomName == "SMASH BROTHERS" then
SetPlaybackSetting(K_SmallAiLen, K_TRUE);
SetPlaybackSetting(K_NoSyncGameToAudio, K_TRUE);
end

if RomName == "A Bug´s Life" then
SetPlaybackSetting(K_SmallAiLen, K_TRUE);
end

-- debug only, output message to debugger, you can use Lua to output debug log to text file
PrintPlaybackSetting();
end

------------
Bug Report
------------

Please post your bug report with following information:

(1) OS & System spec
Windows 7 - 32 bit, 4 GB RAM

(2) emulator spec
Project64 (http://www.pj64-emu.com/) 2.1

(3) Plugin version
HleAudio 1.7.1

(4) Game and setting
RR64 (USA)
Sound Driver=XAudio2
Playback Rate=48000
Fixed Audio Timing=0
Sync To Audio=0
VI Refresh Rate=2200
AI couter per byte=500

(5) bug description
audio speep-up (too fast)
....

(6) Did this bug exist in previous version of HleAudio?


(7) Audio Record (optional, but very useful)
download link

--------
Then I will try to fix the bug if possible.


--------
History:
--------
v1.8.1
* fix synctax error of Lua script
* fix official pj64 1.6 can´t use Lua script to tweak per game settings.
(no more need pj64 1.6 HleAudio fixed version)
* fix missing audio of Top Gear Rally

v1.8
* Open Lua interface to tweak per game settings
(official pj64 1.6 doesn´t support this feature because it won´t call audio plugin ´RomOpen´ function, use pj64 1.6 HleAudio fixed version instead)

v1.7.1u9
* Fix audio slow down for A Bug´s Life.
* Add DirectSound hardware acceleration option UI
(default is off, for Vista and Win7 you need ALchemy, 3D SoundBack or Xear3D EX to take advantage this feature)

v1.7.1u8
* Fix Super Smash Bros sound delay for PJ64 2.x
* Fix Super Smash Bros sound crackles for PJ64 1.6

v1.7.1u7
* Fix Paper Mario sound crackles
(Counter Factor=1, VI refresh rate=2200, AI count Per byte=500,Fixed Audio Timing=0, Sync using Audio=0)

v1.7.1u6
* work around the Kirby64 SP DMA read error for project64 (http://www.pj64-emu.com/)

v1.7.1u5
* add UI to select output device
(useful if you have multiple sound cards or install DSP plugin such as DFX audio enhancer)

v1.7.1u4
* playback rate support 192 KHz
* playback bits support 24 bits (now support 16 ~ 24 bit playback)
* fix no audio of Top Gear Rally (USA)
(AI Count Per Byte=500, Fixed Audio Timing=1, Sync To Audio=0)

v1.7.1u3
* fix no audio for Killer Instinct Gold (USA) 1.2

v1.7.1u2
* support XAudio2 upmix for 5.1 sound card , need to enable at configuration dialog.
(if you don´t have a 5.1 sound card like me, try SRS Audio SandBox)

v1.7.1u1
* fix XAudio2 crash at pj64 1.7.0.50b23
* fix audio speed up issue reported by nintendo1889
* fix pj64 1.7.0.50b23 compatibility error reported by Goldlink11

v1.7.1
* fix no audio after restore game state
* fix audio speed up of Mystical Ninja Starring Goemon
* fix cannot change sound driver after end emulation
* fix compatibility issue of pj64 1.7.x

v1.7
* dynamic interface for project64 (http://www.pj64-emu.com/) 2.x and other emulators, now HleAudio will provide interface 1.2 to pj64-2.0,
and provide interface 1.1 to other emulators.
* add XAudio2 driver support
* add No Sound driver support
* remove the redundant initialization and checking from HLE emulation

v1.6.2
* improve the audio quality when "Fix Audio Timing" and "Sync to Audio" options off
* improve the frame rate for N64 (http://www.aep-emu.de/Sections-req-viewarticle-artid-17.html) games of 32 KHz audio
* release the source code of rsp_interface

Now you can turn "Fix Audio Timing" and "Sync to Audio" on or off, both ways work.

v1.6.1
* add OSD to show the plugin internal data in real time
(need RivaTuner Statistics Server to display OSD)
* implement auto sync game to audio feature for otehr emulators. Now N64 (http://www.aep-emu.de/Sections-req-viewarticle-artid-17.html) games with 32 KHz audio
such as Zelda OOT, Bomberman 64, F-Zero X should sound better without crackles on 1964 (http://www.aep-emu.de/Web_Links-req-visit-lid-113.html), mupen64 (http://www.aep-emu.de/Web_Links-req-visit-lid-143.html), pj64 1.6.

v1.6
* change interface to Zilmar´s common audio plugin spec, version #1.2,
because only project64 (http://www.pj64-emu.com/) 2.x emulator core supports "Sync using Audio" feature
* integrated with Project64 (http://www.pj64-emu.com/) setting manager (no data yet).

v1.5
* integrated with project64 (http://www.pj64-emu.com/) 2.0 "Fix Audio Timing" & "Sync using Audio" option
- now Bomberman 64, Zelda OOT, Resident Evil 2 sound crackles should be fixed
- when these two options are enabled.
* fix the bug sometimes no audio when playing more than one rom
* fix the noises when enter plugin settings
* fix the sound crackles of RR64