Pierre Bourdon
9b128e9347
Disable LPF filtering in new-ax-hle
...
The current implementation is broken and this is a non critical feature.
Fixes new-ax-hle regression in Super Monkey Ball.
2013-07-06 14:35:19 +02:00
Pierre Bourdon
7b40874309
Implement AX command 0x11 (SET_OPPOSITE_LR)
2013-07-06 14:35:19 +02:00
Pierre Bourdon
0ca7ea6c3f
D3D11: Fix glitched polygon edges when MSAA is enabled (this time without breaking OpenGL)
2013-04-07 20:58:48 +02:00
Pierre Bourdon
27e08f66b5
Fix build on OS X
2013-04-02 21:15:04 +02:00
Pierre Bourdon
eb06c62a6e
Merge branch 'new-ax-hle'
...
GC and Wii games using the AX UCode should now work almost perfectly with DSP
HLE. If you get any issue, make sure the "DSP on dedicated thread" option is
disabled, and try setting framelimit to "Audio".
As a side effect, DSP HLE should not desync anymore (making it usable in
netplay and TAS) with AX games.
Conflicts:
Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.h
Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXWii.cpp
2013-04-02 21:00:44 +02:00
Pierre Bourdon
9860137291
Initialize the audiocommon mixer on the first write to DSPCR, even if DSP is not enabled. Fixes issue 6192.
2013-04-02 20:42:07 +02:00
Pierre Bourdon
6e708005df
Implement AXWii commands 08/09, aka. "upload AUXA/AUXB and use it as a temp buffer to mix to MAIN L/R/S and AUXC L", aka. "what the fuck were they thinking?!"
2013-04-02 04:12:17 +02:00
Pierre Bourdon
0220fd1940
Implemented command 03: ADD_SUB_TO_LR
2013-04-02 03:23:48 +02:00
Pierre Bourdon
74dee41b87
Add implementation for command 02: SUB_TO_LR
2013-04-02 03:10:29 +02:00
Pierre Bourdon
5c67a0bcf6
Partial fix for the EA Wii games having no sound - implement the second OUTPUT command in AXWii. Sound in videos and musics still don't play.
2013-04-02 02:53:19 +02:00
Pierre Bourdon
49d809ac0e
Merge branch 'osx-libcxx'
2013-04-01 18:17:49 +02:00
Pierre Bourdon
4d27315cd1
Initialize the AX Thread after the sync objects are initialized
2013-03-31 01:55:41 +01:00
Pierre Bourdon
60b43eb8d3
Support the old AXWii version used in games like Wii Sports or Excite Truck
2013-03-31 00:25:00 +01:00
Pierre Bourdon
276c457bed
Basic framework to support the old AXWii version used in Wii Sports and Excite Truck
2013-03-30 22:22:57 +01:00
Pierre Bourdon
79c0316243
Disable the polyphase resampler - it causes audio glitches with non integer ratios
2013-03-30 16:59:06 +01:00
Pierre Bourdon
04f9c6793b
Fix the argument to the samples reading callback in voice processing - should fix issues with wiimote audio, untested
2013-03-30 14:39:59 +01:00
Pierre Bourdon
a813f9e13c
Support loading polyphase resampling coeffs from User and Sys in HLE
2013-03-30 14:38:14 +01:00
Pierre Bourdon
e3b0a2c9bf
Add an option to run the AX processing on the CPU thread. Fixes timing issues causing audio glitches on Wii, and should improve the overall stability of AX HLE.
2013-03-30 14:02:30 +01:00
Pierre Bourdon
c271082ec5
Add volume ramping for MAIN output, separate old volume values for each AUX channel and refactor
2013-03-30 00:55:55 +01:00
Pierre Bourdon
4b09f525f6
Fix AUX volume mixing in AXWii: implement volume ramping and MixAdd properly. Home menu sounds now work properly.
2013-03-29 22:22:24 +01:00
Pierre Bourdon
ef501137be
Fix audio glitching at the end of a voice because of bad non-looping sound handling in AXWii
2013-03-29 21:02:27 +01:00
Pierre Bourdon
43d862bff9
Keep a frame pointer register on OSX - libunwind seems to crash when it's not present
2013-03-29 09:58:30 -07:00
Pierre Bourdon
194ada2481
More MSVC 2010 build fixes
2013-03-29 07:55:56 -07:00
Pierre Bourdon
38db520617
MSVC 2010 does not have <mutex> or <thread> either, adding the Std* files back
2013-03-29 07:53:45 -07:00
Pierre Bourdon
a8513e4605
Re-add StdConditionVariable, MSVC 2010 does not support <condition_variable>
2013-03-29 07:42:41 -07:00
Pierre Bourdon
4895e38bd5
This change might work better if I git add the files
2013-03-29 07:31:15 -07:00
Pierre Bourdon
b73941c0ea
Use libc++ for Mac OS X builds now that we require >= 10.7 anyway
2013-03-29 07:29:31 -07:00
Pierre Bourdon
e9b236be05
OSX sucks at c++11
2013-03-29 13:55:55 +01:00
Pierre Bourdon
a997824f68
Add missing <functional> header include
2013-03-29 13:51:52 +01:00
Pierre Bourdon
4dc1ffbb20
Refactor the resampling code to avoid having two polyphase resampling implementations (normal/wm)
2013-03-29 13:49:36 +01:00
Pierre Bourdon
85b498ba97
Update the right cur_addr_frac after wiimote audio resampling
2013-03-29 13:18:30 +01:00
Pierre Bourdon
57d4ba8dcc
Merge branch 'master' into new-ax-hle
2013-03-29 00:49:07 +01:00
Pierre Bourdon
e81dd53b7e
Remove an obsolete documentation file
2013-03-17 18:56:01 +01:00
Pierre Bourdon
612c2e8516
Fix converting the charset of an empty string. Thanks to MrData on the forums for reporting this issue.
2013-03-17 14:37:00 +01:00
Pierre Bourdon
9a404ca6d4
Ship by default a free DSP ROM that can handle most games with LLE
...
At the end of July 2011, LM published a free DSP ROM that works with games
using the Zelda UCode. His ROM only has the code to handle UCode loading and a
few utility functions, the rest is missing. This includes the four large sound
mixing functions used by the AX UCode and the DROM containing coefficients used
for polyphase resampling in AX.
This is an improved, updated version of this ROM, which changes the following:
- We now have a free DROM that works for polyphase resampling by "emulating"
linear interpolation. The coefficients contained in the DROM are normally a
list of { c1, c2, c3, c4 } which are used to interpolate a sample value from
four previous samples:
out_sample = prev1 * c1 + prev2 * c2 + prev3 * c3 + prev4 * c4
The coefficients are chosen depending on the fractional part of the current
position (basically, our position between the previous and the next sample).
We can use this fact to generate (c1, c2, c3, c4) for each possible
fractional part so that:
out_sample = prev3 * curr_pos + prev4 * (1 - curr_pos)
Which is the formula for linear interpolation between prev3 and prev4. Linear
interpolation is not as good as polyphase resampling but it still works very
well and I couldn't really hear any difference between the two. If someone
wants to generate real polyphase filter coefficients, they are welcome to
submit a patch.
- The IROM now contains the 4 mixing functions used by the AX UCode: mix_add,
mix_add_two, mix_add_ramp, mix_add_ramp_two. They are large, inlined
functions (probably for performance reasons) in the official DSP IROM, our
version prefers to use a loop. This *should* be more performant with our DSP
JIT implementation, but I did not benchmark that.
Because the new DSP ROM is working just as well as the official ROM in 95% of
cases, it is now shipped by default with Dolphin and will be used with DSPLLE
if you don't have an official DSP ROM in User/GC. It will still display a panic
alert at every boot to notice you that you are using a non official DSP ROM
made by us, which is not perfect.
Games using the CARD, IPL or GBA UCodes are still broken. I don't know what
games this actually impacts, but this is a very small proportion compared to
what works.
2013-03-16 23:54:55 +01:00
Pierre Bourdon
a2d08d6740
Fix Dolphin starting only once then crashing at startup
2013-03-01 10:11:08 +01:00
Pierre Bourdon
07539b9a3f
Fix a StringUtil regression from the arm-noglsl merge
...
Fixes issue 6048. Thanks to Starscream for locating the regression.
2013-02-28 13:12:35 +01:00
Pierre Bourdon
bad4f7f790
Rewrite the linear interpolation SRC to give the exact same results as the one in AXWii
2013-01-25 19:16:07 +01:00
Pierre Bourdon
9776f135e2
Add polyphase resampling support in AX
2013-01-25 08:25:28 +01:00
Pierre Bourdon
1612225e79
Implement AXWii command 01: ADD_TO_LR
2013-01-21 11:51:55 +01:00
Pierre Bourdon
4ef021e975
Better global volume adjustment on a voice. Fixes one of the 2 issues with the HOME button menu sound.
2013-01-20 17:36:57 +01:00
Pierre Bourdon
7252becf24
Fix the voice LPF implementation
2013-01-20 17:20:30 +01:00
Pierre Bourdon
c662901504
Implement low-pass voice filtering, untested because I couldn't find any game using it
2013-01-20 16:15:42 +01:00
Pierre Bourdon
25419ed827
Implement Wiimote sound mixing in AXWii
2013-01-20 15:32:55 +01:00
Pierre Bourdon
35249a8576
Handle 3ms at a time in AXWii instead of 3x1ms
2013-01-20 14:42:37 +01:00
Pierre Bourdon
fb64cfd18a
AXWii: fix L/R channels being swapped when outputting audio samples
2013-01-20 07:36:48 +01:00
Pierre Bourdon
5c3bcc8f5f
Revert "Readd the old AXWii (rename the new version to NewAXWii) and set it as default"
...
Put back the new AX Wii as the default in this development branch.
2013-01-20 07:08:15 +01:00
Pierre Bourdon
905d38827e
Implement 8 bit loads backpatching
2013-01-19 16:52:13 +01:00
Pierre Bourdon
c553c42d63
Implement backpatch support for 16 bit loads
2013-01-19 16:33:52 +01:00
Pierre Bourdon
eb5e7d44bd
Enable fastmem (aka. backpatch) support on Linux amd64 and OSX x64. Not tested on OSX, 8% performance increase on Linux amd64
2013-01-13 07:00:56 +01:00
Pierre Bourdon
2c1c538fda
Disable the OpenAL and Pulseaudio audio backends
...
They are currently broken and cause sound issues which are not present in other
backends:
* OpenAL plays music 2x too fast in Zelda UCode games with HLE
* Pulse backend uses a lot of CPU power and slows down emulation significantly
Both backends are currently being re-implemented in separate branches of
Dolphin, so this should be a temporary removal.
2013-01-10 18:43:15 +01:00
Pierre Bourdon
8cfceb1186
Disable swapping cmp with instructions potentially raising interrupts
...
Workaround for issue 5864 disabling parts of an optimization in the JIT. This
is not the best solution to fix this issue, but at least it does not crash.
2013-01-08 00:02:38 +01:00
Pierre Bourdon
bcf1f54c65
Optimized the Dolphin SEO process a bit
2012-12-31 02:31:55 +01:00
Pierre Bourdon
b3ed3bdb91
Define NvOptimusEnablement to tell the Nvidia driver we need high performance
2012-12-25 13:51:13 +01:00
Pierre Bourdon
ba348c29d7
Merge branch 'new-ax-hle'
...
Only AX GC is merged so far, the new Wii AX development will be done in a
separate branch when I'll start working on it.
There are still a few AX GC bugs remaining, but overall a lot less games have
sound issues than before.
Thanks to everyone who helped test the development builds of this branch and
reported results on the forum thread.
Conflicts:
Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AX.cpp
2012-12-25 13:33:53 +01:00
Pierre Bourdon
4a74da3e87
Readd the old AXWii (rename the new version to NewAXWii) and set it as default
2012-12-25 13:30:55 +01:00
Pierre Bourdon
2c58385fe2
Revert "Uninitialized usage.. or so it thought."
...
This reverts commit 7839676c87 .
Parlane, I hate you.
2012-12-24 21:23:28 +01:00
Pierre Bourdon
65f88567b5
Added Tools/buildbot-try.sh. See http://code.google.com/p/dolphin-emu/wiki/BuildbotTry for documentation about that feature.
2012-12-22 10:51:41 +01:00
Pierre Bourdon
b0cbac174b
Implemented dpop samples support
2012-12-19 08:31:17 +01:00
Pierre Bourdon
071b27f0bb
Fix volume mixing in DownloadAndMixWithVolume (same issue with >1.0 volumes)
2012-12-19 05:56:57 +01:00
Pierre Bourdon
2c10ca4e46
Rewrite the linear sample rate conversion algorithm to make it less hacky and to support arbitrarly big ratios
2012-12-18 17:38:41 +01:00
Pierre Bourdon
1cecbaedce
Fix MixAdd with volume. The previous volume formula completely failed with volumes >= 1.0 (0x8000). Fixes Tomb Raider Legends (GC) music.
2012-12-18 07:01:22 +01:00
Pierre Bourdon
faaaa97c9e
Added a utility function to dump an AX PB for debugging
2012-12-18 07:00:24 +01:00
Pierre Bourdon
1abbfd4b15
Remove some useless 'inline' attributes from the AX HLE voice mixing functions
2012-12-18 07:00:04 +01:00
Pierre Bourdon
70b3980f46
Fix AX HLE command 12 arguments: takes 4 u16, not 1
2012-12-18 06:58:47 +01:00
Pierre Bourdon
ed59f8ff1d
Remove UCode_AX_ADPCM.h, now useless (incorporated into UCode_AX_Voice.h)
2012-12-18 05:55:40 +01:00
Pierre Bourdon
3ca77cf077
Fix samples clamping and interlacing in the OUTPUT command. Shouldn't have assumed previous AX HLE was doing something right.
2012-12-01 00:54:25 +01:00
Pierre Bourdon
04b1ee0016
Implemented command 01 (download data and mix to MAIN/AUXA/AUXB with volume control). Fixes missing weapon sounds in Metroid Prime 2.
2012-11-28 15:22:02 +01:00
Pierre Bourdon
4cf2856284
Improve savestates support in AX and AXWii
2012-11-28 03:31:46 +01:00
Pierre Bourdon
f11a40f858
Command 13 should upload only AUXA LRS, not MAIN LRS + AUXA LRS. Fixes more GC EA games sound/music (including FIFA 06, Madden 08).
2012-11-28 01:48:27 +01:00
Pierre Bourdon
1a129abe0d
AUX return data should be mixed to main buffers, not AUX buffers. Fixes a regression introduced by r954c55e35afb, now EA games sound works again.
2012-11-27 21:48:59 +01:00
Pierre Bourdon
9270b62830
Rewrite MixAUXSamples to make it more clean
2012-11-27 20:36:34 +01:00
Pierre Bourdon
2120f536d5
Implement command 07 in GC AX (download data to main LR and reset main surround)
2012-11-27 20:36:14 +01:00
Pierre Bourdon
9b1a66245e
Fix an AUX mixing issue introduced when implementing AXWii. Now FIFA 06 sounds great with AX HLE.
2012-11-27 00:03:40 +01:00
Pierre Bourdon
706939e632
Implement command 10, used by FIFA 06 and linked to AUXB mixing. Sound still broken in that game.
2012-11-27 00:03:02 +01:00
Pierre Bourdon
fb1ecd90b0
Implemented command 13 in GC AX, used in some EA games (FIFA 06 now has broken sound, which is still better than no sound)
2012-11-26 23:34:18 +01:00
Pierre Bourdon
9d85052a66
Implement Wiimote audio output in AXWii. Not very useful yet as no sound is currently being mixed to the wiimote channels.
2012-11-20 11:34:49 +01:00
Pierre Bourdon
affdf08fd6
Real fix for the crashes on Windows with AXWii
2012-11-20 09:49:27 +01:00
Pierre Bourdon
e858835c7e
Fixing the hack fix (I can't multiply 32x32)
2012-11-20 04:26:07 +01:00
Pierre Bourdon
0d3c3f6339
Fix a crash in AXWii with SRC ratio > 4 (which I thought was impossible, but AXWii changed the SRC algorithm)
2012-11-20 04:18:48 +01:00
Pierre Bourdon
321e3a8421
Add global volume handling for AUX mixing and L/R output in AXWii
2012-11-20 03:32:29 +01:00
Pierre Bourdon
ae85159a94
Add surround sound support to GC AX HLE
2012-11-20 03:22:24 +01:00
Pierre Bourdon
954c55e35a
New AXWii now working properly in some games I tested
2012-11-20 03:13:55 +01:00
Pierre Bourdon
e750bed2a9
Rename NewAX -> AX and remove the old code. Time to work on AXWii.
2012-11-19 22:03:56 +01:00
Pierre Bourdon
4f88fee560
Added a small TODO list of things missing in NewAX
2012-11-19 20:25:57 +01:00
Pierre Bourdon
3541d33c25
Support both versions of the mixer_control bitfield. Fixes Skies of Arcadia music being muted (and sounds being mixed only on the left audio channel), this time without a hack.
2012-11-19 20:10:37 +01:00
Pierre Bourdon
c8b2ba1bc6
Implement the MORE command (0D) used to read more commands from the CPU
2012-11-16 07:51:19 +01:00
Pierre Bourdon
5a2d8661d7
Add comments explaining how the voice processing works
2012-11-15 16:57:33 +01:00
Pierre Bourdon
aa90f799b7
Re-implementation of the AX voice mixing algorithm. Now with 100% less WTF.
2012-11-15 16:30:05 +01:00
Pierre Bourdon
531cc6aaf3
Fixed AUXB_NOWRITE command number and implemented UPLOAD_LRS command (06)
2012-11-14 18:08:29 +01:00
Pierre Bourdon
f84f15c5bf
Oops, forgot a memset which removed all AUX effects
2012-11-14 18:03:55 +01:00
Pierre Bourdon
a630357c9e
Add AUX mixing support as well as a send&return effect implementation
2012-11-14 17:55:16 +01:00
Pierre Bourdon
61c1fab2c6
Fix Windows support again: std::thread can't take a member pointer with StdThread.h from Common
2012-11-14 12:13:19 +01:00
Pierre Bourdon
db46ccd175
More accurate mixing buffers initialization using parameters from command 00
2012-11-14 12:08:41 +01:00
Pierre Bourdon
24d430eba0
Add NewAX to the VC++ project files
2012-11-14 11:32:57 +01:00
Pierre Bourdon
6a1241c03e
Make a hack optional to fix 48KHz output mode with NewAX
2012-11-14 11:25:27 +01:00
Pierre Bourdon
0b275c20af
Added output support to NewAX. Now working fine with Tales of Symphonia.
2012-11-14 11:20:54 +01:00
Pierre Bourdon
18f3630af5
PBs processing is now done, just need the output to be able to test
2012-11-14 06:53:36 +01:00
Pierre Bourdon
7535c6d903
Parse the AX command list in the AX thread
2012-11-14 06:15:55 +01:00
Pierre Bourdon
9e813502ac
Create a new thread for AX and make it handle the command lists
2012-11-14 05:33:04 +01:00