Commit Graph

2866 Commits

Author SHA1 Message Date
skidau
a6249b5388 Properly set the DMAState flag while ARAM DMA transfers are underway.
Fixes issue 6118.
2013-03-19 23:03:38 +11:00
Rachel Bryk
7c2c4662a7 Disable Vsync while holding tab to disable the frame limit, and allow toggling vsync while emulation is running in OGL.
D3D9 still doesn't support changing vsync while emulation is running.

Fixes issue 6111.
2013-03-18 20:42:18 -04:00
Ryan Houdek
b512b23407 Reenable mulli and negx, seems to work fine. 2013-03-18 07:50:52 +00:00
Jordan Woyak
8faefa3672 Windows - Don't disconnect real wiimotes on Dolphin close. (back to the old behavior)
Fixed issue 6103.
2013-03-16 18:55:01 -05:00
Jordan Woyak
98fa5006fd Fix some warnings. 2013-03-16 18:53:34 -05: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
Jordan Woyak
059e100425 Check for HID wiimote name on Windows instead of assuming everything is a wiimote.
Fixed issue 6031.
2013-03-15 21:27:46 -05:00
Ryan Houdek
8c1091a21f Merge branch 'master' into GLSL-master
Conflicts:
	Source/Core/VideoCommon/Src/PixelShaderGen.cpp
	Source/Plugins/Plugin_VideoDX11/Src/VertexManager.cpp
	Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp
2013-03-15 11:19:52 -05:00
Ryan Houdek
c93f7760ce Really clean up all the emitter loadstores on ARM. If a ARM device supports VFPv4, then it supports IDIVA, so handle that in CPUDetect. 2013-03-14 01:50:38 +00:00
skidau
85eab1d262 Used the scheduler to generate the interrupt for IPC. Fixes the ES_LAUNCH games. 2013-03-13 22:23:59 +11:00
degasus
382be2aabd Merge branch 'master' into GLSL-master
Conflicts:
	.gitignore
2013-03-12 11:28:56 +01:00
skidau
83fc5f4747 Merge branch 'FIFO-BP'
# By skidau (30) and Pierre Bourdon (1)
* FIFO-BP: (31 commits)
  Set g_bSignalTokenInterrupt on the main thread.  Fixes the random hang in Harry Potter: Prisoner of Azkaban.
  Used a scheduled event to generate the ARAM DMA interrupt if the DMA is greater than a certain size.  Fixes NFS:HP2 GC.
  Bumped up the disc transfer speed enough to prevent audio stuttering in Gauntlet: Dark Legacy.
  Enabled Synchronise GPU on "SPEED CHALLENGE - Jacques Villeneuve's Racing Vision".  Required to go in-game.
  Added direct GameCube controller commands to the Serial Interface emulation.  Fixes the controls in MaxPlay Classic Games Volume 1 and the Action Replay disc.
  Increased the FIFO buffer size to 2MB from 1MB.  Fixes Killer 7's Angel boss.
  Used an immediate GenerateDSPInterrupt when transferring data from ARAM to MRAM and a scheduled DSP interrupt when transferring data from MRAM to ARAM.
  Fixes the audio cutting in and out in the Resident Evil GC games using DSP HLE. Triggered the ARAM interrupt by the scheduler instead of directly in function.
  Implemented proper timing for the sample counter in the AudioInterface, removing the previous hack. Cleaned up some of the audio streaming code.
  Skipped the EE check if there is a CP interrupt pending.
  Disabled "Speed up disc transfer" from the ZTP GC game ini.
  Removed the disc seek times for GC games and removed the disc speed option on Wii games. Checked for external exceptions only in mtmsr.
  Delayed the interrupts in the EXI Channel.
  Merge aram-dma-fixes (r76a13604ef49b522281af75675f044d59a74e871)
  Added a patch that bypasses the FIFO reset code in Wallace and Gromit: Project Zoo, allowing it to go in-game.
  Made vertex loading take constant time.
  Increased the cycle time of the vertex command.  Fixes "Speed Challenge: Jacques Villeneuve's Racing Vision".
  Moved the setting of the Finish interrupt signal back to the main thread as it was causing Wii games like Resident Evil 4 (Wii) to hang.
  Profile stores, fp stores and ps stores only to the fifo write addresses list.  This should make the JIT a little faster as it will not be checking for external exceptions unnecessarily.
  ...

Conflicts:
	Source/Core/VideoCommon/Src/PixelEngine.cpp
2013-03-12 19:47:59 +11:00
Ryan Houdek
8406d9972d Fix JIT from rebasing on PPSSPP ArmEmitter. 2013-03-12 02:35:29 +00:00
Ryan Houdek
b94b4a9e8f Rebase ArmEmitter on PPSSPP's base. The loadstores are making my heart cry at this point. 2013-03-11 13:57:55 -05:00
Rachel Bryk
9a3633924d Dolphin needs to be restarted before playing back a wiimote movie, so let's suggest that instead of giving an unhelpful error message. 2013-03-09 02:44:24 -05:00
Rachel Bryk
723371e022 Wow, I'm dumb. Fix mismatched set/get. 2013-03-08 20:06:04 -05:00
Ryan Houdek
f6d45ea461 Fix a potential issue when someone has a CPU core that isn't available on that host set in the INI file, it would just fail out. Now it defaults to interpreter. 2013-03-08 10:52:04 -06:00
degasus
12e84f918a Merge branch 'master' into GLSL-master
this fix debug build
2013-03-07 17:05:32 +01:00
Ryan Houdek
427a26fcc2 Clean up PPCSTATE_OFF 2013-03-06 13:46:36 -06:00
degasus
a1c5e90083 Merge branch 'master' into GLSL-master
Conflicts:
	CMakeLists.txt
	Source/Core/DolphinWX/CMakeLists.txt
	Source/Core/DolphinWX/Src/GLInterface.h
	Source/Core/VideoCommon/Src/PixelShaderGen.cpp
	Source/Core/VideoCommon/Src/TextureCacheBase.cpp
	Source/Core/VideoCommon/Src/VertexManagerBase.cpp
	Source/Plugins/Plugin_VideoDX11/Src/VertexManager.cpp
	Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp
	Source/Plugins/Plugin_VideoOGL/Plugin_VideoOGL.vcxproj
	Source/Plugins/Plugin_VideoOGL/Plugin_VideoOGL.vcxproj.filters
	Source/Plugins/Plugin_VideoOGL/Src/GLUtil.h
	Source/Plugins/Plugin_VideoOGL/Src/PixelShaderCache.cpp
	Source/Plugins/Plugin_VideoOGL/Src/TextureCache.cpp
	Source/Plugins/Plugin_VideoOGL/Src/VertexManager.cpp
	Source/Plugins/Plugin_VideoOGL/Src/VertexShaderCache.cpp
	Source/Plugins/Plugin_VideoOGL/Src/main.cpp
2013-03-06 15:59:29 +01:00
skidau
0f1ef49da1 Used a scheduled event to generate the ARAM DMA interrupt if the DMA is greater than a certain size. Fixes NFS:HP2 GC. 2013-03-06 17:08:40 +11:00
Ryan Houdek
d6558e1c31 Make the (V)LDR/(V)STR instructions support negative offsets. This fixes a bug where Arm Jit couldn't load the top 33 FPRs. Also makes it so the core can access all GPRs, FPRs, and SPRs in ppcState. This increases VPS 15-20 on SSBM intro movie on ODROIDX 2013-03-06 01:51:59 +00:00
Jordan Woyak
5d47fd1dde Remove HLE_IPC_CreateVirtualFATFilesystem as it no longer takes 3 minutes to LLE like the comment says. 2013-03-04 02:39:05 -06:00
Jordan Woyak
6d50bd127d Remove hack that seems to be no longer needed. 2013-03-04 02:22:11 -06:00
Jordan Woyak
efcb2abe9b Don't open/close file for every file operation. 2013-03-04 02:21:58 -06:00
Jordan Woyak
04a33b177a Make seek mode 2 (offset from end of file) make sense. I doubt any games use this. 2013-03-04 01:42:38 -06:00
Jordan Woyak
0efe6c2124 GET_ATTR should not be returning the real filepath that we built. 2013-03-04 01:42:38 -06:00
Jordan Woyak
0041ec618c Don't null-terminate some random std::string. 2013-03-03 20:16:01 -06:00
Jordan Woyak
ae14578bc5 Eliminate some netplay gamelist ugliness. 2013-03-03 17:56:40 -06:00
Jordan Woyak
b1a2915304 Merge branch 'master' into windows-unicode 2013-03-03 15:05:10 -06:00
Jordan Woyak
cedfa452b4 Windows: Open wiimotes with the FILE_SHARE_WRITE flag like before.
This should fix issues introduced by real-wiimote-scanning.
2013-03-03 14:34:59 -06:00
skidau
61b01474fa Bumped up the disc transfer speed enough to prevent audio stuttering in Gauntlet: Dark Legacy.
Fixes issue 4644.
2013-03-03 23:35:07 +11:00
skidau
6dbd80d73e Reverted the audio streaming tweak from r7a04ec6f9220dd66147c86baaebc2f9e05d65ead as it was causing audio clipping in some Wii games like Fire Emblem: Radiant Dawn. 2013-03-03 15:20:15 +11:00
Jordan Woyak
2b1af36900 Merge branch 'master' into windows-unicode 2013-03-02 15:33:32 -06:00
skidau
643f18d28b Added direct GameCube controller commands to the Serial Interface emulation. Fixes the controls in MaxPlay Classic Games Volume 1 and the Action Replay disc. 2013-03-02 22:35:10 +11:00
Jordan Woyak
2356e5c0e7 Eliminate some baseless restrictions in PointerWrap, mainly vector<string> not working. 2013-03-02 03:32:30 -06:00
skidau
3874b46a93 Used an immediate GenerateDSPInterrupt when transferring data from ARAM to MRAM and a scheduled DSP interrupt when transferring data from MRAM to ARAM.
Changed the maximum timeslice back to 20000 as it was causing slowdown.
2013-03-02 12:37:55 +11:00
skidau
4c6bbec600 Changed the maximum slice length to 1000 from 20000. This makes the emulator check external exceptions more regularly. Fixes the audio cutting in and out in the Resident Evil GC games using DSP HLE.
Triggered the ARAM interrupt by the scheduler instead of directly in function.  Fixes a hang in Mario Super Baseball.

Fixes issue 5825.
Fixes issue 5096.
2013-03-01 20:23:55 +11:00
skidau
73da6f4f3f Merge branch 'master' into FIFO-BP
# By Jordan Woyak (46) and others
# Via Jordan Woyak (2) and others
* master: (70 commits)
  Fixes two memory leaks, one is pretty bad for OSX. Yell at pauldachz if this doesn't work. Or... say thanks.
  Added a BluetoothEnumerateInstalledServices call so that the wiimote remembers the pairing.
  Make ARMJit core default CPU core on ARM architecture
  Fix a StringUtil regression from the arm-noglsl merge
  Small improvement to cmpli/cmpi in ARMJit.
  Merge latest ArmEmitter changes from ppsspp while we're at it.
  Ah. I blame vim on this typo entirely.
  Add disabled code for authenticating wiimotes on Windows.
  Add the missing FPR cache
  Buildfix.
  Yell at the user if they change window size while dumping frames, and some other avi dumping stuff.
  Not sure if this is the right way to handle this, but it makes the save states perfectly stable. That's all that really matters, right?
  Abort loading states from incompatible graphics backends.
  ARM Support without GLSL
  Improve VideoSoftware save states. They are fairly stable, but not perfect. OpcodeDecoder::DoState() needs to be fixed.
  Begin implementing save states to video software. Kind of works, sometimes.
  Make error message for loading save state with wrong dsp engine shorter.
  Abort load state if it uses a different dsp engine, instead of crashing.
  Update the gameini of F-zero. Efb to Ram is no longer the default choice.
  fix last commit by neobrain
  ...

Conflicts:
	Source/Core/VideoCommon/Src/Fifo.cpp
2013-03-01 20:12:56 +11:00
Jordan Woyak
dea1e2827d Open std::fstream in a unicode-safe manner. 2013-02-28 19:33:39 -06:00
skidau
7a04ec6f92 Implemented proper timing for the sample counter in the AudioInterface, removing the previous hack.
Cleaned up some of the audio streaming code.
2013-03-01 11:51:11 +11:00
skidau
5c4a130688 Added a BluetoothEnumerateInstalledServices call so that the wiimote remembers the pairing. 2013-03-01 10:28:42 +11:00
Ryan Houdek
bc15919e2e Make ARMJit core default CPU core on ARM architecture 2013-02-28 16:15:32 -06:00
Rachel Bryk
0c16489c39 Merge branch 'VideoSoftware-savestates' 2013-02-28 13:36:29 -05:00
skidau
0399959c39 Skipped the EE check if there is a CP interrupt pending.
Fixes issue 4336.
2013-03-01 00:59:38 +11:00
Jordan Woyak
6f87611767 Fix "Core" to build with "Unicode". 2013-02-27 20:30:57 -06:00
Ryan Houdek
9ff704f202 Small improvement to cmpli/cmpi in ARMJit. 2013-02-27 15:17:23 -06:00
Jordan Woyak
e435851e7a Add disabled code for authenticating wiimotes on Windows. 2013-02-26 21:13:35 -06:00
Ryan Houdek
be7643cd2d Add the missing FPR cache 2013-02-27 02:15:32 +00:00
Rachel Bryk
08fe3c213a Abort loading states from incompatible graphics backends. 2013-02-26 18:28:56 -05:00