Commit Graph

18533 Commits

Author SHA1 Message Date
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 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
Anthony 3ec6c9cbc0 Merge pull request #4273 from JosJuice/traversal-server-label
DolphinWX: Less duplication in code related to traversal server label
2016-10-02 23:13:55 -05:00
shuffle2 0e3f91d88b Merge pull request #4148 from RisingFog/frame_dump_fixes
Fix frame dump issues where frame dumping stops before next drawn frame
2016-10-02 21:10:35 -07:00
shuffle2 7f4106646e Merge pull request #4271 from ligfx/audiofix
OpenAL: Don't request samples if buffers are full
2016-10-02 21:00:10 -07:00
shuffle2 25f983cb21 Merge pull request #4176 from phire/fix_wii_input_display_string
Movie: Fix null pointer dereference.
2016-10-02 20:59:30 -07:00
shuffle2 07f672f81b Merge pull request #4187 from sepalani/debug_ascii_symbol
MemoryView: Symbols shown in ASCII view
2016-10-02 20:57:59 -07:00
shuffle2 a61c6c6e2f Merge pull request #4274 from lioncash/log
LogWindow: Minor changes
2016-10-02 20:43:31 -07:00
shuffle2 2c917da5cd Merge pull request #4254 from ligfx/check_errors_postprocessing
Check for errors when postprocessing macOS app bundle
2016-10-02 20:42:39 -07:00
Lioncash d8f72e9cda LogWindow: Use emplace instead of push for the message queue
Same thing.
2016-10-02 23:42:38 -04:00
shuffle2 456d869791 Merge pull request #4200 from EmptyChaos/jit64-dispatch-bug
Jit64: Fix Dispatcher ABI error
2016-10-02 20:41:39 -07:00
shuffle2 53cb04f07e Merge pull request #4260 from lioncash/debugger
RegisterView: Minor changes
2016-10-02 20:34:10 -07:00
shuffle2 17aef319e8 Merge pull request #4240 from lioncash/include
Software: Clean out unnecessary includes/fwd decls
2016-10-02 20:31:35 -07:00
shuffle2 5e8bc4aa1d Merge pull request #4244 from leoetlino/stm-shutdown
Shut down Wii software gracefully
2016-10-02 20:25:13 -07:00
shuffle2 8fcc3b04e0 Merge pull request #4227 from ligfx/clean_objc
Don't force compile everything as Objective-C++ on macOS
2016-10-02 19:42:04 -07:00
Lioncash a7b19e23b3 LogWindow: Convert #define macros into typed constants 2016-10-02 18:13:08 -04:00
Mat M ccfc081697 Merge pull request #4245 from aldelaro5/logs-levels-changes
Lots of Logs levels changes (also enable INFO level in every build)
2016-10-02 16:51:44 -04:00
Mat M 10cccd9228 Merge pull request #4231 from ligfx/fix_sigabrt_when_quitting_from_dock
Move LogWindow/LogConfigWindow destructor logic -> OnClose
2016-10-02 16:33:18 -04:00
Mat M f292df2331 Merge pull request #4217 from EmptyChaos/toggle-memcheck
PPCDebugInterface: Let ToggleMemCheck create the first memcheck
2016-10-02 16:31:44 -04:00
Mat M ffcd69eaac Merge pull request #4272 from leoetlino/sysconf
SysConf: Add support for the LongLong type
2016-10-02 16:25:17 -04:00
JosJuice 6ff2bd3243 DolphinWX: Delete traversal settings when pressing Reset
Deleting instead of overwriting makes the INI cleaner.
Also, in case we change defaults in the future, users will
get the new default when using a new version even if
they have pressed the Reset button in an older version.
2016-10-02 17:04:03 +02:00
JosJuice 337f573484 DolphinWX: Less duplication for setting traversal server label 2016-10-02 16:43:43 +02:00
JosJuice abc39f6c6f DolphinWX: Use constants for default traversal server 2016-10-02 16:36:12 +02:00
JosJuice 7a165db94f DolphinWX: Less duplication between GetTraversalPort/Server
They now also return their results the regular way.
2016-10-02 16:33:59 +02:00
Léo Lam 25b93419d0 SysConf: Add support for the LongLong type
This should fix the "unknown entry type" panic alerts when an existing
SYSCONF from a real Wii NAND is used.
2016-10-02 11:52:57 +02:00
Michael Maltese 8fa79f3897 fix indendentation 2016-10-01 21:36:51 -07:00
Michael Maltese 567dffc1ee OpenAL: Don't request samples if buffers are full
Makes the buffering code a bit more explicit (circular buffer, but
blocks until individual buffers get unqueued by OpenAL), and fixes a
bug in the startup of Super Mario Sunshine:
https://bugs.dolphin-emu.org/issues/9811
2016-10-01 21:36:46 -07:00
aldelaro5 f0aa9b3751 Reorganise a ton of logs level
Most of this commits changes performance decreasing logs from info to debug and also cleans up innacurate levels.
2016-10-01 15:50:28 -04:00
Léo Lam 453c4a4915 MainNoGUI: Shut down Wii software gracefully 2016-10-01 21:35:29 +02:00
Léo Lam 5d8d696185 Force disable WC24 standby mode
When standby mode is enabled, this causes games to ES_Launch the system
menu instead of directly asking IOS (the STM more precisely) to shut
down, which prevents graceful shutdown from working
(it'll appear to hang).

Dolphin never supported WC24 standby mode anyway, so this shouldn't
cause any issues. (This should be reverted if and when WC24 standby is
implemented…)
2016-10-01 13:06:04 +02:00
Léo Lam 9b72b5f144 Shut down Wii software gracefully
This adds support for triggering the power event (in the STM), so that
stopping emulation first triggers a shutdown event, which notably gives
emulated software time to save game data (issue 8979) and clean up
SYSCONF (to disconnect Wiimotes and update their state in the SYSCONF).

On the first press, the stop button/hotkey/whatever will trigger a STM
power event. On a second try, we will forcefully stop emulation, just
like how it was working before.
2016-10-01 13:06:04 +02:00
Léo Lam ae723f5251 IPC_HLE/stm: Implement STM_UnregisterStateEvent 2016-10-01 13:06:04 +02:00
Léo Lam fcd08be34a IPC_HLE/stm: const correctness for ResetButton 2016-10-01 13:06:04 +02:00
Léo Lam 5fb17a9014 IPC_HLE/stm: Clean up naming
Switches to the new naming conventions.
2016-10-01 13:06:04 +02:00
Léo Lam faf202f0f6 IPC_HLE/stm: Separate header and implementation
There was as far as I know no reason to put everything in the header.

Separating the declaration from the implementation reduces build
times in case the implementation is updated without changing
any declaration.
2016-10-01 13:06:04 +02:00
Lioncash 361c7c9c09 VertexManagerBase: Make class constants constexpr 2016-10-01 03:37:17 -04:00
Lioncash e61eb34ae6 VertexManagerBase: Get rid of a u16 cast
Just using the direct value is more straightforward
2016-10-01 01:05:43 -04:00
Lioncash 9395b8efa9 Vulkan: Amend header includes
Adds headers where necessary to eliminate indirect includes.
Also adds headers to ensure certain standard constructs always
resolve correctly
2016-09-30 23:26:03 -04:00
Stenzek a8194cff3c VideoNull: Set all fields in backend_info
A few of these were missing, which could cause the adapter list to remain
visible after switching to null, for example.
2016-10-01 02:40:03 +10:00
Stenzek 5f66cf5ed7 Vulkan: Only submit init/upload command buffer when it has commands
This way we're not submitting empty buffers when it's unnecessary.
2016-10-01 02:40:03 +10:00
Stenzek bac8c2d441 Vulkan: Work around indexed fragment output bug on AMD drivers 2016-10-01 02:40:02 +10:00
Stenzek f6cdc38c8b Vulkan: Use render-pass based clears where possible 2016-10-01 02:40:02 +10:00
Stenzek c290398320 Vulkan: Ensure fast path is used for non-RGBA formats when clearing 2016-10-01 02:40:02 +10:00
Stenzek f4944f006d Vulkan: Support frame dumping/screenshots 2016-10-01 02:40:02 +10:00
Stenzek 4a4f6cc135 Android: Add video backend choice to settings 2016-10-01 02:40:02 +10:00
Stenzek 77a128ab87 Implement experimental Vulkan backend 2016-10-01 02:40:01 +10:00
Stenzek fdd954e7e7 Common: Add a Semaphore wrapper class 2016-10-01 01:09:12 +10:00
Stenzek 828aac7890 VideoBackends: Make TextureCache::CompileShaders return a bool 2016-10-01 01:09:12 +10:00
Stenzek 6a99cbd9fc VideoCommon: Call Renderer::SurfaceChanged on render parent resize
This is needed because for some reason the WSI for NV Vulkan drivers
doesn't return VK_ERROR_OUT_OF_DATE_KHR, so there is no other way to know
that a resize has occured apart from polling, which is a poor solution for
X11 (since it is blocking).
2016-10-01 01:09:12 +10:00
Stenzek 5346078791 VideoCommon: Add config fields for multithreading and validation layers 2016-10-01 01:09:12 +10:00
Stenzek 09638e714e VideoCommon: Extend DriverDetails to support both OpenGL and Vulkan 2016-10-01 01:09:12 +10:00
Stenzek a71381e80a VideoCommon: Add APIType entry for Vulkan 2016-10-01 01:09:11 +10:00
Stenzek 75e4e42e56 ShaderGen: Work around issue with glslang and dynamic vector subscripts
Seems that vec[eye] will select vec.x no matter what the value of eye is.
2016-10-01 01:09:11 +10:00