Commit graph

18884 commits

Author SHA1 Message Date
Léo Lam
68156a02ed Fix -Wunused-result warnings 2016-10-23 00:43:08 +02:00
Léo Lam
df76f2910b DVDInterface: Fix warnings (-Wformat) 2016-10-22 19:28:29 +02:00
aldelaro5
edd3177813 Fix a schedule event assert on ClearCacheThreadSafe
I didn't know that telling that you don't schedule from the CPU thread prevents an assert because it by default assumes you use the CPU thread, but in the case of ClearCacheThreadSafe, it's used from the GUI thread.
2016-10-21 20:25:11 -04:00
Jules Blok
2536e37ec5 Merge pull request #4194 from Armada651/efb-source-format
PixelShaderGen: Add support for RGBA6 EFB format truncation.
2016-10-21 21:45:29 +00:00
JosJuice
2fc2baf376 Merge pull request #4369 from lioncash/config
DolphinWX: Minor include changes to config panes/dialogs
2016-10-21 22:04:09 +02:00
JosJuice
a2644cd102 Merge pull request #4363 from lioncash/wx-menu
DolphinWX: Move main menu creation into a wxMenuBar subclass
2016-10-21 21:44:56 +02:00
Lioncash
855061682e GameCubeConfigPane: Add forward declaration for TEXIDevices 2016-10-20 10:42:32 -04:00
Lioncash
934b32acfb GeneralConfigPane: Add <vector> include
Ensures the class member is always resolved correctly.
2016-10-20 10:16:49 -04:00
Lioncash
2bd7f7f0d8 AdvancedConfigPane: Add necessary includes to header
time_t is defined in ctime, and u32 is defined in CommonTypes.
2016-10-20 10:14:26 -04:00
Lioncash
24cf46aa5a GCAdapterConfigDiag: Cull includes in header file
Prevents dragging in unnecessary headers into other including files.
2016-10-20 10:09:19 -04:00
Lioncash
42e1dafd6d Frame: Rename GetCmdForHotkey to GetMenuIDFromHotkey
This more accurately describes what it's actually doing. This can also be
a local function, since it's not needed anywhere else.
2016-10-20 09:54:39 -04:00
Lioncash
f871b2177e DolphinWX: Move main menu creation into a wxMenuBar subclass
Keeps the actual GUI elements separate from the frame code.
2016-10-20 09:54:29 -04:00
JosJuice
c170f0b460 Movie: Add missing calls to UpdateWantDeterminism
Fixes https://bugs.dolphin-emu.org/issues/9681
2016-10-20 14:47:45 +02:00
JosJuice
ae2cf370e1 Movie: Add missing includes 2016-10-20 14:22:42 +02:00
shuffle2
43169d897f Merge pull request #4354 from sepalani/bp_rmtmp_it
BreakPoints: ClearAllTemporary uses valid iterators
2016-10-17 14:14:10 -07:00
JosJuice
7876430a71 Merge pull request #4120 from JosJuice/dvdthread-queue
DVDThread queue
2016-10-16 14:48:06 +02:00
Vincent Duvert
8bb459aae5 VideoCommon: Fix GetInterpolationQualifier calls
Commit 4969415 modified calls to GetInterpolationQualifier, but mistakenly changed the order of some boolean parameters: GetInterpolationQualifier(true, false) was changed to GetInterpolationQualifier(…, false, true).

Should fix #9783.
2016-10-16 12:48:32 +02:00
shuffle2
ad956559d5 Merge pull request #4336 from ligfx/smarteraudioconfigpane
AudioConfigPane/AudioCommon: various GUI cleanups
2016-10-15 22:56:05 -07:00
shuffle2
720cb34573 Merge pull request #4347 from SeannyM/android-wii-control
Android: On-screen classic controller + Wii controller select
2016-10-15 22:51:27 -07:00
shuffle2
e30d31aa66 Merge pull request #4334 from ligfx/fixcontrollerdialog
InputConfigDialog: use SelectObjectAsSource in UpdateBitmaps
2016-10-15 22:45:27 -07:00
shuffle2
d84f0c34e8 Merge pull request #4358 from SeannyM/android-aspect
Android: Fix some settings
2016-10-15 22:38:31 -07:00
shuffle2
472d5078e6 Merge pull request #4351 from leoetlino/no-idea-device
IPC_HLE: Remove unused _Unimplemented_Device_ device
2016-10-15 22:35:10 -07:00
shuffle2
1e9f052ea5 Merge pull request #4357 from ligfx/notresponsibleforhw
HW: Don't be responsible for g_controller_interface
2016-10-15 22:18:20 -07:00
shuffle2
ce5c8c28b2 Merge pull request #4302 from leoetlino/graceful-fixes
Minor fixes to graceful shutdown
2016-10-15 21:47:07 -07:00
Sean Maas
662cedfb78 Android: Fix some settings 2016-10-15 23:14:48 -04:00
shuffle2
d2d4edf964 Merge pull request #4352 from lioncash/fwd
NANDContentLoader: Add IOFile forward declaration
2016-10-15 16:38:58 -07:00
Michael Maltese
a082e9324f HW: Don't be responsible for g_controller_interface
Currently, `g_controller_interface` is initialized and shut down by each
of `GCKeyboard`, `GCPad`, `Wiimote`, and `HotkeyManager`.

This 1) is weird conceptually, because it necessitates passing a pointer
to the native window to each of those classes, which don't need it, and
2) can cause issues when controller backends are initialized or shutdown
multiple times in succession.
2016-10-15 16:37:39 -07:00
Léo Lam
a0a246bf3e Only attempt a graceful shutdown when there's a STM hook
For Wii graceful shutdown to work, the emulated software has to open
the STM event hook and install a hook. Without this, there is no way
to inform them about the shutdown, so trying to do a graceful shutdown
and requiring the use of the shutdown fallback (exiting a second time
to force) is pointless.
2016-10-15 22:28:07 +02:00
Léo Lam
48ff76d495 DolphinWX: Update GUI properly after unpausing
If an unpause was forced by the graceful shutdown code, the UI was
previously not updated.
2016-10-15 21:58:55 +02:00
Léo Lam
fa009ab6f6 DolphinWX: Exit after closing main window or on signal
Previously Dolphin would only exit if the main window is closed,
and Confirm on Stop is enabled.

This makes Dolphin's behaviour more consistent by always exiting
if the main window is closed or on shutdown signal.
2016-10-15 21:58:55 +02:00
Sepalani
771fa943dc BreakPoints: ClearAllTemporary uses valid iterators 2016-10-15 19:21:41 +01:00
JosJuice
a6bb1b642a DVDInterface: Better memory locality for DTK byteswapping 2016-10-15 15:28:23 +02:00
JosJuice
e1f6ab5592 DVDThread: Remove s_dvd_thread_done_working and fix race condition
s_dvd_thread_done_working makes the logic more complicated,
and degasus pointed out a race condition that can happen if
the CPU thread calls WaitForIdle right in between the DVD
thread executing done_working.Set() and done_working.Reset()
while there is work left to do. To avoid this, let's just get
rid of s_dvd_thread_done_working. It's a relic from the old
DVDThread design. Thanks to the last few commits, WaitUntilIdle
only gets called rarely (disc change and savestate), so it's
not a problem if WaitUntilIdle ends up being slower.
2016-10-15 15:28:15 +02:00
JosJuice
f1879cc356 DVDInterface: Reorder variables
Might as well do this while I'm already breaking
savestate compatibility.
2016-10-15 15:28:11 +02:00
JosJuice
98fb037dee DVDInterface: Handle DTK beyond 4 GiB
Might as well do this while I'm already breaking
savestate compatibility.
2016-10-15 15:28:06 +02:00
JosJuice
a450e33fb3 DVDInterface: Read DTK data in DVDThread 2016-10-15 15:28:02 +02:00
JosJuice
28bfd52d3a DVDInterface: Prepare for reading DTK data in DVDThread 2016-10-15 15:27:54 +02:00
JosJuice
aabb17b7c9 DVDThread: Use queues
This makes it possible to submit a read without waiting for
the previous read to finish.
2016-10-15 15:27:16 +02:00
degasus
1cc1876002 Revert "Merge pull request #4286 from shuffle2/Aestek-clean-osd"
This reverts commit 5c0fa4db4f, reversing
changes made to b8731eb818.
2016-10-15 12:44:37 +02:00
degasus
b8a1611f4a Revert "Merge pull request #4287 from shuffle2/typo-fix"
This reverts commit 6bff97ea30, reversing
changes made to 5c0fa4db4f.
2016-10-15 12:33:27 +02:00
JosJuice
a2f352c422 DVDThread: Use structs for requests and results
This is a preparation for adding a queue to DVDThread.
Currently, s_read_request and s_read_result act somewhat like
queues that only can contain one object.
2016-10-15 11:32:11 +02:00
Lioncash
d9eb7c4e80 NANDContentLoader: Add IOFile forward declaration
This would previously fail to compile when included in files that do not
include FileUtil.h due to lack of a type declaration.

This moves the constructor and destructor into the cpp file in order to
satisfy the requirements of unique_ptr construction and deletion. That is,
unique_ptr requires a concrete type at the point of construction and
destruction. If the constructor or destructor is left in the header, then
at the point of construction or destruction, IOFile will still be
considered an incomplete type, as unique_ptr's deleter will still only be
able to see the forward declaration, which it can't use.
2016-10-14 20:27:22 -04:00
Léo Lam
8e78477631 IPC_HLE: Remove unused _Unimplemented_Device_ device
Unless I'm misreading the code, it doesn't look like this serves any
purpose, and is only polluting the logs.

_Unimplemented_Device_ looked like a device name that was picked to
be used somewhere else in Dolphin, but this doesn't seem to be the case
since 2012 (d95e31a removed the only other usage of this fake device).
2016-10-14 23:27:55 +02:00
Markus Wick
183f3c3759 Merge pull request #4332 from leoetlino/sync-sysconf-on-exit
ConfigManager: Sync Dolphin settings to SYSCONF on exit
2016-10-14 09:57:10 +02:00
Sean Maas
f981098438 Android: On-screen classic controller + Wii controller select
It's now possible to switch between a horizontal or vertical Wiimote
with no extension, a Wiimote with a Nunchuk, a Classic Controller,
or a GameCube Controller when running a Wii game.
2016-10-13 21:31:36 -04:00
shuffle2
3a52885e7a Merge pull request #4349 from container1234/bba
EXI: Fix incorrect byte order when writing 3-byte data to BBA_WRTXFIFOD
2016-10-13 15:59:31 -07:00
Mat M
14facbc438 Merge pull request #4339 from lioncash/wx-menu
DolphinWX: Move debugger menu item creation to CFrame
2016-10-13 15:45:20 -04:00
container1234
5716d2bc0e Fix incorrect byte order when writing 3byte data to BBA_WRTXFIFOD 2016-10-13 23:33:17 +09:00
Markus Wick
5541237b74 Merge pull request #4346 from degasus/framedump_sw
VideoSW: Use VideoCommon frame dumping.
2016-10-13 16:05:08 +02:00
Sean Maas
126117cdf7 Android: Use the light theme for emulation 2016-10-12 22:45:03 -04:00
Mat M
b15bcc6aa0 Merge pull request #4341 from degasus/syncgpufix
SyncGPU: Fix savestate.
2016-10-12 07:23:38 -04:00
degasus
df5eff9ab7 VideoSW: Use VideoCommon frame dumping. 2016-10-11 22:32:06 +02:00
Markus Wick
7d5363ffa8 Merge pull request #4337 from degasus/framedump
AVIDump: Move CoreTiming into caller.
2016-10-11 22:25:28 +02:00
Rohit Nirmal
dc1b35fa4b Fix building with PCH disabled. 2016-10-11 14:25:14 -05:00
degasus
22681ad975 SyncGPU: Fix savestate. 2016-10-11 18:29:53 +02:00
Lioncash
6a67b571cc DolphinWX: Move creation of debugger menu items into CFrame
Unifies the creation of all the menus into the main frame class.
Now it isn't spread out across the main frame and the code window.

This doesn't alter the placement of the handling functions, as this would
involve unrelated changes, since it would require modifying where
window-related variables are placed. This will be amended in a follow up
changeset.
2016-10-10 19:53:33 -04:00
Lioncash
6420a1c715 Frame: Separate menu creation into individual functions
Keeps related menu items together based on top level menu. This will be
more convenient in the future when debugger menu bar item handling is
moved to CFrame, as it won't be a huge amount of code in one function.

This also makes it easier to locate menu bar code whenever it needs to be
changed.
2016-10-10 16:45:31 -04:00
Jules Blok
ab5054c34e VideoBackends: Always enable dual-source blending if supported. 2016-10-10 17:32:51 +02:00
Jules Blok
93109df654 PixelShaderGen: Use dual source blending to do 8-bit blending. 2016-10-10 15:34:55 +02:00
Jules Blok
d61ae5a88a PixelShaderGen: Only set dither uid bit if actually used. 2016-10-10 14:32:21 +02:00
Jules Blok
23d9d91411 VideoConfigDiag: True color means 24-bit, not hw color. 2016-10-10 14:32:21 +02:00
Jules Blok
e8cddae132 VideoConfig: Turn on ForceTrueColor by default. 2016-10-10 14:31:53 +02:00
Jules Blok
365e88e311 VideoConfig: Add an option to force RGB8 EFB format. 2016-10-10 14:31:53 +02:00
Jules Blok
31a4ee7bfc PixelShaderGen: Always truncate the alpha channel to 6-bit. 2016-10-10 14:30:14 +02:00
Jules Blok
9bc466a443 PixelShaderGen: Add support for dithering. 2016-10-10 14:30:14 +02:00
Jules Blok
b958457e51 PixelShaderGen: Add support for RGBA6 EFB format truncation. 2016-10-10 14:27:30 +02:00
degasus
9f264c0872 AVIDump: Move CoreTiming into caller. 2016-10-10 12:03:18 +02:00
Markus Wick
a583d36c7f Merge pull request #4326 from degasus/framedump
Framedump: Merge screenshot code with framedumping.
2016-10-10 11:48:57 +02:00
Michael Maltese
c253076564 AudioConfigPane: clang-format 2016-10-09 19:34:11 -07:00
Michael Maltese
78655e5fed AudioConfigPane: gray-out extra text for disabled controls 2016-10-09 19:33:50 -07:00
Michael Maltese
a0ebafe9a9 AudioConfigPane: move DPL2 decoding into 'Backend Settings' 2016-10-09 19:22:18 -07:00
Michael Maltese
45903b7b4d AudioCommon: SupportsDPL2Decoder, SupportsLatencyControl, SupportsVolumeChanges 2016-10-09 19:18:16 -07:00
Michael Maltese
4834a90e63 AudioConfigPane: dedupe code into ToggleBackendSpecificControls 2016-10-09 19:10:24 -07:00
Sean Maas
05f78a7707 Android: Add custom control scaling
Also put all touch control settings under a "Configure Controls" submenu
so the in-game menu isn't so cluttered.
2016-10-09 19:00:32 -04:00
Michael Maltese
6b2f6e3884 InputConfigDialog: use SelectObjectAsSource in UpdateBitmaps
Fixes issue [Configuring an Emulated Wiimote crashes the application on
OS X 10.12 Sierra][1]

[1]: https://bugs.dolphin-emu.org/issues/9832
2016-10-09 15:31:42 -07:00
Léo Lam
8a0b292f07 ConfigManager: Sync Dolphin settings to SYSCONF on exit
4319 made Dolphin not read/write directly to the SYSCONF and read
settings from the SYSCONF at boot, and only write Dolphin settings
to the SYSCONF at emulation startup.

However, this also made it a bit confusing, because if settings were
changed, then Dolphin was exited without starting a game in between,
the settings wouldn't actually get persisted. This is fixed by
syncing Dolphin settings with the SYSCONF when Dolphin exits.
2016-10-09 17:15:24 +02:00
shuffle2
c8cb1fa7d7 Merge pull request #4319 from leoetlino/sysconf
Don't read/store settings directly from/to SYSCONF (and fix config restore)
2016-10-09 02:34:52 -07:00
shuffle2
3ec91a4e33 Merge pull request #4330 from ligfx/no_vulkan_on_mac
Don't build Vulkan video backend on macOS
2016-10-08 20:58:18 -07:00
Helios747
7efb272629 [UI] Remove idle skipping from game properties 2016-10-08 18:16:15 -05:00
shuffle2
23b5a41e0e Merge pull request #4313 from lioncash/u8
HW: Change u8 pad specifier params to int where applicable
2016-10-08 14:10:10 -07:00
Markus Wick
a86b2c15d8 Merge pull request #4322 from Helios747/I_hate_features
Remove Frameskip
2016-10-08 21:41:43 +02:00
degasus
64927a2f81 Renderer: Merge screenshot logic into VideoCommon. 2016-10-08 19:38:57 +02:00
anthony
b427ead0cc Remove Frameskip 2016-10-08 11:49:51 -05:00
degasus
21e42c68c4 Renderer: Remove write-only variable.
Sorry, merge failure.
2016-10-08 18:26:43 +02:00
degasus
db0509560e AVIDump: Hard code rgba. 2016-10-08 18:16:32 +02:00
degasus
0864ef4352 VideoCommon: Add custom stride for framedumping. 2016-10-08 15:44:54 +02:00
degasus
1ef5ba0c53 D3D: Skip redundant format convertions. 2016-10-08 15:40:49 +02:00
degasus
b5a91e1dfa Framedumps: Add finish() function to limit memory lifetime. 2016-10-08 15:39:22 +02:00
degasus
ebc617882b VideoCommon: Drop RepeatFrameDumpFrame helper.
This was needed with fixed framerate dumping. As we now synchronize the frames, the last one will just get padded.
2016-10-08 15:39:21 +02:00
sigmabeta
01b8a937ff Fix games being invisible in the game list on non-TV devices 2016-10-08 08:57:32 -04:00
Léo Lam
afd2f58e29 Don't read/store settings directly from/to SYSCONF
Instead of directly reading/storing settings from/to the SYSCONF, we
now store Wii settings to Dolphin's own configuration, and apply them
on boot. This prevents issues with settings not being saved, being
overridden and lost (if the user opens a dialog that writes to the
SYSCONF while a game is running).

This also fixes restoring settings from the config cache after a
graceful shutdown; for some reason, settings were only restored
after a normal shutdown.

Fixes issue 9825 and 9826
2016-10-08 14:37:55 +02:00
Markus Wick
b0acf1bf8f Merge pull request #4323 from degasus/png
ImageWriter: Don't use inplace alpha truncation.
2016-10-08 12:10:40 +02:00
degasus
d078309827 ImageWriter: Don't use inplace alpha truncation.
This may lead to errors in the D3D backend, as we overwrite read-only memory.
2016-10-08 12:02:49 +02:00
Markus Wick
6e8901de17 Merge pull request #4315 from stenzek/vulkan-aspect
Vulkan: Handle forced aspect ratio changes at runtime
2016-10-08 11:53:22 +02:00
Stenzek
176b00ded7 Vulkan: Handle forced aspect ratio changes at runtime 2016-10-08 18:59:46 +10:00
Markus Wick
0e5fc56bc9 Merge pull request #4316 from lioncash/debug
DebugInterface: Make GetRawMemoryString return a std::string
2016-10-08 10:48:45 +02:00
Markus Wick
1a2d71cb58 Merge pull request #4310 from lioncash/dsptable
DSPRegisterView: Minor changes
2016-10-08 10:40:14 +02:00
Markus Wick
4ba1100f31 Merge pull request #4269 from degasus/singlecore
Fifo: Fix SyncGPU on dual core mode.
2016-10-08 01:26:34 +02:00
Léo Lam
39fd6dcd5b Fix missing includes
Aren't indirect includes great?
2016-10-07 23:46:41 +02:00
degasus
8c999f9ee8 VideoCommon: Mark framedump variables as private.
And rename them to the new naming scheme.
2016-10-07 23:17:21 +02:00
degasus
e82cf46436 Vulkan: Use VideoCommon framedump helpers. 2016-10-07 23:17:16 +02:00
degasus
6b08830a95 D3D12: Use VideoCommon framedump helpers. 2016-10-07 23:15:10 +02:00
degasus
64b648f6c8 D3D: Use VideoCommon framedumping helpers. 2016-10-07 23:10:36 +02:00
degasus
a530708bb1 OGL: Use VideoCommon framedump helpers. 2016-10-07 23:09:10 +02:00
degasus
f45ddddf1c VideoCommon: Add shared framedumping code. 2016-10-07 23:07:40 +02:00
degasus
34d733d376 OGL/Render: Drop write-only variable. 2016-10-07 21:44:52 +02:00
Markus Wick
5e027a0817 Merge pull request #4314 from lioncash/dsp-interface
DSPEmulator: Move common variable into base class
2016-10-07 18:27:09 +02:00
Lioncash
ee71d70738 DebugInterface: Make GetRawMemoryString return a std::string 2016-10-07 10:26:26 -04:00
Lioncash
8b29b09f24 DSPLLE: in-class initialize variables 2016-10-07 09:13:56 -04:00
Lioncash
aaa1da5abc DSPEmulator: Move common variable into base class 2016-10-07 08:55:54 -04:00
Lioncash
9cab4e414c HW: Change u8 pad specifier params to int where applicable
Using u8 as indexers is kind of silly, since the rest of the public API
essentially uses int for this sort of thing. Changing these to int also
gets rid of quite a few implicit truncations.

This also allows for getting rid of similar silliness in the netplay API.
2016-10-07 08:14:12 -04:00
Michael Maltese
f301ebf780 Don't build Vulkan video backend on macOS
There's no official implementation of the Vulkan API,
and Dolphin currently isn't set-up to work with the
single, commercially-available third-party implementation.
2016-10-06 16:53:55 -07:00
Markus Wick
3245ca236a Merge pull request #4307 from stenzek/vulkan-palette-srcformat
Vulkan: Use correct source format to determine palette size
2016-10-06 21:29:28 +02:00
Markus Wick
ff1d70d708 Merge pull request #4308 from aldelaro5/memcheck-gui-relabel
Label debugger memchecks as "Memory Breakpoints" in the GUI
2016-10-06 21:29:14 +02:00
Lioncash
2ba0d6eb77 DSPRegisterView: Get rid of magic numbers 2016-10-06 13:02:49 -04:00
Lioncash
5dedd0a85b DSPRegisterView: Make DSPRegisterView's constructor explicit 2016-10-06 12:36:32 -04:00
Lioncash
2781ae5af1 DSPRegisterView: Mark classes as final
These aren't intended to be extended upon.
2016-10-06 12:35:31 -04:00
Lioncash
66fd347d2e DSPRegisterView: Move private members below public API 2016-10-06 12:29:37 -04:00
Lioncash
f935485158 DSPRegisterView: Get rid of explicit memsets 2016-10-06 12:29:32 -04:00
Markus Wick
f028b7079e Merge pull request #4252 from degasus/android
Android: Update the gradle file to use android studio 2.2 cmake.
2016-10-06 18:13:09 +02:00
aldelaro5
549060c5b4 Label debugger memchecks as "Memory Breakpoints" in the GUI
This is done to remove confusions among potential debugger users and to also make it more accurately tell what this feature is actually doing.  Despite being true that it is using a memcheck (and it certianly checks that memory), the idea being to break on a memory access isn't really obvious especially considering that memchecks are also used in full MMU emulation to handle exceptions.  It also doesn't help that memchecks are now supported in every builds.

It also changes the corresponding log because this log would be wanted by the user which means it should be more obvious that it was caused by the "memory breakpoint".
2016-10-06 10:51:43 -04:00
Stenzek
010514bd39 Vulkan: Use correct source format to determine palette size
Fixes blur in fortune street fifologs.
2016-10-06 21:55:27 +10:00
Markus Wick
3c822f2c55 Merge pull request #4304 from stenzek/pool-reuse
TextureCache: Don't re-use pooled textures within the same frame
2016-10-06 12:27:23 +02:00
Stenzek
b6d09c61ed TextureCache: Don't re-use pooled textures within the same frame
This is an issue because a driver may have to maintain two copies of a
texture if it batches all uploads together at the start of a frame.

In the Vulkan backend, we do something similar to avoid breaking out of a
render pass to copy a texture from the streaming buffer to the destination
image.

This was causing issues in the sms-bubbles fifolog, where an EFB copy to
the same address of a previously-used texture caused the previous texture
to be re-used again for a different image later on in the frame, causing
the original contents to be discarded.
2016-10-06 20:23:37 +10:00
Markus Wick
062de51d70 Merge pull request #4305 from stenzek/vulkan-framedump-fix
Vulkan: Fix minor issues with frame dumping on Vulkan
2016-10-06 10:58:45 +02:00
degasus
05eff01229 Android: Update the gradle file to use android studio 2.2 cmake. 2016-10-05 23:44:10 +02:00
Sepalani
aa63253838 HLE: Logs nlPrintf calls 2016-10-05 19:15:26 +01:00
Stenzek
b39ac950eb Vulkan: Don't save borders to screenshots/frame dumps
This matches the behavior on GL, making for easier comparisons.
2016-10-05 22:28:51 +10:00
Stenzek
400ba3c7e5 Vulkan: Stop dumping frames on shutdown if left enabled 2016-10-05 22:28:51 +10:00
Stenzek
c422fb7e82 Vulkan: Set alpha channel of swap chain buffers to 1.0.
Copying the alpha channel from the game causes issues with frame dumping,
since we're using a buffer directly from the GPU as a source for AVIDump.
2016-10-05 22:02:04 +10:00
Stenzek
abb5a64919 Merge pull request #4295 from stenzek/vulkan-dbz-bloom
Vulkan: Fix bug with palette converted EFB copies
2016-10-05 20:24:36 +10:00
Markus Wick
ef1bfc26b2 Merge pull request #4291 from degasus/shader_gen
PixelShaderGen: Fix UID issues.
2016-10-05 12:20:58 +02:00
shuffle2
22d9259926 Merge pull request #4180 from LAGonauta/oal-warning-fix
Fix for false error about unqueuing buffers (OpenAL)
2016-10-04 19:41:01 -07:00
shuffle2
f7e25483e6 Merge pull request #4293 from lioncash/pcast
CommonFuncs: Get rid of pointer casting
2016-10-04 19:10:34 -07:00
LAGonauta
d4759a55b6 Fix for false error about unqueuing buffers (OpenAL)
and hopefully added saner error reporting.
2016-10-04 21:57:36 -03:00
shuffle2
d1df222367 Merge pull request #4297 from sepalani/hle_patch
HLE: Remove duplicate in OSPatches
2016-10-04 17:39:50 -07:00
shuffle2
5d3853d854 Merge pull request #4288 from aldelaro5/reduce-logged-filename
Reduce the filepath of logs
2016-10-04 17:39:25 -07:00
shuffle2
71aa243333 Merge pull request #4298 from sepalani/hle_bp
HLE: Wrong array used in BP patching fixed
2016-10-04 17:38:06 -07:00
shuffle2
44323c5c23 Merge pull request #4301 from sepalani/hle_log
HLE: Another DebugPrint case added
2016-10-04 17:35:24 -07:00
shuffle2
50fef592d7 Merge pull request #4296 from RisingFog/fix_frame_dump
Fix frame dumps on file close in certain situations
2016-10-04 17:25:40 -07:00
shuffle2
9be6f38988 Merge pull request #4292 from shuffle2/fix-saving-log-settings
Restore saving logger settings to .ini
2016-10-04 17:16:51 -07:00
Sepalani
58f5cd944c HLE: Another DebugPrint case added 2016-10-04 21:40:43 +01:00
aldelaro5
6ee799ba7c Reduces the the filename of logs
Using cmake and GCC, logs would contain the full file path when logging making logs lines unnecessarily long.  This is solved by just removing anything before "/Source/Core/" (where / is whatever your OS uses to separated directory).
2016-10-04 16:34:26 -04:00
Sepalani
6e8c5040df HLE: Wrong array used in BP patching fixed 2016-10-04 16:47:06 +01:00
Sepalani
61580b0dec HLE: Remove duplicate in OSPatches 2016-10-04 16:33:47 +01:00
Chris Burgener
43c48a6f48 Fix frame dumps on file close in certain situations 2016-10-04 09:26:23 -04:00
Stenzek
db09c05eec Vulkan: Fix bug with palette converted EFB copies
This happened when the source texture was an EFB copy, therefore it had
not been populated prior to the draw command buffer being executed, and
the conversion was occurring in the init command list.
2016-10-04 22:30:37 +10:00
Shawn Hoffman
55af20a439 Remove '\n' from OSD messages; they would be converted to '?' 2016-10-04 03:52:13 -07:00
Lioncash
d15d99ecc2 CommonFuncs: Get rid of pointer casting 2016-10-04 05:12:23 -04:00
Shawn Hoffman
7de9ff10a8 Restore saving logger settings to .ini 2016-10-04 02:02:07 -07:00
shuffle2
ea33405feb Merge pull request #4270 from stenzek/vulkan-defer-fix
Vulkan: Miscellaneous minor fixes
2016-10-04 01:47:59 -07:00
EmptyChaos
116348a877 WxDebugger: Move branch line indent 2016-10-04 19:28:01 +11:00
EmptyChaos
94aff7e47e WxDebugger: Fix variable width fonts in Code/Memory views 2016-10-04 19:17:47 +11:00
degasus
6d2827ff6b PixelShader: Drop redundant warning.
This warning was raised both on UID generation and on shader generation.
2016-10-04 10:13:46 +02:00
degasus
083be0832f LightingShader: Drop xfmem usage.
Our shaders must only depend on the UID, not on any global state.
2016-10-04 10:13:46 +02:00
degasus
829fc8f0ad PixelShaderGen: Drop dstAlphaMode constant in shader generation.
It is already stored within the UID.
2016-10-04 10:13:46 +02:00
Shawn Hoffman
fead9a05bc Fix static_assert raised by commit 789975e350 2016-10-04 00:56:02 -07:00
shuffle2
ab01dec178 Merge pull request #3806 from degasus/idle
ConfigManager: Drop SkipIdle option.
2016-10-03 23:59:38 -07:00
Markus Wick
cf3513f7fc Merge pull request #4123 from hthh/improve-const-stores
Jit: FIFO optimization improvements
2016-10-04 08:32:48 +02:00
degasus
40aa54447d Jit64: Drop very outdated comment about idle skipping. 2016-10-04 08:31:43 +02:00
degasus
0c67297ea0 ConfigManager: Drop SkipIdle option.
This option is safe + deterministic, so let's always enable it.
2016-10-04 08:31:43 +02:00
Shawn Hoffman
c11aba296c Follow-up for OSD cleanup:
people probably want to see decimal instead of hex...
2016-10-03 20:42:04 -07:00
shuffle2
5c0fa4db4f Merge pull request #4286 from shuffle2/Aestek-clean-osd
Clean OSD messages code
2016-10-03 20:09:35 -07:00
EmptyChaos
c4f5ced37c WX: Replace SetIcon with SetIcons(wxIconBundle)
Setting a single icon at a single resolution doesn't scale well,
Windows requires a 16x16 icon for the window and a 32x32/48x48 for
the taskbar. Providing all icons produces less pixellated results at
HiDPI.
2016-10-04 13:47:22 +11:00
EmptyChaos
27d295ec7e WX: HiDPI: FrameAUI / Debugger
Changes:
  - MemoryWindow was cleaned up and gives more feedback on searches.

Some bugs were fixed as well:
  - A complex bug that allowed tearing off tabs and opening multiple
    copies of a debug panel which lead to segfaults
  - Another segfault related to right-click menus on code/memory views
    when those tools were floating in their own window.
2016-10-04 13:47:22 +11:00
EmptyChaos
f39c301579 WX: HiDPI: NetPlay
Several refactors of GUI creation into separate functions where the
function was too large or intermixed different concerns making it hard
to modify.
2016-10-04 13:47:22 +11:00
EmptyChaos
ef0d21299a WX: HiDPI: VideoConfigDiag
Resolved "TODO" for Texture Cache safety, added explanation message.
Resolved "TODO" for default description, no longer uses default text for sizing

Fixed a memory leak in PostProcessingConfigDiag where it was never freeing any
of the objects it allocated in its constructor.

Minor design change to PostProcessingConfigDiag to give padding around elements
consistent with the rest of Dolphin's user interface (5px).
2016-10-04 13:47:22 +11:00
EmptyChaos
2dfd04d7a5 WX: HiDPI: TASInputDlg 2016-10-04 13:47:22 +11:00
EmptyChaos
ac404517a3 WX: HiDPI: InputConfigDiag
Slight redesign of Control Configuration sub-window since SL_LABELS can't be
used with DolphinSlider.
2016-10-04 13:47:22 +11:00
EmptyChaos
741dfce05e WX: HiDPI: ControllerConfigDiag
Minor appearance change to align wiimote and gamecube sections.
2016-10-04 13:47:22 +11:00
EmptyChaos
a4d633de15 WX: HiDPI: Config Panes 2016-10-04 13:47:22 +11:00
EmptyChaos
c893447913 WX: HiDPI: CheatsWindow
Changed the Cheat Search tab to disable the scan buttons while there is
not a game running and enable when it starts. Also added double-click to
create code to the result list.
2016-10-04 13:47:22 +11:00
EmptyChaos
8fe94c3c50 WX: HiDPI: FifoPlayerDlg 2016-10-04 13:47:22 +11:00
EmptyChaos
b6fb56e978 WX: HiDPI: MemcardManager
Required a partial rewrite of the image loading code because it was working in
unscaled wxBitmaps. Needed to make it produce wxImages and scale them instead.
2016-10-04 13:47:21 +11:00
EmptyChaos
3b11581aff WX: HiDPI: ISOProperties
And related ARCodeAddEdit/PatchAddEdit.

Change ISOFile to use wxImage instead of wxBitmap since bitmaps require
a screen context and banner images have a fixed resolution.
2016-10-04 13:47:21 +11:00
EmptyChaos
42b6ea4c81 WX: HiDPI: AboutDolphin 2016-10-04 13:47:21 +11:00
EmptyChaos
107d4afb08 WX: HiDPI: Dolphin Main UI (CFrame) 2016-10-04 13:47:21 +11:00
EmptyChaos
73a20551df WX: HiDPI Support Framework
Portable flexible HiDPI image loading and other support for Windows/GTK/OSX.
2016-10-04 13:47:21 +11:00
Shawn Hoffman
fa5fa8e094 Clean OSD messages code
Some OSD messages were displayed in RenderBase.cpp using global variables and some code duplicated
in OnScreeDisplay.cpp.
Now all messages are displayed using functions in the OSD namepace.

* OSDChoice and OSDTime global variables are gone
* All OSD logic is kept at the same place
* All messages are properly aligned
* Clean characters for all OSD messages

Original commit:

commit f0ec61c057
Author: Aestek <thib.gilles@gmail.com>
Date:   Sun Aug 7 16:08:41 2016 +0200
2016-10-03 19:37:18 -07:00
shuffle2
4573cc89fa Merge pull request #4285 from RisingFog/its_a_curse_to_recurse
Fix frame dump crash when resolution changes
2016-10-03 18:49:44 -07:00
Chris Burgener
55478af832 Fix frame dump crash when resolution changes 2016-10-03 19:50:35 -04:00
Shawn Hoffman
2b0f7d2669 Re-add saving position of netplay window. 2016-10-03 15:57:32 -07:00
Shawn Hoffman
41e7c43d0d NetPlay: add one click host
Add a context menu entry in main game list to host a netplay game
based on saved settings.

Original commit:
commit 91aaa958e6
Author: Aestek <thib.gilles@gmail.com>
Date:   Sun Jul 24 14:51:37 2016 +0200
2016-10-03 15:34:49 -07:00
shuffle2
46b6a32b46 Merge pull request #4281 from shuffle2/Tilka-jit_bitwise
Jit64: use domain-appropriate instructions
2016-10-03 15:05:33 -07:00
Léo Lam
6fba48cd15 MemoryView: Don't segfault if Core isn't running
There was a bug that caused MemoryView to indirectly cause a segfault;
the simplest way to reproduce it is 1) start a game; 2) stop the game;
3) click on the Refresh button and watch Dolphin segfault.

This commit fixes it by only calling PowerPC::HostIsRAMAddress when
emulation is running.
2016-10-03 23:45:02 +02:00
Léo Lam
6ff06ed41d WII_IPC_HLE: Clean up variable naming
It doesn't make much sense to prefix g_ to static variables and for
some to be completely unprefixed.

Also renames a lot of other variables for the new conventions
2016-10-03 23:13:10 +02:00
Léo Lam
8912bb3ff4 Back up part of SYSCONF when switching to emulated BT
This fixes an issue where the Bluetooth info section could be fully
filled up by syncing 5 Wiimotes in passthrough mode then switching to
emulated Bluetooth; emulated Wiimotes were then unable to be used.

The "real" SYSCONF section is now backed up before being replaced with
a blank section that the emulated BT adapter can always fill with 5
Wiimotes without issues.

This backup is restored by the passthrough code, instead of during
the Bluetooth mode switch because this should be done regardless of the
user interface, and even without UI (if the config file is edited
manually).
2016-10-03 23:13:09 +02:00
Léo Lam
b91095a9fc IPC_HLE/57e_305: Fake vendor-specific command replies
Homebrew programs seem to rely on getting a reply to the vendor
specific commands, without which Bluetooth initialisation will never
complete.

This vendor-specific command is typically used to patch the Wii's
Bluetooth module, so the replies are only faked when the passed through
adapter is not a Wii Bluetooth module.
2016-10-03 23:13:09 +02:00
Léo Lam
5b50b1e1aa WII_IPC_HLE/57e_305: Store link keys
This stores the address of paired devices and associated link keys.
It is needed because some adapters forget all stored link keys when
they are reset, which breaks pairings because the Wii relies on the
Bluetooth module to remember them.

It doesn't fix adapters that can't remember any link key
at all and always return 0 for the number of stored/written link keys.
For those adapters, there is no fix.

This also improves the usability of passthrough mode for adapters that
already work, since pairings will now keep working even if the link
keys get cleared by something else (for example by the host Bluetooth
stack).
2016-10-03 23:13:09 +02:00
Léo Lam
e63b07f73b ControllerConfigDiag: Improve the UI
The ControllerConfigDiag design was getting confusing, so more
significant changes needed to be done.

Firstly, the GC controller and the Wiimote section layouts have been
aligned for consistency.

The Balance Board source chooser is a checkbox.

The "general settings" that affect the SYSCONF have been moved to the
Wii pane in the Config dialog. It makes more sense because those
affect the Wii's settings in the NAND, unlike the other options.

Another reason for moving it is that the Controller Config Dialog was
getting pretty crowded, and the whole section is disabled when
emulation is running, which is wasted space.

The Wiimotes section is now organised by two radio buttons. One is for
the Passthrough Mode, with sync/reset buttons under it; the other is
the emulated Bluetooth mode, which still has the regular Wiimote source
choosers, the Continuous Scanning controls and the Enable Speaker Data
option (which only applies to the emulated BT mode).

Hopefully this should make things a bit clearer and look cleaner.

(This is a monolithic commit because separating UI changes is hard)
2016-10-03 23:13:09 +02:00
Léo Lam
419a9c55e4 WII_IPC_HLE/57e_305: Fake CommandReadBufferSize replies
Apparently, Nintendo's Bluetooth stack expects the ACL packet buffer
size to be limited to 10.

Reporting anything higher than that could cause memory corruption,
which can result in warning messages in the logs ("event mismatch"),
and more annoyingly, random disconnects.

Thanks to shuffle2 for the fix!
2016-10-03 23:06:23 +02:00
Léo Lam
4b47997cf8 Add ability to passthrough a Bluetooth adapter
This adds the ability to passthrough a whole Bluetooth adapter and skip
the majority of the Bluetooth emulation code. We use libusb to send HCI
commands, receive HCI events and transfer ACL data directly to the
first adapter that is found or to a specific adapter (if configured to)

This is possible because the Wii's Bluetooth module is actually just
a pretty standard Bluetooth adapter…

…except for two vendor-specific commands, for which replies are faked,
and also for the sync button. This adds a hotkey that works in the
exact same way as the sync button would on a Wii: it triggers an HCI
event, which emulated software interpret as a command to perform
a BT inquiry.

This commit also changes the UI code to expose passthrough mode
and WII_IPC_HLE to be a bit more thread safe (for the device map).
2016-10-03 23:06:23 +02:00
Léo Lam
59a17db6c4 Add a __LIBUSB__ define
This allows us to only check if __LIBUSB__ is defined, which is cleaner
than checking for __LIBUSB__ and _WIN32.
2016-10-03 21:07:12 +02:00
shuffle2
2c66f5bdc0 Merge pull request #4283 from leoetlino/misc-warning-fixes
Fix a few warnings
2016-10-03 12:03:52 -07:00
shuffle2
f63b767f78 Merge pull request #4280 from shuffle2/lioncash-misc
VideoCommon: Minor changes
2016-10-03 12:03:00 -07:00
Léo Lam
04c1757b49 Fix a few warnings 2016-10-03 19:29:35 +02:00
Léo Lam
fad17246db InputCommon: Fix formatting issues in Quartz
This wasn't caught by the lint script because it was broken (by me) at
some point :(

If it had been rebased, it wouldn't have passed lint
2016-10-03 18:59:52 +02:00
Shawn Hoffman
f000bb7590 Jit64: use domain-appropriate instructions
Original commit:
commit 62d3423ccf
Author: Tillmann Karras <tilkax@gmail.com>
Date:   Wed Nov 18 20:32:20 2015 +0100
2016-10-03 07:15:26 -07:00
Shawn Hoffman
86112c7258 VideoCommon: Minor changes
Make Renderer::GetMaxTextureSize return u32 instead of int.
2016-10-03 06:51:46 -07:00
shuffle2
cc66f0336f Merge pull request #3963 from JosJuice/banner-loaded-failure
VolumeGC: Set m_banner_loaded when banner loading fails
2016-10-03 06:33:52 -07:00
shuffle2
f121fa07c2 Merge pull request #2868 from sepalani/dolphin_ssl
Dolphin new Dump SSL features
2016-10-03 06:16:49 -07:00
shuffle2
e38ddfd787 Merge pull request #4111 from EmptyChaos/startup-perf-langs
InputCommon: Fix slow startup on some Windows systems with language packs (Issue 9744)
2016-10-03 04:02:54 -07:00
Shawn Hoffman
b7dbc58c27 quick fix to prevent heap corruption by overwriting 4bytes of 1byte sysconf element 2016-10-03 03:43:01 -07:00
shuffle2
2db2e88620 Merge pull request #4010 from leoetlino/relative-input
Add relative input for the Wiimote IR
2016-10-03 03:26:04 -07:00
shuffle2
4b62d41728 Merge pull request #4090 from leoetlino/hidapi
WiimoteReal: Add a hidapi IO implementation
2016-10-03 03:20:17 -07:00
shuffle2
2747fd3a0d Merge pull request #4102 from ligfx/quartz_input
Add Quartz/CoreGraphics controller interface for default k&m events
2016-10-03 03:13:58 -07:00
Léo Lam
2511bfdb8a WiimoteReal: Make the connected Wiimote check common
This moves the unordered_map used to store connected Wiimotes IDs to
WiimoteReal, and makes the ID insert/erase logic common so we don't
have to duplicate this code in scanner backends.
2016-10-03 11:43:05 +02:00
Léo Lam
222f7e6fc3 WiimoteReal: IOWin: Remove duplicate code
The Balance board detection logic is already implemented in a simpler
way in Wiimote::IsBalanceBoard() (since hidapi also needs it).

Therefore, IOWin now only needs to check if a device is a Wiimote.
2016-10-03 11:41:23 +02:00
Léo Lam
132ca8d02c WiimoteReal: hidapi: Add support for the Balance Board
A name change isn't enough for the DolphinBar; we have to actually
query the Wiimote to know if the Wiimote is a Balance Board.
2016-10-03 11:41:23 +02:00
Léo Lam
d9a9e34994 WiimoteReal: Disconnect the Wiimote if IOWrite fails
This is intended to make reconnecting Wiimotes easier with a DolphinBar.
Unfortunately, this change isn't enough as it doesn't always catch
disconnections for Wiimotes connected with a DolphinBar.

But it's better than nothing and eventually a disconnection will be
detected when something tries to write to the Wiimote, instead of never.

There is no other solution as the DolphinBar always exposes 4 HIDs even
when the associated Wiimotes are not connected.

We could try to detect this using the fake input reports sent by the
DolphinBar, but this only works for the first HID (probably because of
a bug in the firmware?), so this method is not an option.
2016-10-03 11:41:23 +02:00
Léo Lam
53d553d2b0 WiimoteReal: Fix race between shutdown and FindWiimotes
If FindWiimotes() took more time than the UI shutting down, the scanner
would try connecting a Wiimote and sending an event to the UI code
long after it has shut down, which causes a segfault.

This fixes the race by ignoring any found Wiimotes during shutdown.

Normally this would have never happened, but it is possible with hidapi
since Wiimotes can be connected before Dolphin starts.
2016-10-03 11:41:23 +02:00
Léo Lam
1ff94c5f2d DolphinWX: Prevent crash with Wiimote connected on start
wxWidgets causes a segfault if Host_ConnectWiimote is called and we try
to create an event from the Wiimote scanner thread while the GUI is
still initialising.
2016-10-03 11:41:23 +02:00
Léo Lam
843b030eda WiimoteReal: Add a hidapi IO implementation
Based on ca0c2efe7a. Credits go to flacs.
However, unlike the original commit, hidapi does not completely replace
the current implementations, so we can still connect Wiimotes with 1+2
(without pairing).

Also, it is only used on Linux and OS X for now. This removes the
advantage of having only one implementation but there is no other
choice: using hidapi on Windows is currently impossible because
hid_write() is implemented in a way that won't work with Wiimotes.

Additionally:
* We now check for the device name in addition to the PID/VID so we can
  support the Balance Board and maybe third-party Wiimotes too. This
  doesn't achieve anything with the DolphinBar but it does with hidraw.
* Added a check to not connect to the same device more than once.
2016-10-03 11:41:23 +02:00
shuffle2
5045fc869c Merge pull request #4188 from degasus/dynamic-bat
Dynamic bat: Merge failure and small cleanup
2016-10-03 02:37:33 -07:00
Stenzek
28e5fa8d26 Vulkan: Handle both destination alpha and logic ops being enabled
Same way as GL with the dual-pass fallback. Not highly accurate, but does
fix the Kirby shadow bug.
2016-10-03 19:11:50 +10:00
Stenzek
f595fe080f Vulkan: Fix bug with fractional LOD bias and min/max LOD 2016-10-03 19:11:48 +10:00
Stenzek
5e29508b8f Vulkan: Fix vsync behavior when throttler is temp disabled 2016-10-03 19:11:48 +10:00
Stenzek
b193282830 Vulkan: Correct logic for handling target and window size changes
Should fix a possible reference to deleted framebuffers, as well as fixing
the issues with the render area being correct if the game's source area
changes, or auto-scaling is enabled.
2016-10-03 19:11:47 +10:00
Stenzek
7d14b9b48b Vulkan: Add missing call to TextureCache::OnConfigChanged
This was preventing certain settings from being updated when changed at
runtime.
2016-10-03 19:11:47 +10:00
Stenzek
4a8766cec4 Vulkan: Fix resource leaks present at shutdown and mode changes
Infrequent, but still happened.
2016-10-03 19:11:47 +10:00
Stenzek
1286c309e3 Vulkan: Fix compilation on 32-bit targets 2016-10-03 19:11:47 +10:00
degasus
12f050bb8e Fifo: Fix SyncGPU. 2016-10-03 10:38:16 +02:00
degasus
f7e07f8f3b MMU: Don't generate virtual memory area on 32bit builds.
There is no JIT, so no need for fastmem. This memory won't be used at all.
2016-10-03 10:26:23 +02:00
degasus
0de1c6c99c MMU: Sort physical access by common access pattern. 2016-10-03 10:26:23 +02:00
degasus
d1488d0dc4 MMU: Drop force inline usage.
This is not needed, the compiler will do it on it's own if required.
2016-10-03 10:26:19 +02:00
degasus
4b3e388bd7 Jit64: Fix merge failure of dynamic_bat. 2016-10-03 10:15:52 +02:00
degasus
ebc47a4b36 Memmap: Drop redundant global bFakeVMEM flag. 2016-10-03 10:15:52 +02:00
EmptyChaos
76558c4d87 HLE: Fix warnings 2016-10-03 18:49:08 +11:00
shuffle2
d139659ea2 Merge pull request #4276 from lioncash/code
GeckoCode: Provide operator== and operator!= overloads
2016-10-03 00:01:23 -07:00
Lioncash
e8cd5a3979 GeckoCode: Provide operator== and operator!= overloads
Same thing but allows both GeckoCode and Code to be utilized directly
without predicates for equality/inequality in stardard algorithms

The size check for std::vectors is unnecessary, as this is built into std::vector's operator==
2016-10-03 02:32:43 -04:00
shuffle2
332c9b514b Merge pull request #4275 from lioncash/net
NetPlaySetupFrame: Use an anonymous namespace instead of static
2016-10-02 22:59:35 -07:00
shuffle2
09fd2fd8e2 Merge pull request #4015 from EmptyChaos/wx-misc-fixes
WX: Fix pop-under (win) / game list garbage (win) / language support (Linux)
2016-10-02 22:46:14 -07:00
shuffle2
fba6801851 Merge pull request #4216 from EmptyChaos/geckocodes-cleanup
GeckoCodes: Don't run PPC code in CoreTiming callbacks
2016-10-02 22:37:51 -07:00
EmptyChaos
09372a55da GeckoCode: Save installation state to savestates
Because of the way this works, randomly overwriting the handler
when loading a savestate will break things because of the
self-modifying nature of the handler.
2016-10-03 16:27:42 +11:00
EmptyChaos
b3547870ee PatchEngine/GeckoCode: Heuristic stack checks
Try to make sure the stack is sane before calling into the
codehandler. This is intended to reduce the possibility of random
memory corruption.
2016-10-03 16:27:42 +11:00
EmptyChaos
31cf8432bf HLE: Differentiate Address hooks from Symbol hooks
GeckoCodes require address hooks which don't correspond to any
symbol in the symbol table. The hooks get deleted when repatching
the game because they did not persist across calls to
HLE::PatchFunctions.
2016-10-03 16:27:42 +11:00
EmptyChaos
c3cef54910 PatchEngine: Handle MSR more cleanly
Instead of fiddling with the MSR value, just reschedule and try again
after the game fixes it itself.
2016-10-03 16:27:42 +11:00
EmptyChaos
83407263e5 HLE/GeckoCode: Add new HLE hook exit trampoline
Dolphin emulates GeckoCodes by fiddling with the CPU state when a
VI Interrupt occurs. The problem with this is that we don't know
where the PC is so it's non-deterministic and not necessarily
suitable for use with the codehandler.

There are two options: Patch the game like Gecko OS either directly
or using HLE::Patch, or use a trampoline so we can branch from any
PC even if it would otherwise not be valid. The problem with Gecko OS
patches is there are 10 of them and they have to be configured
manually (i.e. Game INIs to would need to have a [Core]GeckoHookType
property).

HLE_Misc::GeckoReturnTrampoline enables the Code Handler to be
entered from anywhere, the trampoline restores all the registers that
had to be secretly saved to the stack.
2016-10-03 16:27:42 +11:00
EmptyChaos
249d8a76e1 GeckoCode: Don't spam retry after the install fails
If the installation fails because codehandler.bin is missing or
unusable then Dolphin will try again every single frame even though
it's highly unlikely a disk file will have changed. Better to just
fail once then only try again when the active code set is changed.

Suppresses generating 60 log messages per second.
2016-10-03 16:27:42 +11:00
EmptyChaos
541a42a7e3 GeckoCode: Use named constants in ICache flush hack
Turns out one of the magic numbers was very magic. The gameid is
an ad-hoc comm protocol with HLE_Misc to control the number of times
the ICache is reset.
2016-10-03 16:27:18 +11:00
EmptyChaos
4fef9d8d64 GeckoCode: Don't truncate codes that won't fit
The code table builder cuts off the end of codes that won't fit
after already writing part of it. That seems quite unlikely to
work the way anyone would find useful since the codes can contain
actual PPC instructions.
2016-10-03 16:27:18 +11:00
EmptyChaos
e91c0222b4 GeckoCode: Cleanup
The active codes vector cannot safely be used outside the mutex,
move the lock out into RunCodeHandler. s_code_handler_installed was
also racing against SetActiveCodes since it's being written both
inside and outside the lock.

General cleanup. Add s_ prefixes, use constexpr, remove C casts.
2016-10-03 16:27:18 +11:00
EmptyChaos
cf8ac5c09c GeckoCode: Don't run PPC code in a CoreTiming callback
Executing PPC code inside an external events callback is a bad idea.
CoreTiming::Advance does not support recursion properly which will
cause timing glitches. The interpreter has a slice length hack that
counters this but without it this would cause a 20000 cycles time
skip. It isn't clear what this was supposed to accomplish that just
changing the current PC would not. Changing the PC works fine.
2016-10-03 16:26:30 +11:00
shuffle2
bd1218a3c4 Merge pull request #4250 from leoetlino/hle-patch-fix
HLE_OS: Minor fixes (function patching, output encoding)
2016-10-02 22:13:15 -07:00
shuffle2
8107a19ddc Merge pull request #4048 from EmptyChaos/wx-cheat-notice
WX: ISOProperties: Add notice when cheats are disabled (Issue 9690)
2016-10-02 22:06:26 -07:00
shuffle2
39f75d64d6 Merge pull request #4119 from mbc07/drop-4.0-ini-hack
Drop some INI hacks from 4.0-era
2016-10-02 21:23:50 -07:00
shuffle2
0082fa527b Merge pull request #4117 from JosJuice/wx-language-code
Save GUI language as string instead of wxLanguage enum
2016-10-02 21:23:36 -07:00
Lioncash
99afd9e9d5 NetPlaySetupFrame: Use an anonymous namespace instead of static
const at file scope links internally by default, so static wasn't necessary.
The namespace gets rid of the other statics
2016-10-03 00:20:33 -04:00
shuffle2
f71966866b Merge pull request #4230 from ligfx/build_vendored_libusb
Build vendored libusb with CMake if on Apple or not available system-wide
2016-10-02 21:17:01 -07:00
shuffle2
5a8abb4f93 Merge pull request #4127 from jloehr/FixDialogClosingButtons
Fix dialog closing buttons
2016-10-02 21:16:24 -07:00