Commit Graph

14748 Commits

Author SHA1 Message Date
Scott Mansell b2f133d2ac make DeleteDirRecursively clean up correctly after failure.
Fixes Metroid prime crashing the second boot after loading
a save state (issue 9496)
2016-04-25 18:28:38 +12:00
Scott Mansell 429ae8fb01 Fix netplay desync when using wii-u adapter.
If the game sent a command to a disconnected controller, the
wii u adapter code would return a diffrent response.

This simply deletes the speclized version of RunBuffer for the
wii-u adapter as the only diffrence was the code which detected
disconnected controllers and returned a error.
2016-04-25 15:26:31 +12:00
Jules Blok 8a21b082d6 Merge pull request #3745 from stenzek/d3d11-texcache
D3D11: Fix EFB MSAA depth buffer copies, StateManager desyncs in some cases
2016-04-24 11:47:32 +02:00
Jeffrey Pfau d6517a761c VideoCommon: Simplify indirect texture lookup code slightly 2016-04-23 22:55:52 -07:00
Jeffrey Pfau aa736bf258 Revert "VideoBackend: Remove extraneous shifts from indirect texture lookups"
This reverts commit 1f1b127b69.
2016-04-23 22:55:42 -07:00
mimimi085181 fcd5170cff XInput: Apply Rumble/Motor output only on changes (again)
Disclaimer: I can't test if this works on xbox one controllers, i don't have one. But i have conformed that this UpdateMotors() is related to rumble for emulated wiimotes.

This partially reverts commit "XInput: Apply immediately as well" (1958a10b6f) from pr # https://github.com/dolphin-emu/dolphin/pull/1560

Hopefully this fixes the xbox one controller rumble issue:
https://bugs.dolphin-emu.org/issues/9071

And in theory it might reduce the used usb bandwidth, as it was originally intended before pr 1560.

@JMC47: Please do a good amount of testing, to see if this breaks rumble for wiimotes or gamecube controllers emulated with xinput devices.
2016-04-23 13:45:10 +02:00
Mathew Maidment bdb9da2104 Merge pull request #3687 from rukai/fixMakerColumn
DolphinWX: Disable 'maker' column hiding
2016-04-21 09:15:10 -04:00
EmptyChaos 49babfb60b CFrame: Fix Confirm Close
Closing Dolphin's main frame and clicking "no" does not clear
m_bClosing which means that pressing the "stop" button triggers
OnClosed which suddenly and unexpectedly closes the main frame.
2016-04-19 15:47:51 +10:00
Rukai 4cd918caf1 DolphinWX: Disable 'maker' column hiding
This was done because showing a column was broken:
Showing a column repopulates the column with no regard for the sorted
order. This results in a seemingly random order.
(actually the order of m_ISO_FILES)
2016-04-17 10:19:25 +10:00
EmptyChaos 32239f500c VideoInterface: Fix registers not being initialized
VideoInterface::Preset was not initializing all registers, this is a problem
because it leaks register settings across games. Xenoblade Chronicles does
not like m_DisplayControlRegister having random bit patterns in it.
2016-04-17 09:35:22 +10:00
Lioncash 4ae4b241ec ChunkFile: Handle bool in a stable way across platforms
bool is not always guaranteed to be the same size on every platform.
On some platforms it may be one byte, on others it can be 8 bytes if the
platform dictates it. It's implementation-defined.

This can be problematic when it comes to storing this
data to disk (it can also be space-inefficient, but that's not really an
issue). Also say for some reason you moved your savestates to another
platform, it's possible they won't load correctly due to differences in size.

This change stores all bools to savestates as if they were a byte in size
and handles the loading of them accordingly.
2016-04-14 22:55:03 -04:00
Pierre Bourdon 4d864ece27 Merge pull request #3759 from JosJuice/dvd-callback-savestates
DVDInterface/DVDThread: Don't store CoreTiming event IDs in savestates
2016-04-14 17:55:52 +02:00
Chris Burgener 02bfc62d1c Fix Windows build not copying certain files 2016-04-12 19:05:17 -04:00
Chris Burgener ab4c3314e7 Only copy relevant files for Windows builds
Fixes issue 9455: https://bugs.dolphin-emu.org/issues/9455
2016-04-12 12:20:23 -04:00
JosJuice be191c0473 DVDInterface/DVDThread: Don't store CoreTiming event IDs in savestates
CoreTiming event types aren't guaranteed to be stable across
runs of Dolphin, so they shouldn't be in savestates.
2016-04-11 22:14:25 +02:00
Pierre Bourdon 2063fc671a Merge pull request #3748 from mimimi085181/partial-updates-paletted-textures
Partial updates for paletted textures
2016-04-11 21:47:24 +02:00
Pierre Bourdon 58d8c734b8 Merge pull request #3773 from phire/if_you_want_100_cycles_ask_for_100_cycles
"Instant" ARAM DMA shouldn't schedule and event too soon.
2016-04-11 21:46:43 +02:00
Pierre Bourdon 61ea5328f7 Merge pull request #3774 from phire/Fix_Metroid_Other_M
Fix Metroid: Other M
2016-04-11 21:43:20 +02:00
degasus ef01f234df PixelShaderGen: Fixes implicit type conversion or PR #3772.
This regression did only happen on OpenGL ES.
2016-04-10 12:49:32 +02:00
Pierre Bourdon c4af588945 Merge pull request #3772 from degasus/shader_opt
PixelShaderGen: Move constant multiplication to constant generation.
2016-04-10 01:20:34 +02:00
mimimi085181 9f625417c0 Partial updates for paletted textures
This pr fixes another regression that happened after pr #3165 was merged. The shadows in mario baseball should now work again.
2016-04-09 18:22:36 +02:00
Pierre Bourdon e98fb0af84 Merge pull request #3752 from mimimi085181/remove-use-only-once-restriction-partial-updates
Remove the restriction to use efb copies only once as partial update
2016-04-09 18:10:20 +02:00
Scott Mansell 5e50c37c13 Alternative fix: promote cycleslate to an s64 everywhere.
Also changed a few functions to be static.
2016-04-10 02:13:06 +12:00
Scott Mansell 28e0607522 Fix Metroid: Other M
During boot of Other M, there is momentarily a period when VICallback's
cycles late is larger than GetTicksPerHalfLine(). Because
GetTicksPerHalfLine() returns a u32 and c++'s weird type promotion rules,
cycleslate gets promoted from a s32 to a u32 and the result of the
substraction is a really large u32.

Before ScheduleEvent accuracy improvements, ScheduleEvent took a s32, so
the result got cast back to the small negitave we expect. But it now takes
a s64 and the u32 to s64 conversion gives us a really large number (around
two seconds) and Other M times out while waiting for something.
2016-04-10 00:10:56 +12:00
Scott Mansell 662ed217d7 "Instant" ARAM DMA shouldn't schedule and event too soon.
Now that the accuracy of ScheduleEvent has changed, 0 cycles will
schedule an event as soon as possible. But this breaks ATV 2.

So we schedule it 100 cycles out (unless it's a really short copy)
2016-04-09 22:34:53 +12:00
degasus 10e4f7e7bf PixelShaderGen: Move constant multiplication to constant generation.
No need to do this within the shader per pixel if it can be done once.
2016-04-09 12:25:00 +02:00
EmptyChaos 80ff82b81a DSP: Fix integer promotion spill 2016-04-08 12:08:17 +10:00
Scott Mansell 365baeccb4 Only force progressive if we are currently in an interlaced video mode
The NES games on the Zelda Collecters Edition disk use a XFB which is
only 256 pixels wide, but has a stide of 640 pixels.

This fits our definition of a interlaced xfb, as a second line of data
could fit in the extra space. The solution is to check that we are
actually in a interlaced video mode before activating the force
progressive hack.
2016-04-06 05:12:53 +12:00
Chris Burgener 3140f9b226 Change GetStatePtr() Return to const 2016-04-05 12:45:48 -04:00
Chris Burgener 54eb8c09f9 Remove Unused Framestop Functions 2016-04-05 12:19:12 -04:00
Pierre Bourdon 3f079fb2c1 Merge pull request #3762 from mimimi085181/partial-updates-efb-copy-before-texutre
Partial texture updates: Allow the efb copy to start before the texture
2016-04-04 14:53:06 +02:00
shuffle2 c63ef18fcc Merge pull request #3760 from lioncash/vs
pch: Update Visual Studio version check
2016-04-03 17:14:45 -07:00
Lioncash 8d9221a71e MathUtilTest: Fix tests on MSVC - Document compiler bug
MSVC's implementation of numeric_limits currently generates incorrect
signaling NaNs. The resulting values are actually quiet NaNs instead.

This commit is based off of a solution by shuffle2. The only
difference is a template specialization for floats is also added
to cover all bases
2016-04-03 19:16:47 -04:00
Mathew Maidment 23f6c64525 Merge pull request #3733 from EmptyChaos/wx-playbtn-fix
WXGUI: Fix disabled play button not fading
2016-04-03 11:26:14 -04:00
mimimi085181 befb2e4809 Partial texture updates: Allow the efb copy to start before the texture
This is an oversight from pr https://github.com/dolphin-emu/dolphin/pull/3266 . Thanks to degasus for pointing this out.

It's possible that MAX_TEXTURE_BINARY_SIZE can be optimised, but i wanted to play it safe considering the 5.0 stable release.
2016-04-02 20:34:49 +02:00
Pierre Bourdon 418b8c03d5 Merge pull request #3763 from JosJuice/boot-clear-memory
Always clear memory when booting
2016-04-02 12:59:24 +02:00
JosJuice 2db2672810 Always clear memory when booting
Reading uninitalized memory is non-deterministic. We used to only
clear the memory when using EmulatedBS2_GC or FifoPlayer, but we
now do it during Memory::Init instead so it always gets done.
2016-04-01 21:35:26 +02:00
Pierre Bourdon 77c05737e9 Merge pull request #3757 from stenzek/amd-glsl-storage-qualifier
ShaderGen: Handle AMD bug with storage qualifiers in interface blocks
2016-04-01 10:05:50 +02:00
Lioncash 33c22ffab7 D3D: Amend code to fix a new VS warning
Fixes warning C4334
2016-03-30 20:59:57 -04:00
Pierre Bourdon 486d3a7114 Merge pull request #3656 from phire/windows-10-sdk-update
Updated D3D12 to build on the newer windows 10 sdk.
2016-03-30 18:37:53 +02:00
Stenzek e6b2212ec0 ShaderGen: Only specify storage qualifier in interface block when needed
Drivers that don't support GL_ARB_shading_language_420pack require that
the storage qualifier be specified even when inside an interface block.

AMD's driver throws a compile error when "centroid in/out" is used within
an interface block.

Our previous behavior was to include the storage qualifier regardless, but
this wasn't working on AMD, therefore we should check for the presence of
the extension and include based on this, instead.
2016-03-30 00:42:50 +10:00
mimimi085181 2dd9e6bfe2 Remove the restriction to apply efb copies only once as partial update
I'm not entirely sure what is happening, but this optimisation is causing an issue in Sonic Riders: Zero Gravity. Apparently the issue would also be fixed by PR#3747, but this PR should also fix similar issues.

Games that use partial updates might get slower with this, so some performance regression testing would be nice. Games like New Super Mario Bros, RS2, Zelda TP and Silent Hill. Testing with high graphics settings makes sense, since this would mostly end up in more work for the GPU.
2016-03-27 04:13:20 +02:00
Scott Mansell fbcac2598a Use a sane default for the controller update rate.
Previously the default queryed the controller 4500 times a second,
Wasn't really a problem for most games as they set it to a sane
value. But fifoplayer didn't, and so in my profile dolphin spends
12% of the cpu time reading the controllers.

This new default value (I just took what the gamecube bios set)
drops that to 1.2% of cpu time and increase the framerate of the
silent hill fifo by 10-12%
2016-03-27 09:02:52 +13:00
Scott Mansell c036cf7a5f Updated D3D12 to build on the newer windows 10 sdk. 2016-03-26 18:11:49 +13:00
Pierre Bourdon bd200bd195 Merge pull request #3736 from BhaaLseN/issue-9135
Rewrite NAND Content handling in ES to fix Issue 9135
2016-03-26 05:00:08 +01:00
Pierre Bourdon 2fd0884347 Merge pull request #3672 from EmptyChaos/d3d-anisotropy
Fix D3D Forced Anisotropy
2016-03-26 03:25:01 +01:00
Pierre Bourdon ae4cb12033 Merge pull request #3719 from Sonicadvance1/workaround_osx_video_drivers
Workaround OS X video driver bug #24983074
2016-03-26 01:43:32 +01:00
Pierre Bourdon 21eb1cd158 Merge pull request #3635 from phire/lazy_comex
Implement BLR Overflow handling for Windows.
2016-03-26 01:42:54 +01:00
Pierre Bourdon 8f74f1f4e9 Merge pull request #3601 from phire/AccurateEventScheduling
Adjust cycle counts so they are accurate to the JIT block level (Fixes OoT virtual console and other games)
2016-03-25 17:02:30 +01:00
Scott Mansell 066b6b0bcb OpenGL: Cache query to max texture size.
This showed up really high when I was profiling things.
2016-03-26 03:14:39 +13:00
Stenzek 53cf42fb06 D3D11: Fix some cases where render target switches desynced StateManager
This was occuring in certain EFB copy patterns, leaving the textures
unbound for the next draw call.
2016-03-26 00:01:26 +10:00
Stenzek 63e4e07683 D3D11: Simplify MSAA depth texture resolving
This also fixes EFB depth buffer copies when MSAA is enabled.
2016-03-26 00:00:39 +10:00
EmptyChaos 0b9a72a62d VideoCommon: Refactor TexMode0 mipmaps disabled test into a helper function 2016-03-24 13:43:29 +11:00
EmptyChaos 902e5cddf7 VideoBackends: Do not use Anisotropy on Point filtered textures.
The D3D backend was always forcing Anisotropic filtering when that is enabled regardless of how the game chose to configure the texture filtering registers; this causes the same issues as "Force Filtering" without Anisotropy, such as causing game UI elements to no longer line up adjacent correctly. Historically, OpenGL's Anisotropy support has always worked "better" than D3D's due to seeming to not have this problem; unfortunately, OpenGL's Anisotropy specification only gives GL_LINEAR based filtering modes defined behavior, with only the mipmap setting being required to be considered. Some OpenGL implementations were implicitly disabling Anisotropy when the min/mag filters were set to GL_NEAREST, but this behavior is not required by the spec so cannot be relied on.
2016-03-24 13:43:29 +11:00
Scott Mansell d61baef2f6 Disable JitArm64's inline timebase implemenation, as it's incorrect.
The interpeted version is correct.
2016-03-24 05:17:10 +13:00
Scott Mansell 27beef1ff4 Store an inverted copy of lastOCfactor.
The inverse operation is more common, especially when games check the
timer rapidly. So we do the division once and store the inverted copy.
2016-03-24 05:17:10 +13:00
Scott Mansell 407f86e01a Mark global variables with g_ prefix 2016-03-24 04:32:12 +13:00
Scott Mansell 67dc26cf1d CoreTiming: Fix 31bit overflow for events scheduling.
Events scheduled more than 4.12 seconds in the future (2.96 seconds for
Wii games) would overflow the sign bit and get scheduled in the past
instead, causing them to fire instantly.
2016-03-24 04:27:14 +13:00
Scott Mansell 2ebbfd6f85 Adjust cycle counts so they are accurate to the jit block level
Previously GlobalTimer was only updated at the end of each slice
when CoreTiming::Advance() was called, so it could be upto 20,000
cycles off.

This was causing huge problems with games which made heavy use of
the time base register, such as OoT (virtual console) and Pokemon
puzzle.

I've also made it so event scheduling will be accurate to the jit
block level, instead of accurate to the slice.
2016-03-24 04:24:53 +13:00
Scott Mansell 51dc779b7c Implement Dithering for video software 2016-03-23 12:29:35 +13:00
BhaaL 0aeac66222 clear the NAND data cache on ES_LAUNCH to avoid leaving files open
also, clear it on Device_ES::Close, just to make sure nothing remains open.
2016-03-20 13:50:19 +01:00
BhaaL a449ef4e11 properly open/close the file to avoid rapid open/close cycles
ES_OPENCONTENT and ES_CLOSECONTENT now call Open and Close respectively,
as the old code did.
2016-03-20 13:10:51 +01:00
BhaaL 8a6d9e1e0b hide the distinction between WAD and File from ES
instead, leave all the management with the NANDContentLoader.

for file data (directly on the NAND), this opens the file on-demand and
returns the requested chunk when asked for it.
for on-the-fly decrypted WAD data, we just keep the decoded buffer in
memory, like we've done before - except that we don't give away any objects
we don't want to.
2016-03-20 13:10:50 +01:00
BhaaL 8fd2f05741 remove all accesses to m_pContent
this fixes the crashes, but leaves the "else" part of ES_READCONTENT
temporarily broken until the next commit.

WAD access that are performed on the encrypted WAD will most likely fail
with this commit.
2016-03-20 13:10:49 +01:00
BhaaL 598c3dbe2f get rid of the cached pointer inside ES
only fixes half the issues, since we still cache a pointer from
SContentAccess.m_pContent to SNANDContent.m_data (which is free'd along
with the rest of the NAND data cached inside the CNANDContentManager when
ClearCache is called)
2016-03-20 13:10:48 +01:00
BhaaL 1e28d06f26 fix some style inconsistencies that drove me nuts 2016-03-20 13:10:47 +01:00
Rukai cc6a7826c0 Implements Emulation MenuBar
Save states, fullscreen, frame advance, screenshot and emulation
controls are available through the MenuBar
2016-03-20 11:44:35 +11:00
Scott Mansell c5b3a2efac Implement BLR Overflow handling for Windows. 2016-03-20 00:41:28 +13:00
Pierre Bourdon 647fec92a0 Merge pull request #3266 from mimimi085181/partial-updates-with-parts-of-efb-copies
Partial texture updates with parts of efb copies
2016-03-18 01:11:59 +01:00
Pierre Bourdon 421a67d7cc Merge pull request #3684 from Sonicadvance1/fix_vertexshadergen_asserts
Fix a few asserts in the VertexShaderGen.
2016-03-17 23:33:53 +01:00
mimimi085181 e4f984d5dd Minor fixes to the partial updates code
- remove an outdated comment about the efb to ram and scaled efb restriction
- when upscaling efb copies, mark the new texture as efb copy
- dx12 fixes for the src box, especially the number of layers for 3D
2016-03-16 22:24:11 +01:00
mimimi085181 80250f47e9 Partial texture updates with parts of efb copies new version 2016-03-16 22:24:10 +01:00
Ryan Houdek a53c0f6995 Merge pull request #3717 from degasus/videosw
VideoSW: Drop stupid state setters.
2016-03-14 09:36:12 -04:00
Ryan Houdek 95e7c247df Merge pull request #3700 from degasus/custom_textures
CustomTextures: Fix loading of the last mipmaps.
2016-03-14 09:35:40 -04:00
EmptyChaos 564341ab3d WXGUI: Fix disabled play button not being faded.
Followed from PR #3333.
2016-03-14 13:42:52 +11:00
Pierre Bourdon f0e25b8477 Merge pull request #3668 from RisingFog/wii_movie_sysconf
Apply Wii Settings on Movie Recording/Playback
2016-03-14 01:42:37 +01:00
Ryan Houdek 03071c0c5c Merge pull request #3711 from degasus/arm
JitArm64: Implement dcbx
2016-03-12 17:38:00 -05:00
Lioncash 2ce6b449d1 NonCopyable: Remove private access specifier
This isn't necessary, as the member functions are deleted.
If someone tries to perform a copy, the compiler will now
indicate that the member functions/constructors are deleted,
rather than inaccessible.
2016-03-12 16:59:45 -05:00
Lioncash 5d74e02286 NonCopyable: Specify const in copy constructor/assignment signatures 2016-03-12 16:59:45 -05:00
Ryan Houdek 4c4eaaa1d6 Merge pull request #3570 from endrift/indtev-reduce-shifting
VideoBackend: Remove extraneous shifts from indirect texture lookups
2016-03-10 13:12:47 -05:00
Ryan Houdek 3ab7806e24 Workaround OS X video driver bug #24983074
OS X's shader compiler has a bug with interface blocks where interface block members don't properly inherit the layout qualifier from the interface
block.
Work around this limitation by explicitly stating the layout qualifier on both the interface block and every single member inside of that block.
2016-03-09 09:11:00 -06:00
Pierre Bourdon a06eaabcdc Merge pull request #3721 from lioncash/net
NetPlayServer: Get rid of some explicit deallocations
2016-03-09 15:29:44 +01:00
Mathew Maidment 1c7f5b139d Merge pull request #3623 from rukai/dolphinQtAbout
DQt2: About Dialog
2016-03-09 03:16:40 -05:00
Lioncash 84b0a930da NetPlayServer: Get rid of some explicit deallocations 2016-03-08 19:31:36 -05:00
Pierre Bourdon 370e91d4c0 Merge pull request #3708 from ismail/miniupnpc-api-16
Fix build with MINIUPNPC_API_VERSION >= 16
2016-03-07 13:49:26 +01:00
degasus ab44d2ec5c VideoSW: Drop SetTevReg for colors. 2016-03-06 11:05:49 +01:00
degasus 7a154181b4 VideoSW: Drop SetScissor().
Just access the global state directly.
2016-03-06 10:24:28 +01:00
degasus 8b0fd623e5 VideoSW: Drop SetViewOffset.
Just use the global state.
2016-03-06 10:22:44 +01:00
Ryan Houdek 40931f5030 Merge pull request #3690 from aserna3/bikeshedding_bait
[Config UI] add "normal speed" to speed limit 100%
2016-03-05 11:55:06 -05:00
degasus 54a4d68c9a JitArm64: implement dcbx 2016-03-05 00:29:38 +01:00
Ryan Houdek 8f75594de7 Merge pull request #3694 from degasus/arm
JitArm64: Small improvements.
2016-03-04 18:01:25 -05:00
Pierre Bourdon 3b6af8c7a5 Merge pull request #3691 from rukai/netplayWiiRemoval
Netplay Wii Remote Removal
2016-03-04 23:45:07 +01:00
degasus 9bf50fb93d JitArm64: Fix mulli.
mulli has no inst.OE
2016-03-04 22:51:47 +01:00
degasus 9ed465f4ac JitArm64: Implement mulhwx 2016-03-04 22:51:46 +01:00
degasus 889a0d396d JitArm64: Align farcode entry points to 16 bytes 2016-03-04 22:49:02 +01:00
degasus eaa0e275db JitArm64: Use immediate WriteExceptionExit more often. 2016-03-04 22:49:01 +01:00
degasus 689205f0a4 JitArm64: small cleanup, no changes 2016-03-04 22:49:01 +01:00
degasus 7b017c6a65 JitArm64: Use a register as PC argument for the dispatcher. 2016-03-04 19:50:12 +01:00
degasus 050932ed23 JitArm64: Rename global registers. 2016-03-04 19:50:12 +01:00
degasus 57d76cefb0 JitArm64: Merge WriteExceptionExit. 2016-03-04 19:50:12 +01:00