Commit graph

18988 commits

Author SHA1 Message Date
Stenzek
e968c191ff Ubershaders: Support per-pixel lighting 2017-07-30 17:43:59 +10:00
Stenzek
c8f31656cb VideoBackends: Support a different number of threads for precompiling
At runtime, we only really want a single shader compiler thread.
However, for initial boots, we can use a higher number to speed things
up.
2017-07-30 17:43:59 +10:00
Stenzek
e17efb1d8d ShaderGen: Use consistent variable names for texture coordinates 2017-07-30 17:43:59 +10:00
Stenzek
25338c53e0 NativeVertexFormat: Drop unused virtual method SetupVertexPointers 2017-07-30 17:43:59 +10:00
Stenzek
33f6668544 Vulkan: Multithreaded creation of UID pipeline caches
Should give a decent speedup to boot time.
2017-07-30 17:43:59 +10:00
Stenzek
81b4ed2a81 Vulkan: Uber shader support 2017-07-30 17:43:59 +10:00
Stenzek
4bf5625895 D3D: Uber shader support 2017-07-30 17:43:59 +10:00
Stenzek
cd502990fa OGL: Uber shader support 2017-07-30 17:43:59 +10:00
Stenzek
901bf9c257 VideoConfig: Add config options for ubershaders 2017-07-30 17:43:59 +10:00
Stenzek
745d541527 ShaderGen: Implement vertex ubershaders 2017-07-30 17:43:59 +10:00
Stenzek
7d78cf0f6f ShaderGen: Implement pixel ubershaders 2017-07-30 17:43:59 +10:00
Stenzek
07591e7d5c PixelShaderGen: Move header generation to seperate function 2017-07-30 17:43:59 +10:00
Stenzek
c783cd2aaf GeometryShaderGen: Add UID enumeration functions 2017-07-30 17:43:59 +10:00
Stenzek
38c48ff72e VertexLoaderManager: Add methods to generate "uber" vertex formats
These vertex formats enable all attributes. Inactive attributes are set
to offset=0, and the smallest type possible. This "optimization" stops
the NV compiler from generating variants of vertex shaders.
2017-07-30 17:43:59 +10:00
Stenzek
f48ef65bec XFMemory: Convert several registers to bitfields 2017-07-30 17:43:59 +10:00
Scott Mansell
479abde9f4 BPMemory: Convert a number of unions to BitFields 2017-07-30 17:43:59 +10:00
Stenzek
0a9574eaa1 VideoCommon: Add AsyncShaderCompiler class implementation 2017-07-30 17:43:59 +10:00
Anthony
5bad2ee4a4 Merge pull request #5832 from stenzek/ubershader-prereq
Ubershader prerequisites
2017-07-30 00:42:36 -07:00
Stenzek
357c55442f Vulkan: Clear decoding texture before usage
Fixes a validation layer warning.
2017-07-30 12:38:50 +10:00
Stenzek
447aeb8f77 EGLInterface: Create shared context with same attributes as main context 2017-07-30 12:38:50 +10:00
Stenzek
aff44684a4 Vulkan: Move shader/pipeline-related methods to ShaderCache 2017-07-30 12:38:49 +10:00
Stenzek
d23fd17e1a Vulkan: Use VK_NV_glsl extension where available, and skip glslang
Seems to produce faster ubershaders, at least.
2017-07-30 12:38:49 +10:00
Stenzek
416afa065c BitField: Add StartBit() and NumBits() accessors 2017-07-30 12:38:49 +10:00
Stenzek
3e508fc0a2 GLInterface: Support shared contexts on AGL 2017-07-30 12:38:49 +10:00
Ryan Houdek
01ae02482c GLInterface: Support shared contexts in GLX 2017-07-30 12:38:49 +10:00
Stenzek
621287e7eb VideoCommon: Improve precision of FPS counter 2017-07-30 12:38:48 +10:00
Stenzek
1fccbd5be3 DolphinWX: Add a progress dialog host command
Allows feedback from backends to be communicated to the user when
long-running operation are performed (e.g. shader compilation).
2017-07-30 12:38:48 +10:00
Tom Boshoven
4cbb66637b Add support for SDHC.
This add support for SD protocol 2 while staying compatible with protocol 1.01.
Most of this is quite hacky, but it seems to be working well.
The original implementation was quite confusing, so I didn't touch most of the stuff I did not understand.
2017-07-29 21:24:01 +02:00
spycrab
b3e93c5273 Qt: Overhaul menubar 2017-07-29 21:19:05 +02:00
Léo Lam
5a90a26080 IOS: Fix the error code for ES_DEVICE_ID_MISMATCH 2017-07-30 00:24:47 +08:00
ligfx
2f932273bb LogManager: remove stand-alone semicolon
My bad!
2017-07-27 21:15:05 -07:00
Anthony
97ea97564f Merge pull request #5833 from leoetlino/unused
Qt/Config: Remove unused members
2017-07-27 12:00:33 -07:00
Anthony
6fe33f844f Merge pull request #5770 from ligfx/lognewconfig
LogManager: use layered config
2017-07-27 11:58:57 -07:00
Léo Lam
27924a1e2e Qt/Config: Remove unused members 2017-07-27 17:26:28 +08:00
Leo Lam
7a51b0bcec Merge pull request #5807 from leoetlino/connect-wiimote
Move the Wiimote connect code out of Host
2017-07-27 15:02:28 +08:00
Leo Lam
5c29ea54c5 Merge pull request #5817 from JosJuice/qt-strings-match-wx
Make DolphinQt2 strings more like DolphinWX strings
2017-07-27 15:01:56 +08:00
Leo Lam
b140a6eb04 Merge pull request #5830 from lioncash/prototypes
DolphinQt2: Remove unimplemented prototypes
2017-07-27 15:01:29 +08:00
Leo Lam
bf7c0c8024 Merge pull request #5831 from lioncash/include
DolphinQt2: Add missing include guards
2017-07-27 15:00:52 +08:00
Stenzek
a11bde7d16 Merge pull request #5679 from stenzek/no-host-state-in-uids
ShaderGen: Decouple host state from shader UIDs
2017-07-27 13:30:38 +10:00
Jonathan Hamilton
0fbd0cab6a Add "PreferGLES" option to EGL GLInterface
This makes the EGL interface select OpenGL|ES contexts over "desktop"
OpenGL ones.

Possibly not useful for anyone outside my own debugging, but you never
know
2017-07-26 19:26:36 -07:00
Lioncash
fb42c3eddc DolphinQt2: Add missing include guards 2017-07-26 16:31:58 -04:00
Lioncash
80b938b403 DolphinQt2: Remove unimplemented prototypes
Also removes an unnecessary includes in related files
2017-07-26 16:26:55 -04:00
Michael M
0437f4c486 IOWindow: use BlockUserInputFilter 2017-07-26 10:30:02 -07:00
Michael M
c624ef43f0 MappingButton: use BlockUserInputFilter 2017-07-26 10:30:02 -07:00
Michael M
7d438da911 QtUtils: Add BlockUserInputFilter 2017-07-26 10:30:01 -07:00
JosJuice
de6bd80f9c DolphinQt2: Add i18n comments for Table/List
To avoid confusion with the verb "list" and the kind of table
that's a type of furniture.
2017-07-26 08:04:10 +02:00
JosJuice
b32fe5e41d DolphinQt2: Remove the %1 from "%1 Banner Details"
It's not particularily useful to list the platform here,
and these kinds of messages that use words as parameters
are more likely to be mistranslated than the average string.
2017-07-26 08:04:10 +02:00
JosJuice
960525859b Make DolphinWX strings more like DolphinQt2 strings
Same as the previous commit, except I'm copying strings
in the other direction because the DolphinWX variants
of these strings could use some improvement.
2017-07-26 08:04:10 +02:00
JosJuice
ce11b34e74 Make DolphinQt2 strings more like DolphinWX strings
Without this, we would be pushing a lot of extra strings onto
translators now that 55fb6ef is merged.
2017-07-26 08:04:10 +02:00
JosJuice
fb80c5398a DolphinWX: Use title case for hotkey group names 2017-07-26 08:00:17 +02:00
JosJuice
d7d88aeb7d DolphinWX: Mark AF choices as translatable
For consistency with DolphinQt2.
2017-07-26 08:00:17 +02:00
JosJuice
8deba867e8 DolphinQt2: Remove ellipses from settings menu options
The action that these menu options perform is to open a
settings window, and that action is completed instantly,
so we shouldn't have ellipses.
2017-07-26 08:00:17 +02:00
Leo Lam
10db1bcbca Merge pull request #5828 from ligfx/qtqueueonobject
Qt: add QueueOnObject
2017-07-26 12:56:08 +08:00
Leo Lam
be8324380d Merge pull request #5786 from grimpunch/qt_viewoptions
Qt: Implement Show Platforms / Show Regions
2017-07-26 12:02:14 +08:00
Michael M
2c03cfacc2 Qt WiiUpdate: use QueueOnObject instead of Core::QueueHostJob 2017-07-25 17:44:07 -07:00
Michael M
734c9e1459 QtUtils: add QueueOnObject 2017-07-25 17:44:07 -07:00
Jonathan Hamilton
184e4d7b4a Fix an incorrect OES suffix on glMultiDrawElementsBaseVertex
The spec says it should have an EXT not OES suffix, as it's enabled as
an interaction with GL_EXT_multi_draw_arrays.

On some drivers GetProcAddress() returns NULL, which causes the
GLExtensions init to fail

This 'happened' to work if GetProcAddress() doesn't return NULL on missing
functions (as allowed in EGL) - as the function appears to never be called so
this would not have been noticed.

Mesa also (incorrectly?) exports the EXT version, so this would all
happen to work there, but appears to be contrary to the spec.

This invalid prefix even ended up in the upstream khronos registry, the
issue was reported here:
https://github.com/KhronosGroup/OpenGL-Registry/issues/81
2017-07-25 12:52:39 -07:00
JosJuice
8292d378ea Merge pull request #5824 from lioncash/include-guard
ListProxyModel: Add missing include guard
2017-07-25 08:23:49 +02:00
Mat M
63f1f122fa Merge pull request #5729 from ligfx/qtremoveoldsyntax
DolphinQt2: update old SLOT/SIGNAL syntax
2017-07-24 18:48:20 -05:00
Lioncash
7373474888 ListProxyModel: Add missing include guard 2017-07-24 19:46:25 -04:00
Christian Murphy
df35a26628 Qt: Implement Show Platforms / Show Regions
Porting the View config logic from WX to Qt.
Adds to the View Menu
2017-07-24 14:36:09 +01:00
Leo Lam
c27dd9dc20 Merge pull request #5785 from leoetlino/sysconf-fix
SysConf: Minor fixes
2017-07-24 14:03:33 +08:00
Leo Lam
a23a38da23 Merge pull request #5821 from JosJuice/qt-builtin-database-placement
DolphinQt2: Change the placement of "Use Built-In Database of Game Names"
2017-07-24 11:06:20 +08:00
Michael Maltese
aafb61c187 DolphinQt2: Remove 'slots:' syntax from headers
With Qt5's new connection syntax, method pointers and functors are
connected directly. There's no need to declare slots.
2017-07-23 15:07:49 -07:00
Michael Maltese
f0fd38698e DolphinQt2: use new connection syntax instead of old syntax 2017-07-23 15:07:49 -07:00
Michael Maltese
a365686956 GameList: fix Decompress slot typo
There is no such `DecompressISO` slot.
2017-07-23 15:07:49 -07:00
Leo Lam
7c70e77c74 Merge pull request #5818 from JosJuice/qt-localization-fixes
DolphinQt2: Fix localization issues
2017-07-23 22:04:17 +08:00
Leo Lam
96a8fb720d Merge pull request #5819 from JosJuice/qt-analytics-message
DolphinQt2: Reword the analytics message
2017-07-23 22:02:02 +08:00
JosJuice
bb3bbb2887 DolphinQt2: Fix saving "Use Built-In Database of Game Names"
This one is my fault too
2017-07-23 15:29:43 +02:00
JosJuice
22fbd65d47 DolphinQt2: Change the placement of "Use Built-In Database of Game Names"
When I added this setting, I didn't notice that the interface
pane in DolphinQt2 was split into two different sections.
2017-07-23 15:28:34 +02:00
JosJuice
34cacd4944 DolphinQt2: Reword the analytics message
"this" made sense when "Do you authorize..." was on the bottom,
but it doesn't make sense when it's at the top.

Also removing unnecessary newlines.
2017-07-23 15:18:12 +02:00
JosJuice
20172196f5 DolphinQt2: Let game properties show names for WADs 2017-07-23 15:11:18 +02:00
JosJuice
5938c58f99 DolphinQt2: Fix localization issues 2017-07-23 10:50:20 +02:00
Léo Lam
02f32a9b26 Handle BT.DINF properly
The section is 0x461 bytes long, not 0x460. The config data is also now
initialised to zero to avoid garbage being written to the SYSCONF.

Because our handling has been wrong forever, we discard older BT.DINF
section backups as using them would result in the section being the
wrong size / incomplete again.
2017-07-23 15:58:04 +08:00
Léo Lam
c759739ee9 SysConf: Handle array entries properly
It turns out that the last byte of array entries isn't unused (as we
thought); instead, it looks like it's actually part of the main data,
and the length stored next to the name is in fact the length minus one.

Getting it wrong and always storing a null byte in there won't affect
most entries (since the last byte is zeroed most of the time), except:

- IPL.NIK: the length is stored in the last byte, and it must be kept.
- BT.DINF: u8 unknown[0x45] should be another Bluetooth device entry.
- Possibly other unknown affected entries.
2017-07-23 15:57:29 +08:00
Léo Lam
1c33dfc787 Wiimote: Remove useless disconnections
ChangeWiimoteSource does not need to disconnect a Wiimote if it isn't
connected.
2017-07-23 15:52:15 +08:00
Léo Lam
ee868e2362 Move the Wiimote connect code out of Host
I don't know who thought it would be a good idea to put the Wiimote
connect code as part of the Host interface, and have that called
from both the UI code and the core. And then hack around it by having
"force connect" events whenever Host_ConnectWiimote is called
from the core...
2017-07-23 15:47:32 +08:00
Léo Lam
9357fa3514 Qt/AboutDialog: Fix the copyright string 2017-07-23 14:58:01 +08:00
Leo Lam
673210afea Merge pull request #5814 from ligfx/macremovecfbundlelocalizations
Remove CFBundleLocalizations from Info.plist
2017-07-23 14:48:38 +08:00
Leo Lam
2c35983126 Merge pull request #5787 from ligfx/wxsortfallbacktotitle
Wx: make GameListCtrl fallback to sorting by title
2017-07-23 14:47:31 +08:00
Leo Lam
81abecbf46 Merge pull request #5739 from leoetlino/correct-key
IOS/ES: Use the correct import/export key (fix DLC)
2017-07-23 14:47:10 +08:00
Leo Lam
3cbf56a9ad Merge pull request #5797 from ligfx/qtoptionsmenu
Qt: implement remainder of 'Options' menu
2017-07-23 14:46:48 +08:00
Leo Lam
55fb6efea3 Merge pull request #5812 from ligfx/gettexttizeqt
gettextize: extract arguments to Qt's `tr`
2017-07-23 14:35:44 +08:00
Leo Lam
a7c3d035c8 Merge pull request #5806 from Starsam80/qt-movable-headers
Qt: Allow the game list headers to be rearranged
2017-07-23 14:19:46 +08:00
Leo Lam
68e00b3ee6 Merge pull request #5808 from leoetlino/hci-array
BT: Use a std::array for all Bluetooth addresses
2017-07-23 14:19:24 +08:00
Michael Maltese
03f26ec5b3 Remove CFBundleLocalizations from Info.plist
It's only needed for apps that don't use .lproj folders.
2017-07-22 23:15:14 -07:00
Michael Maltese
4776fdc130 Qt/AboutDialog: remove literal UTF-8 characters 2017-07-22 22:35:25 -07:00
Lioncash
5859914da5 TraversalClient: Fix memory leaks in ReleaseTraversalClient()
release() relinquishes ownership of a pointer, it doesn't actually free
it.
2017-07-22 18:19:25 -04:00
Léo Lam
b6ae70ac7e BT: Use a std::array for all Bluetooth addresses
BluetoothEmu had its own bdaddr_t type which is a old style C struct
and typedef, which makes comparisons and copies a bit ugly.
On the other hand, BTReal had its own btaddr_t type using std::array.

To make things very slightly nicer, this commit changes the Bluetooth
code to use a single type (std::array<u8, 6>) for all BT addresses.
2017-07-23 02:07:02 +08:00
Leo Lam
efd318df64 Merge pull request #5791 from leoetlino/wiimote-indicator
Remove Wii Remote connection status from status bar
2017-07-22 22:03:25 +08:00
Starsam80
d9a09cff14
Qt: Allow the game list headers to be rearranged 2017-07-22 00:38:09 -06:00
Léo Lam
fbcc6bbd57 IOS/ES: Use the correct key for imports/exports
Imports/exports don't always use the title key. Exporting a title and
importing it back uses the PRNG key (aka backup key handle or key #5),
not the title key (at all).

To make things even more fun, some versions of IOS have a bug that
causes it to use a zeroed key instead of the PRNG key. When Nintendo
decided to fix it, they added checks to keep using the zeroed key only
in affected titles to avoid making existing exports useless.
(Thanks to tueidj for drawing my attention to this.
I missed this edge case during the initial implementation.)

This commit implements these checks so we are using the correct key
in all of these cases.

We now also use IOSC for decryption/encryption since built-in key
handles are used. And we now reject any invalid common key index,
just like ES.
2017-07-21 17:42:59 +08:00
Léo Lam
e608d79f42 IOSC: Load the backup/PRNG key 2017-07-21 17:42:59 +08:00
Léo Lam
05016e8dca EcWii: Add function to get the backup key 2017-07-21 17:42:59 +08:00
Léo Lam
5b09657a1f ESFormats: Add entry for unknown title flag 2017-07-21 17:42:59 +08:00
Léo Lam
5cbbe2dda2 IOSC: Add support for importing decrypted keys directly 2017-07-21 17:42:59 +08:00
Léo Lam
5729ac0fc6 Core: Replace recursive locking from PauseAndLock
PauseAndLock cannot be called recursively anymore.
2017-07-21 16:45:59 +08:00
Léo Lam
f106a9637d Replace balanced Core::PauseAndLock calls with RunAsCPUThread
Core::PauseAndLock requires all calls to it to be balanced, like this:

    const bool was_unpaused = Core::PauseAndLock(true);
    // do stuff on the CPU thread
    Core::PauseAndLock(false, was_unpaused);

Aside from being a bit cumbersome, it turns out all callers really
don't need to know about was_unpaused at all. They just need to do
something on the CPU thread safely, including locking/unlocking.

So this commit replaces Core::PauseAndLock with a function that
makes both the purpose and the scope of what is being run on the
CPU thread visually clear. This makes it harder to accidentally run
something on the wrong thread, or forget the second call to
PauseAndLock to unpause, or forget that it needs to be passed
was_unpaused at the end.

We also don't need comments to indicate code X is being run on the
CPU thread anymore, as the function name makes it obvious.
2017-07-21 16:45:59 +08:00
JosJuice
1fc5830d0c Remove region mismatch check for GCI folders
The region mismatch check that we used can give false positives.
Skipping the check won't lead to any harm - games will ignore
save files that have a non-matching fourth game ID character.
2017-07-20 15:24:07 +02:00
Stenzek
3ea9d86faa ShaderGen: Pass host config to shader generation functions
Also moves the host config checks to common.
2017-07-20 17:54:33 +10:00
Stenzek
d01b0bf60f VideoCommon: Move shader cache filename generation to common 2017-07-20 17:46:59 +10:00
Stenzek
7c5bbafdd1 Vulkan: Don't save/load pipeline UID cache when shader cache is disabled 2017-07-20 17:46:59 +10:00
Stenzek
b380f292b4 Vulkan: Reload pipeline cache when relevant host config changes 2017-07-20 17:46:59 +10:00
Stenzek
a8343cc19a Vulkan: Don't save pipeline cache if shader cache is disabled
We still create a pipeline cache object, since that speeds up driver's
creation of pipelines at runtime. However, we should not save it.
2017-07-20 17:46:59 +10:00
Stenzek
d9a3b29a07 Vulkan: Emit input/output locations for EFB poke geometry shader 2017-07-20 17:46:59 +10:00
Stenzek
228ddb8aba D3D11: Reload shader cache when relevant config changes 2017-07-20 17:46:59 +10:00
Stenzek
62a901508b OGL: Reload shader cache when relevant video config changes 2017-07-20 17:46:59 +10:00
Stenzek
d1381f5021 VideoConfig: Add host config union
Contains all host state that can affect shadergen.
2017-07-20 17:46:59 +10:00
Stenzek
82c27182a8 ShaderGen: Remove host state from shader uids 2017-07-20 17:46:59 +10:00
Leo Lam
c207a1072d Merge pull request #5795 from JosJuice/gc-region-detection
Improve GameCube region detection
2017-07-20 14:13:11 +08:00
Anthony
39e17ccc41 Merge pull request #5793 from spycrab/qt_fullscreen_fix
Qt: Fix missing window border after exiting fullscreen under Windows
2017-07-19 08:52:22 -07:00
Leo Lam
baf950c417 Merge pull request #5796 from JosJuice/findfileinfo-find
Use find_first_not_of in FileSystemGCWii::FindFileInfo
2017-07-19 21:52:13 +08:00
Michael Maltese
e1554c04a1 Qt: implement remainder of 'Options' menu 2017-07-16 18:23:59 -07:00
Michael Maltese
2b712bdbaa ListTabWidget: disallow deselecting items 2017-07-16 18:23:59 -07:00
Michael Maltese
19dc580a4e Qt: extract ListTabWidget from SettingsWindow 2017-07-16 18:23:59 -07:00
Starsam80
c6478cac2f
Qt: Shrink settings window and make widgets stretch 2017-07-16 14:50:52 -06:00
JosJuice
c83cac7cca Fix the handling of NTSC-K for GCI folders 2017-07-16 16:31:12 +02:00
JosJuice
be8e93f472 Ensure that Volume::GetRegion doesn't return invalid enum values 2017-07-16 14:52:17 +02:00
JosJuice
db1c534b3e Add warning comments to RegionSwitch and code that uses it 2017-07-16 14:49:28 +02:00
JosJuice
cd60810d9d Improve Japanese check in TitleDatabase
We should check the language of a game rather than the region.
RegionSwitchGC counts W as NTSC-J, and W games aren't in Japanese.
2017-07-16 14:33:14 +02:00
JosJuice
c8b4645039 Detect Korean GC releases as Korean when possible
According to http://scanlines16.com/en/blog-3/retro-gaming/game-cube/gamecube-korean-master-list/,
Korean GC releases use the following country codes:
- E or W for games in English
- K for games in Korean
- Unknown value for games in Japanese (my guess is that they might
  have made the discs bit-for-bit identical to Japanese releases
  because the regions of these games are already set to NTSC-J)

As far as I know, the GC has no Taiwanese releases, which is what
the W country code is used for on the Wii. But I could be wrong.

A small note: The country_byte == 'K' check in the code isn't
actually necessary as long as RegionSwitchGC returns NTSC_J
for 'K', but I thought it would be better to not rely on that.
2017-07-16 14:30:41 +02:00
JosJuice
ebf0f64a01 Detect GC region based on the actual region value
The county code isn't 100% reliable for detecting the region.
For instance, some games released in Korea have the country
code E even though they're region-locked to NTSC-J consoles.

This commit makes the GC disc region detection match the Wii
disc region detection (apart from the region value being in
a different place on the disc).
2017-07-16 14:29:43 +02:00
JosJuice
fe10e8aa6c Fix RegionSwitchGC for the value 'K'
Korean GameCube releases have their region set to NTSC-J.
2017-07-16 13:52:53 +02:00
JosJuice
c64d668c3c Use find_first_not_of in FileSystemGCWii::FindFileInfo 2017-07-16 13:19:18 +02:00
spycrab
e3cf1e4f37 Qt: Fix missing window border after exiting fullscreen under Windows 2017-07-16 01:09:36 +02:00
Jules Blok
ba356f78d1 Merge pull request #5774 from Armada651/d3d-fs-fixes
D3DBase: Set the fullscreen state in Create()
2017-07-15 15:01:46 +02:00
Léo Lam
91f8283a1d Remove Wii Remote connection status from status bar
Showing the Wii remote connection status leads to inconsistent UX,
because we don't do anything like that for GameCube controllers
or with Bluetooth passthrough.

It's also questionable how useful it is given that:

* it doesn't print the number of connected remotes, just that one
  remote is connected, connecting or not connected, so the only info
  it provides is actually wrong when using multiple remotes;

* this user-facing feature is actually broken in master and no one has
  complained AFAIK, which means people don't really rely on it;

* the status bar isn't visible most of the time unless the user is
  using render to main or deliberately keeping the main window's
  status bar visible by moving the render window and they're not too
  far away from their screen;

* emulated Wii remotes now reconnect on input, which means that there
  is less of a need to actually know at all times whether a remote
  is connected, since pressing any button will reconnect it and provide
  immediate, visible feedback via OSD messages and the Wii remote
  pointer appearing.
2017-07-15 13:01:56 +08:00
Andrew
3095f585dd Hide mouse cursor after delay in DolphinWX 2017-07-14 22:28:52 -04:00
Michael Maltese
41917cb43c Wx: make GameListCtrl fallback to sorting by title
Fixes an issue with game items moving around randomly when resorted.
2017-07-14 15:29:48 -07:00
Michael Maltese
becb1a744b SI_DeviceGBA: if a client doesn't respond within 1s, disconnect them
Rather than returning 0 / not creating an expected SI interrupt. You can
test this by running VBA-M in a debugger and stopping it while it's
connected to Dolphin: on current master, Dolphin will freeze-up until it
gets a response. With this PR, Dolphin will gracefully disconnect the device, and reconnect if it starts responding again.
2017-07-14 13:57:17 -07:00
Michael Maltese
f004dfa92b SI_DeviceGBA: use SI_ERROR_NO_RESPONSE when client isn't connected
Slight behavior change, but fills a gaping hole in the state logic.
2017-07-14 13:57:17 -07:00
Michael Maltese
8dee8e6494 SI_DeviceGBA: extract magic numbers SEND_MAX_SIZE, RECV_MAX_SIZE 2017-07-14 13:57:17 -07:00
Michael Maltese
05ab03a551 SI_DeviceGBA: make GBASockServer a member instead of parent 2017-07-14 13:57:17 -07:00
Michael Maltese
ff78327643 SI_DeviceGBA: remove duplication of GBASockServer destructor logic 2017-07-14 13:57:17 -07:00
Michael Maltese
e6cfc3a75b SI_DeviceGBA: clean up GetTransferTime() 2017-07-14 13:57:17 -07:00
Michael Maltese
d30e0ea28e GBASockServer: clean up Receive() return value 2017-07-14 13:57:16 -07:00
Michael Maltese
89ca32daa6 GBASockServer: cleanup GetNextSock and GetNextClock 2017-07-14 13:57:16 -07:00
Michael Maltese
751377256b Move GBASockServer logging into SI_DeviceGBA 2017-07-14 13:57:16 -07:00
Michael Maltese
72946a40f6 SI_DeviceGBA: clarify request-response state machine
Inspired by "#5147: GBASockServer: remove m_device_number (fixes
warning)," trying to wrap my head around how this file works.
2017-07-14 13:57:16 -07:00
Leo Lam
bacc35d99e Merge pull request #5733 from leoetlino/import-context
IOS/ES: Merge the title import and export contexts
2017-07-14 23:34:37 +08:00
Léo Lam
777d150f83 Movie: Get rid of the manual buffer management
Tracking a buffer's size manually and storing it under a name that
does not make it obvious it is related to the buffer is really... meh.

Also gets rid of the need to manually manage its capacity and
new/delete an array.
2017-07-14 16:15:05 +08:00
Léo Lam
1ba1b51606 IOS/ES: Rename context.title_import
This makes it obvious that the same context is used for both
title imports and exports.
2017-07-14 13:23:21 +08:00
Léo Lam
dc1707faa8 IOS/ES: Merge the title import and export contexts
This commit merges the import and export contexts into a single context
because this is what IOS does, which means we can only reproduce its
behaviour correctly if we use a single context for both operations.

The other reason is that having two separate and very similar structs
is not really a good idea.

While working on this commit, I was notified that our handling of
ImportTmd/ExportTitleInit is not correct. In particular, we always use
the title key for both importing and exporting, which is wrong. To make
this easier to fix in a follow-up PR, the context now also has a title
key field, just like ES. This also lets us avoid computing it every
single time in ImportContentDone.
2017-07-14 13:23:21 +08:00
Léo Lam
0dff8a3bde IOS/ES: Separate title content functions from IPC handlers
Allows them to be reused easily. Still a bit too much duplicated code
in my opinion (OpenContent/SeekContent/ReadContent should just call
FS code), but this is a start.
2017-07-14 13:23:21 +08:00
Leo Lam
460b81ac06 Merge pull request #5778 from ligfx/fixinputbitmaps
DolphinWX: fix input bitmaps not working when background input is off
2017-07-14 13:08:13 +08:00
Leo Lam
d7efac6ed5 Merge pull request #5780 from spycrab/qt_header_save
Qt: Save sorting order
2017-07-14 13:05:41 +08:00
Michael Maltese
ebeac18472 DolphinQt2/Host: cleanup 2017-07-13 12:58:32 -07:00
Michael Maltese
8e55374662 RenderWidget: watch for activation/deactivation, not focus in/out
"Focus" refers mainly to keyboard focus. "Window focus" is exposed
through the window activation and deactivation events.
2017-07-13 12:58:32 -07:00
Michael Maltese
8d5fe1f1c4 RenderWidget: mark 'event' function as override 2017-07-13 12:58:32 -07:00
JosJuice
100b0a52d3 Merge pull request #5777 from JosJuice/unify-getgameinifilenames
Unify GetGameIniFilenames
2017-07-12 19:24:46 +02:00
spycrab
8ca6814673 Qt: Save sorting order 2017-07-12 18:25:54 +02:00
Michael Maltese
0019c34c73 DolphinWX: fix input bitmaps not working when background input is off 2017-07-12 00:12:07 -07:00
Anthony
ab5a5ee3ea Merge pull request #5726 from mimimi085181/minimal-tmem-cache-emulation
Implement minimal emulation of TMEM caching
2017-07-11 22:49:19 -07:00
JosJuice
d4f5038571 Unify GetGameIniFilenames
This deduplicates code and fixes the new config system's lack of
1-char game ID INI support.
2017-07-11 13:10:11 +02:00
Leo Lam
1de9bf2cca Merge pull request #5743 from spycrab/qt_fix_shutdown
Qt: Fix multiple emulation shutdown bugs
2017-07-11 09:13:07 +02:00
Leo Lam
ce4732dd96 Merge pull request #5776 from sepalani/kd-log
NetKDTime: Log IOCtl
2017-07-11 00:40:37 +02:00
Leo Lam
b6c3479bb4 Merge pull request #5720 from JosJuice/file-metadata
FileUtil: Redesign Exists/IsDirectory/GetSize
2017-07-11 00:28:34 +02:00
Leo Lam
12f6d0b56b Merge pull request #5773 from JosJuice/builtin-titledatabase-optional
Make the built-in wiitdb files optional
2017-07-11 00:20:09 +02:00
Leo Lam
38e32c6324 Merge pull request #5775 from leoetlino/hardcoded-fs-usage
IOS/FS: Remove hardcoded FS usage data
2017-07-11 00:18:55 +02:00
Sepalani
b7ae49c4d2 NetKDTime: Log IOCtl 2017-07-10 23:14:26 +01:00
Léo Lam
1376484f76 IOS/FS: Remove hardcoded FS usage data
I think I do not need to explain why hardcoding space usage for two
random directories when we can calculate it and when IOS doesn't
actually do that is wrong.
2017-07-10 23:08:25 +02:00
Jules Blok
3fc9a48da0 D3DBase: Use the swapchain discard mode when possible. 2017-07-10 14:25:28 +02:00
Jules Blok
65495a1297 D3D: Resize the swapchain when the fullscreen state is changed 2017-07-10 14:24:11 +02:00
Jules Blok
07c5dcd739 D3DBase: Set the fullscreen state in Create() 2017-07-10 14:03:04 +02:00
JosJuice
1d7a57869a Make the built-in wiitdb files optional
There are some cases where overriding the opening.bnr names
isn't desirable, such as when someone has several modded
versions of a game that differ in names but not game IDs.
2017-07-10 10:16:06 +02:00
spycrab
ebe169a218 Qt: Fix multiple emulation shutdown bugs 2017-07-10 08:16:51 +02:00
Michael Maltese
06f1761f9f LogWindow: don't unconfigure logger on destruction
This was causing Dolphin to always save "WriteToWindow = False". Instead
of disabling logging to the window (a config value), tell LogManager
that there's no window to log to (a runtime state).
2017-07-09 18:50:55 -07:00
Michael Maltese
ff83b13344 LogConfigWindow: fix verbosity 2017-07-09 18:50:55 -07:00
mimimi085181
53663c00b9 Implement minimal emulation of TMEM caching
This is a remake of https://github.com/dolphin-emu/dolphin/pull/3749

Full credit goes to phire.

Old message:
"If none of the texture registers have changed and TMEM hasn't been invalidated or changed in other ways, we can blindly reuse the old texture cache entries without rehashing.

Not only does this fix the bloom effect in Spyro: A Hero's Tail (The game abused texture cache) but it will also provide speedups for other games which use the same texture over multiple draw calls, especially when safe texture cache is in use."

Changed the pr per phire's instructions to only return the current texture(s) if none of the texture registers were changed. If any texture register was changed, fall back to the default hashing and rebuilding textures from memory.
2017-07-10 01:49:27 +02:00
Michael Maltese
28d6c61e34 LogManager: use layered config 2017-07-09 16:28:54 -07:00
Michael Maltese
e6c4455e65 remove commented-out FileLogListener::GetName 2017-07-09 16:28:54 -07:00
Michael Maltese
8b54ac225b Merge Core/Config/Config.h into Common/Config/Config.h
Allows code in Common to take advantage of the layered config logic.
2017-07-09 16:28:54 -07:00
Jules Blok
0f13c61daa D3DBase: Only create a stereo swapchain when needed. 2017-07-10 01:24:43 +02:00
Jules Blok
77a318789a D3DBase: Implement Windows 7 swapchain fallback. 2017-07-10 01:02:29 +02:00
Jules Blok
938939136e D3DBase: Only use temporary mono when supported by the swapchain. 2017-07-10 01:02:05 +02:00
Tillmann Karras
31dd690ed1 Core: fix log category for startup message 2017-07-09 18:48:35 +01:00
Leo Lam
a621a1bc2f Merge pull request #5755 from ligfx/qtglobalorganizationname
DolphinQt2: set QSettings parameters globally
2017-07-09 16:25:31 +02:00
Leo Lam
e6c1b04b69 Merge pull request #5764 from ligfx/cleanuplogmanager
LogManager: clean ups and encapsulate config file management
2017-07-09 16:18:49 +02:00
Leo Lam
eb726194ed Merge pull request #5762 from spycrab/qt_disable_iwad
Qt: Fix "Install WAD" being enabled while emulation is running
2017-07-09 16:13:39 +02:00
spycrab
adf2cd4252 Qt: Fix "Install WAD" being enabled while emulation is running 2017-07-09 16:09:30 +02:00
Tilka
039e456d6f Merge pull request #5761 from spycrab/qt_warning
Qt: Make the "In Development" warning less threatening
2017-07-09 14:49:29 +01:00
Pierre Bourdon
d6dd0e4687 Merge pull request #5766 from JosJuice/fst-u32
Fix reading FSTs for multi-disc games
2017-07-08 15:28:29 +02:00
JosJuice
edc7a4c895 Fix reading FSTs for multi-disc games
It's a wonder that this managed to work for any discs at all...
2017-07-08 15:17:05 +02:00
Leo Lam
d0fb1bc4bf Merge pull request #5728 from Starsam80/remove-qt-whats-this
Qt: Don't show the Qt "What's this" button
2017-07-08 10:55:28 +02:00
Leo Lam
51bb10d371 Merge pull request #5757 from blubberdiblub/wx-fix-custom-rtc
Fix date and time handling for custom RTC in wxWidgets.
2017-07-08 10:53:05 +02:00
spycrab
63d401102b Qt: Make the "In Development" warning less threatening 2017-07-08 10:47:31 +02:00
Michael Maltese
234ab6f759 DolphinQt2: set QSettings parameters globally 2017-07-07 17:08:00 -07:00
Michael Maltese
13721d35e7 DolphinWX: remove INI logic from LogConfigWindow 2017-07-07 16:44:38 -07:00
Michael Maltese
c9e8289e82 LogManager: add SaveSettings 2017-07-07 16:44:38 -07:00
Michael Maltese
8ff8dfcdf2 LogManager: make LogContainer a POD and don't allocate 2017-07-07 16:44:38 -07:00
Michael Maltese
18da6dee8e LogManager: remove per-container listeners 2017-07-07 16:44:38 -07:00
Michael Maltese
546fa628fb LogManager: remove per-container verbosities 2017-07-07 16:44:38 -07:00
Michael Maltese
26aa9f88a4 LogManager: clean up header 2017-07-07 16:44:38 -07:00
Niels Boehm
ee9fb47c53 Fix date and time handling for custom RTC in WX.
The actual problem was combining the values from the date and time
pickers incorrectly. The uninteresting parts of the returned wxDateTime
need to be ignored and the WX documentation says so for the time picker.

I also cleaned up the handling of both widgets a bit, removing redundant
member variables in the process, in order to not risk correctness.
2017-07-07 17:12:05 +02:00
Leo Lam
c941cd6aa9 Merge pull request #5753 from ZirconiumX/master
Explain what Yes/No means in an assert window
2017-07-07 16:56:21 +02:00
Leo Lam
ff9f271edc Merge pull request #5756 from spycrab/qt_sysmenu
Qt: Implement "Load System Menu"
2017-07-07 16:51:53 +02:00
John Pansera
72c573f6dc Fix Forecast Channel 2017-07-06 20:28:33 -04:00
spycrab
2cf0228ada Qt: Implement sysmenu booting 2017-07-06 21:27:31 +02:00
spycrab
3a27d60937 Qt: Add "Load System Menu" option to menubar 2017-07-06 19:48:10 +02:00
Jules Blok
8476d0271d PixelShaderGen: Add missing inputs.
This fixes a linkage warning in D3D because of mismatched inputs.
2017-07-05 22:43:39 +02:00
Jules Blok
b485329353 D3DBase: Set the monoscopic flag when we don't use stereoscopy. 2017-07-05 22:43:39 +02:00
Jules Blok
1f2d43c870 Vulkan: Implement Quad-Buffered stereoscopy support. 2017-07-05 22:43:39 +02:00
Jules Blok
f3508742ac OGL: Support Quad-Buffered stereoscopy. 2017-07-05 22:43:39 +02:00
Jules Blok
2ab068d3f2 D3DBase: Always create a stereo swapchain. 2017-07-05 22:43:39 +02:00
Jules Blok
383645a4b1 VideoConfigDiag: Rename Quad-Buffer to HDMI 3D.
This 3D mode is often associated with the HDMI 1.4a standard,
so this name is more helpful to users with such a setup.
2017-07-05 22:43:39 +02:00
Jules Blok
179602e921 D3D: Add quad-buffer stereoscopy support. 2017-07-05 22:43:39 +02:00
Jules Blok
6863abb31d D3DBase: Switch to a flip-model swap chain. 2017-07-05 22:43:39 +02:00
Jules Blok
c399e2bc40 D3DBase: Upgrade to DXGI 1.2.
This effectively drops for Vista and Windows 7 without the Platform Update in this backend.
2017-07-05 22:43:39 +02:00
Dan Ravensloft
982663c728 Explain what Yes/No means in an assert window
It's a bit confusing to get a yes/no dialogue box without any indication
of what yes or no will do in this situation, so add a short explanatory
sentence.
2017-07-05 20:00:52 +00:00
JosJuice
421a2c5776 Merge pull request #5750 from AwesomeMarioFan/master
IOS: Add IOS4v3 Constants
2017-07-05 21:01:31 +02:00
John Pansera
f7017b2992 IOS: Add IOS4v3 Constants
Fix indentation
2017-07-05 14:10:20 -04:00
Leo Lam
24f05f14f2 Merge pull request #5752 from leoetlino/to_string
Replace StringFromInt with std::to_string
2017-07-05 17:36:07 +02:00
Léo Lam
90f8265497 Replace StringFromInt with std::to_string
Updated version of #47. Android should support to_string now that
we use a modern version of libc++ when building.
2017-07-05 13:49:33 +02:00
JosJuice
78217532e5 VolumeWii: Defer loading tickets, TMDs and keys until when needed
This should make building the game list cache a tiny bit
faster, since we won't have to read anything from
partitions other than the game partition.
2017-07-04 21:31:24 +02:00
JosJuice
2c7e93f3b8 Common: Add a Lazy type 2017-07-04 20:58:03 +02:00
JosJuice
93e9740683 Drop unnecessary check from FileSystemGCWii::FindFileInfo
If the current file_info is a file, the ranged for loop will
run 0 times, and we'll reach the last line of the function.
2017-07-04 20:40:32 +02:00
JosJuice
6a31d2598e Support leading slashes in FileSystemGCWii::FindFileInfo 2017-07-04 20:40:08 +02:00
Leo Lam
60ee0b2913 Merge pull request #5745 from JosJuice/partition-map
VolumeWii: Change the format of partition maps
2017-07-04 19:31:21 +02:00
JosJuice
333b6d99d2 VolumeWii: Change the format of partition maps
Having a separate map for each type of data is a bit unnecessary.
2017-07-04 16:20:13 +02:00
Leo Lam
cf79ff2366 Merge pull request #5738 from spycrab/qt_fix_ampersand
Qt: Fix ampersands not displaying properly in mapping windows
2017-07-04 15:31:36 +02:00
spycrab
36fe1a5415 Qt: Fix ampersands not displaying properly in mapping windows 2017-07-04 15:26:10 +02:00
Leo Lam
e0b94b55b8 Merge pull request #5651 from JosJuice/new-disc-extraction
Use new format for disc extraction
2017-07-04 13:46:18 +02:00
Leo Lam
aa1d750f30 Merge pull request #5664 from ligfx/removesettings
DolphinQt2: replace Settings with SConfig where possible
2017-07-04 13:45:21 +02:00
Leo Lam
365892c61c Merge pull request #5667 from ligfx/cleanupdspdisassembler
DSPDisassembler: various code cleanups
2017-07-04 13:43:45 +02:00
Leo Lam
5a41bfaf6f Merge pull request #5740 from Starsam80/qt-size
Qt: Don't force a minimum size for the main window
2017-07-04 13:39:44 +02:00
Starsam80
4d56951d3b
Qt: Remove border from game list 2017-07-02 17:25:46 -06:00
Starsam80
3eac4b6c9d
Qt: Don't force a minimum size for the main window 2017-07-02 16:20:37 -06:00
Leo Lam
0f9ae6d361 Merge pull request #5731 from mimimi085181/terminate-background-input
Disable Background Input when Background Input is disabled
2017-07-01 16:49:15 +02:00
JosJuice
0588a76830 DolphinWX: Fix inconsistent region name for online system update
This was inconsistent with the other three regions
and with DolphinQt2.
2017-07-01 16:40:07 +02:00
mimimi085181
b6ada2b633 Disable Background Input when Background Input is disabled
Only remaining issue is that clicking on the titlebar of the window, to give it focus, is already interpreted as input. But clicking on the window in the task bar, or using alt tab works to get back, without causing an input event.
2017-06-30 16:17:29 +02:00
Michael Maltese
7dab92d8b5 DSPDisassembler: fail when buffer too large 2017-06-30 01:47:02 -07:00
Michael Maltese
1d0185d7d5 DSPDisassembler: remove unused base_addr parameter 2017-06-30 01:47:02 -07:00
Michael Maltese
2564823522 DSPDisassembler: cleanup disassembler text handling 2017-06-30 01:47:02 -07:00
Michael Maltese
0f98cd636b DSPDisassembler: remove unused labels member from dspdisassembler 2017-06-30 01:47:02 -07:00
Michael Maltese
54ef5299bb DSPDisassembler: remove UnkOps.txt write on destruction 2017-06-30 01:47:01 -07:00
Michael Maltese
391c7319f5 DSPDisassembler: get rid of double-pass and temp file 2017-06-30 01:47:01 -07:00
Starsam80
ed0ba7ef28
Qt: Don't show the Qt "What's this" button 2017-06-29 18:52:53 -06:00
Michael Maltese
d0fdb9f149 DolphinQt2: replace Settings with SConfig where possible
Changes:
- `ShowDevelopmentWarning` is now under the '[Interface]' group in
  Dolphin.ini, with other interface-related settings. So, whoever uses
  DolphinQt will have to edit that manually again. Sorry!
- Game search paths and the last file are now shared properly with
  DolphinWX
- Qt-only preferences like "Preferred View: list/table" are now
  stored using the platform's native settings storage, rather than in
  UI.ini
2017-06-29 17:17:32 -07:00
Michael Maltese
21fa010bb6 Remove CoreAudio audio backend
Cubeb handles everything the CoreAudio backend can, plus supports DPL2.
2017-06-29 16:53:20 -07:00
Mat M
898bbffaa7 Merge pull request #5724 from JonnyH/WIP/fix-some-ODR-warnings
Fix some GCC ODR warnings
2017-06-29 18:48:47 -04:00
Jonathan Hamilton
e66e034419 Fix some GCC ODR warnings
struct GekkoOPTemplate was implemented differently in different
compilation units, which breaks the ODR and could end up causing issues
as symbols exported from one compilation unit could end up being used by
another even if they have different implementations.

This puts them in an anonymous namespace, restricting any generated
symbols to the single compilation unit.
2017-06-29 12:21:32 -07:00
JosJuice
5ca3aee00a FileUtil: Add a class for Exists/IsDirectory/GetSize
Some code was calling more than one of these functions in a row
(in particular, FileUtil.cpp itself did it a lot...), which is
a waste since it's possible to call stat a single time and then
read all three values from the stat struct. This commit adds a
File::FileInfo class that calls stat once on construction and
then lets Exists/IsDirectory/GetSize be executed very quickly.

The performance improvement mostly matters for functions that
can be handling a lot of files, such as File::ScanDirectoryTree.

I've also done some cleanup in code that uses these functions.
For instance, some code had checks like !Exists() || !IsDirectory(),
which is functionally equivalent to !IsDirectory(), and some
code was using File::GetSize even though there was an IOFile
object that the code could call GetSize on.
2017-06-29 19:07:29 +02:00
Niels Boehm
68198d6c32 Make one log font monospaced for all platforms.
The MonoSpaceFont of the LogWindow was using a Windows native way to
specify a font name.

Now it's using wxFONTFAMILY_TELETYPE.

On Win32 it will additionally request the specific font name "Consolas",
so it doesn't use ugly "Courier New". I pilfered that specialization
from Source/Core/DolphinWX/Cheats/ARCodeAddEdit.cpp.
2017-06-29 07:05:15 +02:00
JosJuice
a59edfe8cf FilesystemPanel: Put partitions in separate folders when extracting all partitions 2017-06-28 22:25:27 +02:00
JosJuice
478c4fd1f3 FileSystemGCWii: Use DiscExtractor's FST offset/size functions 2017-06-28 22:25:09 +02:00
JosJuice
1b6506f4e8 DiscExtractor: Add support for more things to extract 2017-06-28 22:24:33 +02:00
JosJuice
94b18bfb07 FilesystemPanel: Replace Extract Apploader/DOL with Extract System Data
Because having one option for each thing to extract is
going to be way too many options once I add support for
more things to extract.
2017-06-28 22:23:10 +02:00
JosJuice
0b068d84d5 FilesystemPanel: Overhaul the right-click menu 2017-06-28 22:23:01 +02:00
JosJuice
2ca5f1dec8 FilesystemPanel: Handle root correctly in BuildFilePathFromSelection
This was unnecessary in the past but is necessary
for the next commit.
2017-06-28 22:22:50 +02:00
JosJuice
39ff203c1e DiscExtractor: Don't create extra folders when extracting a folder
Before, if you extracted a directory like /map/Final/Release/,
Dolphin would create the nested folders map, Final and Release
in the output directory and put the files in Release instead of
just putting the files directly in the output directory.
2017-06-28 22:22:41 +02:00