Commit Graph

23692 Commits

Author SHA1 Message Date
Lioncash 136f16599f UnitTests: Add basic tests for RotateRight() and RotateLeft() 2018-03-31 18:09:50 -04:00
Lioncash c3483a1823 CommonFuncs: Generify rotation functions and move them to BitUtils.h
These are bit manipulation functions, so they belong within BitUtils.

This also gets rid of duplicated code and avoids relying on compiler
reserved names existing or not existing to determine whether or not we
define a set of functions.

Optimizers are smart enough in GCC and clang to transform the code to a
ROR or ROL instruction in the respective functions.
2018-03-31 18:09:45 -04:00
Lioncash eee32c030b
CMakeLists: Remove lzo from the LIBS variable and make linkage private
The only place this library is needed (core) is already linked in the core target.
Also make the linkage private to create linkage failures if the dependency isn't
explicitly linked in elsewhere where it should be.

Reduces the dependency on the LIBS variable.
2018-03-31 15:01:05 -04:00
Mat M 76e1a5b892
Merge pull request #6569 from JosJuice/kill-emu-state
Remove EmuState
2018-03-31 14:04:30 -04:00
Mat M a6f1c6e2e9
Merge pull request #6568 from leoetlino/dead
Remove dead code
2018-03-31 14:02:40 -04:00
Shawn Hoffman 6a0c15491b Remove EmuState 2018-03-31 16:21:17 +02:00
Léo Lam df0d1c8138
Merge pull request #6563 from JosJuice/fix-wii-banner-load
Fix loading Wii banners for games that initially were cached without banners
2018-03-31 14:59:09 +02:00
Léo Lam c82da2b978 Remove dead code
Unused, old code that is intended to be removed should not be left in
comments -- that is what version control is for.
2018-03-31 14:56:27 +02:00
JosJuice 5847e213af Clean up the end of GameFile::BannerChanged 2018-03-31 14:52:21 +02:00
Léo Lam 329622120f
Merge pull request #6567 from JosJuice/discio-enums-case
DiscIO: Don't use all uppercase for enum values
2018-03-31 14:37:26 +02:00
JosJuice 4387432436 DiscIO: Don't use all uppercase for enum values
Also removing some prefixes that we don't need now that we're
using enum classes instead of plain enums.
2018-03-31 14:11:32 +02:00
Léo Lam 4e547772da IOS/FS: Make the NAND root path a parameter
Cleaner than having the backend figure out which NAND root to use.
2018-03-31 10:58:49 +02:00
Léo Lam c56f31906c IOS/FS: Remove some redundant log messages
The FS IPC code already logs all commands, so keeping the log messages
in the backend is redundant.
2018-03-31 10:58:49 +02:00
Léo Lam 2d8be6a77d IOS/FS: Make it harder to forget closing FDs
Return a FileHandle which will automatically close the FD when
the handle goes out of scope. For the rare cases where this behaviour
is undesirable, the FD can be released from the handle.
2018-03-31 10:58:48 +02:00
Léo Lam de15e09a4f Log: Rename IOS_FILEIO to IOS_FS
Let's use the actual name of the system module.

Also, the FS code is not all about files.
2018-03-31 10:58:37 +02:00
Léo Lam 5a7b966b6d IOS: Rewrite FS to use FileSystem
This is the large change in the branch.

This lets us use either the host filesystem or (in the future) a NAND
image exactly the same way, and make sure the IPC emulation code
behaves identically. Less duplicated code.

Note that "FileIO" and "FS" were merged, because it actually doesn't
make a lot of sense to split them: IOS handles requests for both
/dev/fs and files in the same resource manager, and as it turns out,
/dev/fs commands can *also* be sent to non /dev/fs file descriptors!
If we kept /dev/fs and files split, there would be no way to
emulate that correctly. I'm not aware of anything that does that (yet?)
but I think it's important to be correct.
2018-03-31 10:58:37 +02:00
Léo Lam 78478a651d Boot: Move CreateVirtualFATFilesystem to Boot_WiiWAD
It has nothing to do in the filesystem code.

(It also smells like a workaround for some kind of timing issue.)
2018-03-31 10:58:37 +02:00
Léo Lam fcfe4e2a26 IOS: Change GetFS() to return a FileSystem
Now that we have a proper filesystem interface, it makes more sense
to return it instead of the emulated IOS device (which isn't
really usable for any purpose other than emulated IPC).
2018-03-31 10:45:44 +02:00
Léo Lam 1eec459e30 IOS: Extract existing FS code into a host backend
Extract the existing FS code into a HostBackend implementing
the filesystem interface.

Compared to the original code, this uses less static state.
The open host files map is now a member variable
as it should have been. Filesystem handles are now also easier
to savestate. Some variable names and log messages were cleaned up.
Nothing else has been changed.
2018-03-31 10:45:44 +02:00
Léo Lam f1dbb8952c IOS: Introduce a new FileSystem interface
Add a new FileSystem class that can be used to perform operations
on the emulated Wii filesystem.

This will allow separating the IPC code (reading from and writing to
memory to handle IOS FS commands) and the actual filesystem code
in a much better way.

This also paves the way for implementing another filesystem backend
in the future -- NAND images for more complete emulation, including
filesystem metadata like permissions or file orders, which some games
and homebrew actually care about -- without needing to make any more
changes to the other parts of the codebase, in addition to making
filesystem behaviour tests easier to write.
2018-03-31 10:45:44 +02:00
Léo Lam 1bdfedf3c6 Common: Add a Result class
This adds a lightweight, easy to use std::variant wrapper intended to
be used as a return type for functions that can return either a result
or an error code.
2018-03-31 10:45:44 +02:00
Lioncash e93159e54a
CMakeLists: Link in system framework libraries explicitly on macOS
Makes our libraries explicitly link in which libraries they need.
This makes our dependencies explicit and removes the reliance on the
LIBS variable to contain the libraries that they need.
2018-03-30 16:14:10 -04:00
Léo Lam 7833f1a931
Merge pull request #6558 from lioncash/input
InputCommon/CMakeLists: Link in ForceFeedback library explicitly on macOS
2018-03-30 14:05:36 +02:00
JosJuice a7ba69e16a Fix loading Wii banners for games that initially were cached without banners
Fixes https://bugs.dolphin-emu.org/issues/10969
2018-03-30 12:04:01 +02:00
Mat M c3398c9e2c
Merge pull request #6559 from spycrab/qt_crashes
Qt/PatchesWidget: Fix segfault
2018-03-29 18:51:22 -04:00
Mat M fc99b21080
Merge pull request #6560 from JosJuice/invalid-games-in-game-list
DolphinQt2: Don't show invalid games in game list
2018-03-29 18:49:38 -04:00
Mat M 65a1065cde
Merge pull request #6561 from JosJuice/uid-version-last-changed
Put a "last changed in PR" comment next to UID cache version
2018-03-29 18:48:12 -04:00
JosJuice b065f86270 Translate the netplay chat info message about QoS 2018-03-29 22:44:23 +02:00
JosJuice 01ea10824d Put a "last changed in PR" comment next to UID cache version
This will create a merge conflict if two PRs try to increment the
cache version at the same time, which makes it noticeable that the
PR that gets merged last needs to increment the cache version again.
We already use this for savestates and the game list cache.
2018-03-29 22:38:37 +02:00
JosJuice ff2fe73ec9 DolphinQt2: Don't show invalid games in game list
Regression from 1f1dae3.

This problem doesn't happen in DolphinWX as far as I know, but if
you've ran into the problem in DolphinQt2, it will carry over to
DolphinWX because of the shared game list cache.
2018-03-29 21:52:21 +02:00
spycrab 55d9df379a Qt/PatchesWidget: Fix segfault 2018-03-29 21:33:36 +02:00
Lioncash b8a4ab23dd
InputCommon/CMakeLists: Link in ForceFeedback library explicitly on macOS
Makes an implicit dependency explicit. Also makes the macOS libraries link privately
as they aren't used in the exposed interface.
2018-03-29 11:53:50 -04:00
Léo Lam 53b3da7301
Merge pull request #6555 from Ebola16/ASU
Android: Updates for Android Studio 3.1
2018-03-29 15:13:42 +02:00
Léo Lam e4f2ff0f32
Merge pull request #6557 from spycrab/qt_log_font
Qt/LogWidget: Add "Debugger Font" option
2018-03-29 15:12:33 +02:00
spycrab 8cb497cab2 Qt/LogWidget: Add "Debugger Font" option 2018-03-29 03:02:34 +02:00
Lioncash b818cc682c VideoCommon/Vulkan: Explicitly link in xxhash
Lessens the dependency on the LIBS variable (and also makes the required
libraries explicit).
2018-03-28 17:03:16 -04:00
Ryan Meredith 00db87e304 Android: Updates for Android Studio 3.1 2018-03-28 16:38:22 -04:00
Léo Lam 03a6a9b240
Merge pull request #6546 from spycrab/updater_ui
Implement Updater UI
2018-03-28 20:04:32 +02:00
Léo Lam 21a2c0284d
Merge pull request #6544 from spycrab/qt_fix_general
GeneralPane: Fix settings resetting and improve code
2018-03-28 20:01:57 +02:00
spycrab 429dc54159 Updater: Implement UI 2018-03-28 17:59:22 +02:00
spycrab f700fcae2e HttpRequest: Add callback option 2018-03-28 17:33:34 +02:00
Lioncash fd7ac0d4a3
VideoCommon/CMakeLists: Migrate off add_dolphin_library
Continues the migration work started in 3a4c3bbe01
2018-03-28 09:57:50 -04:00
Léo Lam c28850045d
Merge pull request #6552 from lioncash/uicommon-cmake
UICommon/CMakeLists: Migrate off of add_dolphin_library
2018-03-28 12:33:24 +02:00
Lioncash a2a18380a7 UICommon/CMakeLists: Migrate off of add_dolphin_library
Continues the migration work started in
3a4c3bbe01
2018-03-28 06:29:09 -04:00
Markus Wick fc59ec6f13
Merge pull request #6547 from lioncash/dead
PixelShaderGen: Remove dead code in WriteColor()
2018-03-28 10:43:15 +02:00
JMC47 3cd9465f91 Fix JIT64 mtsmsr issue after PIE support again. 2018-03-28 04:16:41 -04:00
Léo Lam 10f198f3cf
Merge pull request #6551 from lioncash/qt-misc
DolphinQt: Remove a few unused variables
2018-03-28 07:50:44 +02:00
JosJuice 748ebf6891
Merge pull request #6550 from lioncash/qt
HacksWidget: Remove duplicate AddDescription() calls in AddDescriptions()
2018-03-28 07:33:04 +02:00
Lioncash df4ca7f05e SearchBar: Remove unused class variables 2018-03-27 22:47:02 -04:00
Lioncash 306d132232 MainWindow: Remove unused std::string variable in NetPlayHost() 2018-03-27 22:47:02 -04:00
Lioncash 833c030496 WiiPane: Remove unused variable in OnUSBWhitelistRemoveButton() 2018-03-27 22:47:01 -04:00
Lioncash eb8a853d8e Resources: Remove unused string in Init() 2018-03-27 22:47:01 -04:00
Lioncash 568490fdfb MD5Dialog: Call .empty() instead of testing against an empty string 2018-03-27 22:47:01 -04:00
Lioncash d3283a881f MenuBar: Remove unnecessary c_str() call
Also uses the character overload for find_last_of
2018-03-27 22:47:01 -04:00
Lioncash b637163704 CodeWidget: Remove unnecessary c_str() calls 2018-03-27 22:46:51 -04:00
Lioncash 4a1123f519 HacksWidget: Remove duplicate AddDescription() call in AddDescriptions() 2018-03-27 22:36:37 -04:00
Lioncash aa42534fed FilesystemWidget: Pass path QString by const reference instead of by value in ExtractDirectory()
Makes it consistent with the surrounding API.

Also corrects a typo in ExtractFile's parameter list.
2018-03-27 22:00:40 -04:00
Lioncash fc531993a9 DiscExtractor: Pass partition by reference rather than by value in ExtractDirectory() 2018-03-27 21:49:42 -04:00
Pierre Bourdon ac97f0463f
Merge pull request #6548 from lioncash/const
LinearDiskCache: Don't cast away const in Read()
2018-03-28 03:14:38 +02:00
Lioncash 008442898c LinearDiskCache: Don't cast away const in Read()
We really shouldn't make the out pointer in the read function const and
then summarily cast it away. Also alters Write to be consistent with
casting.
2018-03-27 21:09:18 -04:00
Lioncash f10198500e PixelShaderGen: Invert conditional in WriteColor()
Puts the true condition body first instead of the false one for better
reading.
2018-03-27 18:53:17 -04:00
Lioncash c9e0045881 PixelShaderGen: Remove dead code in WriteColor()
The outer conditional executes only whenever destination alpha is used.
2018-03-27 18:46:25 -04:00
Léo Lam ea166a4812
Merge pull request #6543 from lioncash/cast
HiresTextures: Remove unnecessary pointer casts in GenBaseName() + minor associated cleanup
2018-03-27 21:45:56 +02:00
Lioncash 2da8d98b2f
HiresTextures: Use std::minmax or std::minmax_element where applicable in GenBaseName()
Minimizes repetition.

std::minmax_element can be used for the 256 * 2 case, as it's only performing byte comparisons
and thus, there will always be an element smaller than 0xffff, so it doesn't need to be included
in the set of compared values.
2018-03-27 15:39:05 -04:00
Lioncash d5a1edba09
HiresTextures: Remove unnecessary pointer casts in GenBaseName()
swap16 has an overload that accepts a u8*, performing the same behavior
in a well-defined manner.
2018-03-27 15:19:02 -04:00
Pierre Bourdon 4ed0e10f41
Merge pull request #6541 from spycrab/updater_feedback
Updater: Provide basic user feedback
2018-03-27 20:43:36 +02:00
spycrab 7ce147f4d5 Updater: Provide basic user feedback 2018-03-27 20:32:26 +02:00
spycrab 11b15a688b GeneralPane: Fix settings resetting and improve code 2018-03-27 20:27:03 +02:00
Stenzek 92e7830be9
Merge pull request #6540 from spycrab/gcpad_segfault
Core: Check for initialized GCPad before resetting rumble
2018-03-28 02:40:53 +10:00
Léo Lam 3c61ee5f7f
Merge pull request #6542 from lioncash/cast
BPStructs: Remove an unnecessary pointer cast in GetBPRegInfo
2018-03-27 18:12:56 +02:00
Léo Lam 98f62a3ecd
Merge pull request #6530 from spycrab/qt_hires_icon
Various icon improvements
2018-03-27 18:08:46 +02:00
Lioncash 9feb18866b
BPStructs: Remove an unnecessary pointer cast in GetBPRegInfo
swap32 has an overload that accepts a u8*, performing the same behavior
in a well-defined manner.
2018-03-27 12:04:16 -04:00
spycrab 4f63d7f204 Qt: Fix low-resolution icon 2018-03-27 17:32:45 +02:00
spycrab 016ef43b27 Core: Check for initialized GCPad before resetting rumble 2018-03-27 16:26:36 +02:00
Léo Lam ceed6890df
Merge pull request #6526 from lioncash/emitter
x64Emitter: Minor cleanup and changes
2018-03-27 08:49:36 +02:00
Lioncash 476c71efc1 x64Emitter: Make eligible register and immediate functions constexpr
Pointer variants aren't eligible as expressions with reinterpret cast
within them cannot be constexpr.
2018-03-26 18:21:22 -04:00
Lioncash 8b072e1383 x64Emitter: Make remaining eligible functions in OpArg constexpr 2018-03-26 18:21:21 -04:00
Lioncash 964201f2d3 x64Emitter: Use std::tie in OpArg's operator==. Provide operator!= for symmetry 2018-03-26 18:21:21 -04:00
Lioncash 7f583b66cb x64Emitter: Clean up constructors for OpArg
Default initializes members and moves initial assignments into the
initializer list.
2018-03-26 18:21:17 -04:00
Miikka Juomoja 7169be242f StringUtil: Fix possible bad free 2018-03-26 23:48:13 +02:00
Léo Lam 793c6d25f4
Merge pull request #4532 from Neui/env-var-usr-cfg
Use $DOLPHIN_EMU_PATH as an alternative for the user directory
2018-03-26 23:41:27 +02:00
Léo Lam b0e4e35cc5
Merge pull request #6478 from spycrab/qt_default_btns
Qt: Replace "OK" with "Close" buttons
2018-03-26 22:48:26 +02:00
Léo Lam d3f432946f
Merge pull request #6514 from lioncash/inputcommon-cmake
InputCommon/CMakeLists: Migrate off add_dolphin_library
2018-03-26 21:25:27 +02:00
Léo Lam c9b4e3959c
Merge pull request #6511 from leoetlino/qt
Qt: Minor fixes
2018-03-26 21:24:44 +02:00
Léo Lam 91f61a1be4
Merge pull request #6285 from JosJuice/qt-gametracker-more-thread
DolphinQt2: Perform more of GameTracker's work on a separate thread
2018-03-26 21:24:22 +02:00
Markus Wick 9b5726fc23
Merge pull request #6534 from lioncash/dspjit
DSPEmitter: Remove uses of the DSP JIT global in CompileCurrent()
2018-03-26 21:12:46 +02:00
Markus Wick 12b99313aa
Merge pull request #6536 from stenzek/glx-swap-interval
GLInterface: Use EXT_swap_control or MESA_swap_control over SGI
2018-03-26 21:11:13 +02:00
JosJuice 0a69b42d07 DolphinQt2: Perform more of GameTracker's work on a separate thread
This reduces the time from startup to the game list window showing up.
2018-03-26 20:08:06 +02:00
Léo Lam b4e9bef25c
Merge pull request #6519 from spycrab/qt_rw_bg
Qt/RenderWidget: Draw background on pause
2018-03-26 19:04:53 +02:00
Léo Lam 2e1edb49b0
Merge pull request #6524 from lioncash/global
JitArm64/JitAsm: Remove usages of the JIT global
2018-03-26 18:59:05 +02:00
Léo Lam 674ab6a8ef
Merge pull request #6532 from lioncash/interp
Interpreter: Remove static state within SingleStepInner()
2018-03-26 18:50:26 +02:00
Stenzek c82be53d5c GLInterface: Use EXT_swap_control or MESA_swap_control over SGI
The SGI extension does not define calling SwapInterval with a parameter
of zero as valid. It was just lucky that drivers interpreted this as
vsync off. The EXT_swap_control extension defines zero as a valid value.

Mesa does not appear to support the EXT variant, so we fall back to
MESA_swap_control here, which also supports zero.
2018-03-26 22:09:22 +10:00
Lioncash 4a4538abbf
Interpreter_LoadStore: Amend variable naming
Amends variable names to follow our code style. Also makes code const correct where possible.
2018-03-26 07:47:50 -04:00
Léo Lam 97e4d3d56f
Merge pull request #6523 from lioncash/cast
Interpreter_LoadStore: Remove unnecessary casts
2018-03-26 12:47:09 +02:00
Léo Lam eb489c0a5e
Merge pull request #6529 from lioncash/utils
DSPCodeUtil: Don't return data via an out parameter
2018-03-26 12:46:16 +02:00
Léo Lam 3272fda3ee
Merge pull request #6525 from lioncash/dead-code
Jit64/Jit_Integer: Remove dead code in arithXex()
2018-03-26 12:43:01 +02:00
Léo Lam ccfdea696a
Merge pull request #6527 from lioncash/typedef
DSPTables: Remove opc_t typedef
2018-03-26 12:39:27 +02:00
Léo Lam 8e8603fcc9
Merge pull request #6528 from lioncash/enum-asm
DSPAssembler: Make error code enum an enum class
2018-03-26 12:38:06 +02:00
Léo Lam ea5808759e
Merge pull request #6531 from lioncash/mmu-enum
MMU: Make TLBLookupResult and XCheckTLBFlag enum classes
2018-03-26 11:39:37 +02:00
spycrab 591c8837e2 Qt: Replace "OK" with "Close" buttons 2018-03-26 09:20:48 +02:00
spycrab 9f13048e1e Qt/GraphicsWindow: Decrease description box size 2018-03-26 08:30:32 +02:00
Lioncash 1519e4dbb3 DSPEmitter: Remove uses of the DSP JIT global in CompileCurrent()
With this, the DSPEmitter itself no longer makes use of the DSP JIT global
2018-03-26 01:14:17 -04:00
Kekker-git d40ae9f569 Fix indefinite rumble on emulation pause 2018-03-26 00:04:58 -04:00
Lioncash 8b29997ed1 Interpreter: Remove an unnecessary UReg_MSR& cast from SingleStepInner
This is technically undefined behavior, but regardless of that, it's not
even necessary since we can just make a temporary around the MSR value
and just discard it when done with it, since all we do is query the FP
bit value with it.
2018-03-25 21:36:39 -04:00
Lioncash b0efcdc8ef Interpreter: Get rid of static state within SingleStepInner()
Given how the hooking operates, we may not execute an instruction.
Instead of making the state a static local to the function, just make it
part of the lifecycle of the Interpreter class.
2018-03-25 21:30:00 -04:00
Lioncash c4a597171c MMU: Make XCheckTLBFlag an enum class 2018-03-25 19:51:47 -04:00
Lioncash 9967c24f5d MMU: Make TLBLookupResult an enum class 2018-03-25 19:44:14 -04:00
Lioncash 0f25627614 DSPCodeUtil: Don't return data via an out parameter
We can just return directly in these cases.
2018-03-25 18:55:08 -04:00
Lioncash e42db3594b DSPAssembler: Make error code enum an enum class
Prevents the error codes from littering the surrounding scope.
2018-03-25 18:19:08 -04:00
Lioncash 8c421ffbb7 DSPTables: Remove opc_t typedef
This was only ever used by the DSP assembler, and even then it was
sparsely used. Get rid of it to be consistent with types in other
sections of the DSP code.
2018-03-25 17:53:23 -04:00
Lioncash 2861e8f868 x64Emitter: Clean up constructor and destructors of XEmitter
In-class initializes members, defaults the default constructor and
virtual destructor, and puts members in the initializer list.
2018-03-25 16:50:02 -04:00
Lioncash 7bd41a3b55 Jit64/Jit_Integer: Remove dead code in arithXex()
The conditional this code is within already checks whether d == b, so this
conditional will never be true.
2018-03-25 15:35:02 -04:00
Lioncash efcdb3debb JitArm64/JitAsm: Remove usages of the JIT global
With this, the entire ARM JIT makes no use of the JIT global whatsoever.
2018-03-25 15:23:49 -04:00
Lioncash a45631c4ca Interpreter_LoadStore: Remove unnecessary casts
These aren't necessary as the type being stored into a u32 are of the
same signedness and are smaller in data size, so there's no truncation
being performed.
2018-03-25 15:09:32 -04:00
Stenzek 2f1a7cbee1 Implement "Skip" ubershader mode
Skip ubershader mode works the same as hybrid ubershaders in that the
shaders are compiled asynchronously. However, instead of using the
ubershader to draw the object, it skips it entirely until the
specialized shader is made available.

This mode will likely result in broken effects where a game creates an
EFB copy, and does not redraw it every frame. Therefore, it is not a
recommended option, however, it may result in better performance on
low-end systems.
2018-03-26 01:57:41 +10:00
Léo Lam 5c83e18fbd
Merge pull request #6515 from lioncash/cast
Interpreter_FPUtils: Get rid of a pointer cast
2018-03-25 11:27:38 +02:00
Léo Lam e9976c27c0
Merge pull request #6518 from lioncash/namespace
Interpreter: Don't dump the MathUtils namespace into scope in Interpreter_FloatingPoint and Interpreter_Paired
2018-03-25 11:24:24 +02:00
Lioncash 48e2e9a41d CachedInterpreter: Use using aliases instead of typedef 2018-03-25 02:57:25 -04:00
Lioncash 9829083241 CachedInterpreter: Use an enum class for instruction type 2018-03-25 02:57:16 -04:00
Lioncash 89df65aa25 Interpreter_Integer: Correct precedence of overflow check in nego
The overflow check needs to occur before the condition register update
due to the fact that the summary overflow (SO) bit is used in the
updating of the condition register. If we set any overflow bits after
updating the CR, then we can potentially incorrectly report that an
overflow did not happen (in the case the SO bit wasn't set previously).
2018-03-24 20:48:05 -04:00
spycrab 3f1430587c Qt/RenderWidget: Draw background on pause 2018-03-25 01:26:50 +01:00
Lioncash 96014e74a3 Interpreter_Paired: Don't dump the entire MathUtils namespace into scope
Functions from the namespace are only used four times within the entire
file.
2018-03-24 19:42:14 -04:00
Lioncash 46f61a48c7 Interpreter_FloatingPoint: Don't dump the entire MathUtils namespace into scope
Given functions from the MathUtils namespace are only used six times in
the whole file, dumping the namespace seems a little excessive.
2018-03-24 19:40:22 -04:00
Lioncash 27611d55ff Interpreter_FPUtils: Get rid of a pointer cast
This is undefined behavior according to the standard. We can just use
the built in means of retrieving a quiet NaN.
2018-03-24 19:33:44 -04:00
Léo Lam 328ac424c0
Merge pull request #6517 from lioncash/ppctables
PPCTables: Namespace all exposed functions
2018-03-24 22:17:36 +01:00
Lioncash 8a7abd72b4 PPCTables: Remove prefixed underscores from parameter names 2018-03-24 16:46:49 -04:00
Lioncash 2381aeecc3 PPCTables: Namespace all exposed functions
It's somewhat inconsistent to have two straggler functions outside the
namespace.
2018-03-24 16:46:12 -04:00
Lioncash 397b3fb976 CPUCoreBase: Make the GetName() member function const qualified
This function should have no need to modify internal class state.
2018-03-24 16:17:39 -04:00
Lioncash c738ddc4aa CPUCoreBase: Default the virtual destructor 2018-03-24 16:09:19 -04:00
Léo Lam 5369d3c9f1
Merge pull request #6513 from lioncash/dead-code
Interpreter: Remove dead code
2018-03-24 20:09:25 +01:00
Lioncash ef6e747a68 PowerPC: Remove commented out PanicAlert 2018-03-24 14:52:22 -04:00
Lioncash 3dc3b0caa5 Interpreter_LoadStore: Remove commented out code
Also removes long separation lines that aren't really necessary.
2018-03-24 14:49:18 -04:00
Lioncash f9e0645b99 Interpreter_SystemRegisters: Remove commented out code 2018-03-24 14:45:46 -04:00
Lioncash 288b579c09 Interpreter_Integer: Remove commented out code in subfic 2018-03-24 14:43:25 -04:00
Lioncash 01308330d9
InputCommon/CMakeLists: Migrate off add_dolphin_library
Continues the migration work started in 3a4c3bbe01
2018-03-24 14:13:53 -04:00
Lioncash 680ceb7f43
DiscIO/CMakeLists: Migrate off add_dolphin_library
Continues the migration work started in 3a4c3bbe01
2018-03-24 13:54:06 -04:00
Léo Lam 2d0d4fee28 Qt: Fix controller window margin
Reduces wasted space and makes the whole window (barely) fit on my
laptop screen again. (Regression from the scroll wrap changes)
2018-03-24 18:45:10 +01:00
Léo Lam bf05c74f6b Qt: Fix GameCube config pane spacing 2018-03-24 18:18:17 +01:00
Léo Lam 752098de22 Qt: Fix search bar widget spacing
With setMargin(0), the widgets look awkwardly close to the window edges
2018-03-24 18:09:46 +01:00
Léo Lam 8d0c15bb97 Qt/Search: Simplify placeholder text
A search box is a common UI element. We don't need to explicitly tell
the user that they need to type a search term. Also,

Let's use the common "Search <items>..." placeholder text instead
and make the string shorter for localisation.
2018-03-24 18:02:17 +01:00
Léo Lam f7c9d2fd4d Qt: Show code pane by default in debug mode
Otherwise, it's confusing because the option seems to do nothing
especially if the user is used to the DolphinWX debugger.
2018-03-24 17:53:46 +01:00
spycrab 806990968d Qt: Implement "Auto-Adjust Window Size" 2018-03-24 16:48:46 +01:00
Léo Lam a838d13fd1
Merge pull request #6504 from Ebola16/OSD
Rename "On-Screen Messages" to "On-Screen Display Messages"
2018-03-24 09:59:14 +01:00
Léo Lam 305b3dc835
Merge pull request #6497 from spycrab/qt_file
Qt: Implement missing "File" menu items
2018-03-24 09:10:49 +01:00
Léo Lam 4c5efb0f3a
Merge pull request #6508 from lioncash/cmake-common
Common/CMakeLists: Migrate off add_dolphin_library
2018-03-24 09:08:20 +01:00
Léo Lam 37dbb2e181
Merge pull request #6509 from spycrab/qt_shader_gen
Qt: Show shader generation window
2018-03-24 09:03:16 +01:00
Markus Wick 3ab88742fd
Merge pull request #6492 from lioncash/nop
Jit_Integer: Make NOP check more flexible for ori and expand NOP checking to oris, xori, and xoris
2018-03-24 08:53:21 +01:00
spycrab cb71b06afc Qt: Show shader generation window 2018-03-24 03:02:47 +01:00
Mat M 5669841e83
Merge pull request #6505 from lioncash/arm
Arm64Emitter: Minor cleanup
2018-03-23 19:25:50 -04:00
Lioncash f889cae8c4
Arm64Emitter: Satisfy unrelated linter issues that cropped up by modifying the cpp file 2018-03-23 19:17:44 -04:00
Lioncash 91cefe6c8a
Arm64Emitter: Make IsImmArithmetic, IsImmLogical, FPImm8ToFloat, and FPImm8FromFloat internally linked
These aren't used anywhere outside of the emitter. Centralizes them under an anonymous namespace.
2018-03-23 19:17:26 -04:00
Lioncash 2548ccda8e
Common/CMakeLists: Migrate off add_dolphin_library
Continues the migration work that was started in 3a4c3bbe01
2018-03-23 19:08:30 -04:00
spycrab 8ebb3a015e Qt: Update analytics checkbox after initial prompt 2018-03-23 23:28:17 +01:00
spycrab f3e6f0f2d4 Updater: Increase request timeout to 30s 2018-03-23 22:25:38 +01:00
Lioncash b11c237c43
Arm64Emitter: Remove unnecessary V8_UINT64_C preprocessor macro
UINT64_C is provided via <cstdint>, so we can just use that instead.
2018-03-23 13:31:48 -04:00
Lioncash 03671a5534
Arm64Emitter: Remove duplicate IsPowerOf2 function
We can just use the generified version in MathUtil.
2018-03-23 13:31:44 -04:00
Ryan Meredith 976347c65d Rename "On-Screen Messages" to "On-Screen Display Messages" 2018-03-23 12:29:03 -04:00
Pierre Bourdon 22d851d930
Merge pull request #6500 from spycrab/qt_respect_portable
Qt: Make QSettings use the user config directory (Make it respect portable.txt)
2018-03-23 17:25:28 +01:00
JosJuice 9c70036105
Merge pull request #6503 from lioncash/brace-warn
PixelShaderGen/UberShaderPixel: Silence -Wmissing-braces warnings
2018-03-23 15:29:39 +01:00
Lioncash a52cc8d52b
PixelShaderGen/UberShaderPixel: Silence -Wmissing-braces warnings 2018-03-23 10:06:27 -04:00
Lioncash 2ab29a40eb
AbstractFramebuffer: Silence a -Wlogical-op-parentheses warning in ValidateConfig() 2018-03-23 09:58:19 -04:00
Lioncash 79f40fb8d7
MathUtil: Generify IsPow2
This will allow it to also be used in the AArch64 emitter.
2018-03-23 09:50:49 -04:00
spycrab 68733ac6c1 Qt: Make QSettings use the user config directory 2018-03-23 12:50:01 +01:00
Lioncash 38f045cee5
DolphinQt2/GameCubePane: Correct duplicate condition in LoadSettings()
Also turns a std::string const reference into a value instance.
While this is well-defined, it does look out of place, given a new string
is being created.
2018-03-23 07:38:26 -04:00
Pierre Bourdon 894d4c99a8
Merge pull request #6495 from lioncash/namespace
PowerPC: Namespace all header contents for PowerPC.h
2018-03-23 12:09:09 +01:00
Pierre Bourdon 27ffc8a69d
Merge pull request #6498 from lioncash/cmake
AudioCommon/CMakelists: Migrate off add_dolphin_library
2018-03-23 12:07:00 +01:00
Pierre Bourdon 1ac7452129 AutoUpdater: Generate basic HTML changelog. 2018-03-23 11:10:25 +01:00
Pierre Bourdon 1f3310874b AutoUpdater: Don't show a spinning wheel cursor when delaying update 2018-03-23 11:10:25 +01:00
Pierre Bourdon 9628333b86 AutoUpdater: support optionally restarting Dolphin after update 2018-03-23 11:10:25 +01:00
Pierre Bourdon 773ec975f3
Merge pull request #6489 from spycrab/qt_updater
Qt: Improve and better integrate updater
2018-03-23 11:08:48 +01:00
spycrab 95a5a51e55 Qt: Implement missing "File" menu items 2018-03-23 10:58:54 +01:00
spycrab ee3d64145c Qt: Improve updater 2018-03-23 10:42:40 +01:00
Lioncash fc16a78f6a Jit_Integer: Handle NOP case for xori and xoris
Like ori and oris, xori and xoris can also be used to introduce a NOP.
In that case, just don't do anything.
2018-03-22 22:51:43 -04:00
Lioncash 007f9e5309 Jit_Integer: Handle NOP case for oris as well
Like ori, this can also be used as a NOP under the same conditions.
2018-03-22 22:49:02 -04:00
Lioncash 42fce74f39 Jit_Integer: Handle NOP case where RA == RS for ori
ori can be used as a NOP if the two register operands are the same, and
the immediate is zero, not only if the two register operands are r0.

Also removes the check for !inst.Rc, as ori only has one encoding, and
said encoding doesn't even have a record bit in it.
2018-03-22 22:47:19 -04:00
Lioncash b96bbc8f8d
AudioCommon/CMakelists: Migrate off add_dolphin_library
Continues the changes that were introduced in 3a4c3bbe01
2018-03-22 22:07:11 -04:00
Mat M 71846a6daa
Merge pull request #6469 from lioncash/cmake
Core/CMakeLists: Migrate off add_dolphin_library
2018-03-22 21:52:44 -04:00
Lioncash 4c97deb364 PowerPC: Namespace all header contents for PowerPC.h
Puts everything under the same namespace. Previously the header was only
partially namespaced, which is inconsistent.
2018-03-22 19:01:47 -04:00
spycrab 196a1dcce4 Qt/CheatCodeEditor: Fix valid, encrypted AR codes not being accepted 2018-03-22 23:42:20 +01:00
Léo Lam 5e76f3a6d4
Merge pull request #6488 from aldelaro5/symbols-log
LOG: Add a log type for Symbols
2018-03-22 22:06:04 +01:00
Markus Wick a4511129e7
Merge pull request #6491 from lioncash/sub-oe
Interpreter_Integer: Handle OE bit for subf, subfc, subfe, subfme, and subfze
2018-03-22 21:52:17 +01:00
aldelaro5 c54e56793a
Add a log type for Symbols and move symbols related logs to it
This fix the awkwardness of having the symbols detection, parsing and loading related logs be in OS HLE while they don't have anything to do with that.
2018-03-22 14:57:28 -04:00
Lioncash 796d67e1ec Interpreter_Integer: Handle OE bit for subf, subfc, subfe, subfme, and subfze
With this, overflow flag support is now fully implemented for all
instructions that support it.
2018-03-22 13:08:03 -04:00
Anthony 0f60e68e0b
Merge pull request #6490 from spycrab/qt_fs_warn
Qt: Fix fullscreen quitting
2018-03-22 08:43:52 -07:00
spycrab cc3d5a9921 Qt: Fix fullscreen quitting 2018-03-22 15:29:08 +01:00
Markus Wick 59c5bc964f
Merge pull request #6486 from lioncash/add-oe
Interpreter_Integer: Handle overflow flag when OE bit is set in add, addc, adde, addme, and addze
2018-03-22 14:15:58 +01:00
Lioncash 9d21425449 Interpreter_Integer: Handle overflow flag when OE bit is set in add, addc, adde, addme, and addze 2018-03-22 09:09:31 -04:00
Léo Lam 2e92d95888
Merge pull request #6487 from sepalani/dsp-doc
DSP: Fix typos in DSP LoadStore doc
2018-03-22 07:51:29 +01:00
Sepalani 4ed06da2b4 DSP: Fix typos in DSP LoadStore doc 2018-03-22 09:24:58 +04:00
Lioncash e53fffeb90 PowerPC: Properly unset the overflow bit
The OV bit is non-sticky. Therefore, after an overflow-enabled
instruction executes, if an overflow does *not* occur, then OV is
cleared. SO is sticky however, so it staying set in this case is
correct.
2018-03-21 23:59:15 -04:00
Anthony 23bc50704a
Merge pull request #6484 from lioncash/mul
Interpreter_Integer: Handle the overflow flag when the OE bit is set for mullw
2018-03-21 18:18:00 -07:00
Lioncash 355509653e Interpreter_Integer: Handle the overflow flag when the OE bit is set for mullw 2018-03-21 20:28:37 -04:00
Michael M 1ba43e6c27 DSPSymbols: remove unused ReadAnnotatedAssembly
It's unused, and it used a weird format, something like:

```
void label_name() {
   asm $REG1, $REG2
   // etc
}
```
2018-03-21 17:07:27 -07:00
Michael M ed56f319b5 DSPHost: don't try to read old annotated assembly files
They don't exist anymore!
2018-03-21 17:06:30 -07:00
Anthony 30ccaa3fd5
Merge pull request #6481 from spycrab/qt_fix_fs
Qt: Fix fullscreen
2018-03-21 16:44:54 -07:00
Léo Lam 1b0f6a7d2e
Merge pull request #6482 from spycrab/qt_borders
Qt/MainWindow: Remove obnoxious border
2018-03-21 23:24:46 +01:00
Léo Lam 1b28693eb0
Merge pull request #4484 from Helios747/remove_text
[UI] Remove experimental tag from Vulkan
2018-03-21 23:18:03 +01:00
Helios747 b02b616930 [UI] Remove experimental tag from Vulkan 2018-03-21 15:12:12 -07:00
spycrab 8ead5be9f2 Qt: Fix fullscreen 2018-03-21 22:57:16 +01:00
spycrab 809dd665c7 Qt/MainWindow: Remove obnoxious border 2018-03-21 22:48:17 +01:00
Anthony 9cf22aec04
Merge pull request #6480 from spycrab/qt_search
Qt: Implement search
2018-03-21 12:40:34 -07:00
spycrab 3292abb41d Qt: Implement search 2018-03-21 20:04:13 +01:00
Léo Lam 8580b3ba1f Qt: Add ignore button for panic alerts
Allows easily disabling panic alerts during a session if needed.
2018-03-21 11:22:30 +01:00
Markus Wick 8308d6b464
Merge pull request #6476 from lioncash/dispatch
JitAsm: Eliminate use of the JIT global variable
2018-03-21 09:55:04 +01:00
Lioncash 7a2d98b948 JitAsm: Remove use of the JIT global in Generate()
With this, JitAsm code doesn't have any reliance on the JIT global
variable. This means the core JIT64 code no longer relies on said
global at all. The Jit64 common code, however, still has some offenders.

Notably, EmuCodeBlock and Jit64AsmCommon are the remaining places in the
common code that make use of the global variable.
2018-03-21 04:41:37 -04:00
Lioncash e0165a62da JitBase: Remove use of the JIT global in Dispatch() and JitTrampoline()
Trims down a few more uses of the global variable by just passing the
JIT instance we're dispatching or trampolining with as a parameter.
2018-03-21 04:41:30 -04:00
Pierre Bourdon fe600ab0ed
Merge pull request #6146 from HannesMann/qos-support
Netplay: Add Quality of Service (QoS) support
2018-03-21 02:46:46 +01:00
Pierre Bourdon 6860259c44
Merge pull request #6457 from spycrab/qt_misc
Qt: Improve spacing again
2018-03-21 01:10:01 +01:00
Pierre Bourdon 6079d7d3c6
Merge pull request #6475 from Starsam80/fix-always-true
Qt: Remove always true if statement
2018-03-21 01:07:54 +01:00
Anthony ad8c31699f
Merge pull request #6463 from delroth/auto-update
Initial implementation of the Dolphin auto-updater for Windows
2018-03-20 11:28:26 -07:00
Pierre Bourdon 66b41c5509 UICommon: Add AutoUpdate module + placeholder Qt implementation
The AutoUpdate module is a generic update checker mechanism which can be
used by UI backends to trigger an auto-update check as well as the
actual update process.

Currently only configurable through .ini and the Qt implementation is
completely placeholder-y -- blocking the main thread on a network
request on startup, etc.
2018-03-20 19:21:19 +01:00
Pierre Bourdon 37902c4aa4 DolphinWX: depend on Updater in order to make sure the binary is included in default builds 2018-03-20 19:21:19 +01:00
Pierre Bourdon 07c160310e Add Updater.exe which performs the update tasks.
Updater.exe takes as input manifests and applies the difference between
these manifests to an install directory.

Currently lacking a UI.
2018-03-20 19:21:19 +01:00
Markus Wick 43c92c8b16
Merge pull request #6451 from leoetlino/default-mmu
Config: Set bMMU to true by default on x64
2018-03-20 14:40:40 +01:00
Markus Wick 35bfa64dfc
Merge pull request #6470 from lioncash/ov-flag
Interpreter: Handle setting the overflow flag when the OE bit is set in divw, divwu, and neg
2018-03-20 11:08:12 +01:00
Starsam80 b7c44715a8
Qt: Remove always true if statement 2018-03-20 00:41:47 -06:00
Pierre Bourdon bc9deb7be3 HttpRequest: make curl initialization thread-safe 2018-03-20 00:36:43 +01:00
spycrab 44ce78c969 Qt: Remove in-development warning 2018-03-19 21:59:50 +01:00
Anthony 50588034ba
Merge pull request #6472 from lioncash/jit-init
JitBase: Ensure JitOptions and JitState instances are consistently initialized
2018-03-19 13:20:40 -07:00
Lioncash 51cfeb8c7d JitBase: Ensure JitOptions and JitState instances are consistently initialized
Ensures that upon construction of a JitBase instance, that all
underlying members within the option and state structs are guaranteed
to be initialized.

This prevents potentially using a member uninitialized in some form.
2018-03-19 15:58:32 -04:00
Anthony 37f8efcda0
Merge pull request #6471 from JosJuice/qt-strings-consistent
Make strings more consistent between DolphinWX and DolphinQt2
2018-03-19 11:00:24 -07:00
JosJuice a71c615435 Make strings more consistent between DolphinWX and DolphinQt2
Reduces the number of strings to translate.
2018-03-19 18:52:46 +01:00
Léo Lam 16f74cee70
Merge pull request #6467 from lioncash/breakpoint
Breakpoints: Remove direct usages of the JIT global
2018-03-19 18:42:10 +01:00
Lioncash 2fa0cb91a1 Interpreter_Integer: Set the overflow flag if the OE bit is set for neg
Also amends the condition that was being checked. Previously it was
checking if the destination register value was 0x80000000, however it's
actually the source register that should be checked.
2018-03-19 13:27:36 -04:00
Lioncash 675d2fb774 Interpreter_Integer: Set the overflow flag if the OE bit is set for divw and divwu
divw and divwu won't panic now if the OE bit is set for these instructions.
2018-03-19 11:51:10 -04:00
Lioncash f129c936e7 PowerPC: Add functions for getting and setting the XER OV bit
While we're at it, change GetXER_SO's return value to u32
to prevent potential sign bit wonkyness given we're performing bit arithmetic.
2018-03-19 11:51:04 -04:00
Léo Lam f335790623
Merge pull request #6460 from lioncash/datareader
DataReader: Minor API changes
2018-03-19 15:02:50 +01:00
Markus Wick 8c1be29cef
Merge pull request #6466 from lioncash/mffs
Interpreter_SystemRegisters: Handle mffs, mtfsb0, mtfsb1, mtfsf and mtfsfi with the record bit set
2018-03-19 09:37:01 +01:00
Markus Wick 523031f037
Merge pull request #6444 from stenzek/d3d-bbox
D3D: Fix broken bounding box
2018-03-19 09:21:22 +01:00
Markus Wick 98b4716902
Merge pull request #6442 from stenzek/async-compiler-priority
ShaderCache: Implement compile priority
2018-03-19 09:16:53 +01:00
Markus Wick 0c0a342483
Merge pull request #6464 from lioncash/using
JitArm64_RegCache: Remove using namespace declaration from header
2018-03-19 09:11:45 +01:00
Lioncash 3a4c3bbe01 Core/CMakeLists: Migrate off add_dolphin_library
This macro (that has unfortunately become the de-facto way of
introducing targets) has a lot of disadvantages that outweigh the fact
that you avoid writing two extra lines of CMake script.

- It encourages the use of variables. In a build system the last thing
we want to care about is mutable state that can be avoided.

- It only handles linking in the libraries and nothing else. It's a
laziness macro.

- We should be explicit about what we're doing by introducing the target
first, not last.

This gets the ball rolling by migrating Core off the macro. Note that
this is essentially 1-to-1 unrolling of the macro, therefore we're
still linking in all libraries as public, even though that may not be
necessary.

This can be revisited once everything is off the macro for a quicker
transition period.
2018-03-19 04:02:12 -04:00
Markus Wick 22aba8c56d
Merge pull request #6468 from lioncash/downcast
JitInterface: Remove a downcast within InitJitCore
2018-03-19 09:00:56 +01:00
Markus Wick 3d49bdb488
Merge pull request #6462 from lioncash/ppc
PPCTables: Make the op type enum an enum class
2018-03-19 08:55:32 +01:00
Markus Wick 8002bfbc41
Merge pull request #6461 from lioncash/emitter
x64Emitter: Move FloatOp and NormalOp enum definitions into the cpp file
2018-03-19 08:53:00 +01:00
Markus Wick 79b21e1381
Merge pull request #6459 from lioncash/enum
VertexShaderGen: Convert defines to an enum
2018-03-19 08:48:25 +01:00
Markus Wick 768cd7ede5
Merge pull request #6458 from lioncash/remove-mainbase
VideoBackendBase: Migrate functions from MainBase.cpp to VideoBackendBase.cpp
2018-03-19 08:46:35 +01:00
Lioncash 14b204a9bb JitInterface: Remove a downcast within InitJitCore
This isn't necessary as JitBase is already within the type hierarchy that
CPUCoreBase is.
2018-03-19 03:13:16 -04:00
Lioncash a0164e14bc BreakPoints: Avoid direct use of the JIT global
Trims the direct usages of the global by making the code go through the
JIT interface (where it should have been going in the first place).

This also removes direct JIT header dependencies from the breakpoints as
well. Now, no code uses the JIT global other than JIT code itself, and
the unit tests.
2018-03-19 03:08:57 -04:00
Lioncash b4cd11c7c9 BreakPoints: Invert if statements where reasonable
Puts the early-exit condition first, unindenting code that doesn't need
to be.
2018-03-19 03:08:53 -04:00
Lioncash 3137d4f75f BreakPoints: Use std algorithms where applicable 2018-03-19 03:08:17 -04:00
Lioncash eea99de118 Interpreter_SystemRegisters: Handle mffs, mtfsb0, mtfsb1, mtfsf, and mtfsfi with the record bit set
All of these with the record bit set update condition register 1 with the
contents of the FPSCR's FX, FEX, VX and OX bits.

Helper_UpdateCR1() does exactly that, so we use it here to perform this
for us.
2018-03-19 00:05:00 -04:00
Lioncash 6ae8a2b5f8 JitArm64_RegCache: Remove using namespace declaration from header
Dumping a namespace in a header file should be avoided since it can
cause random name and type clashing in unexpected ways.
2018-03-18 19:39:58 -04:00
Pierre Bourdon 5498f9b7ef make_scmrev.h.js: set default auto-update track from environment 2018-03-19 00:11:55 +01:00
Pierre Bourdon 0427d3474c Import ed25519 implementation from https://github.com/orlp/ed25519 2018-03-19 00:11:55 +01:00
Pierre Bourdon 891a1eeb6a Import picojson to Externals from https://github.com/kazuho/picojson 2018-03-19 00:11:55 +01:00
Lioncash 6428cee939 PPCTables: Make the op type enum an enum class
Reduces the amount of identifiers dropped into the global namespace when
the PPCTables header is included.
2018-03-18 18:53:58 -04:00
Lioncash 975ba4abf0 x64Emitter: Make FloatOp and NormalOp enum classes
Reduces the amount of identifiers placed in the Gen namespace internally.
2018-03-18 18:04:54 -04:00
Lioncash c22a6f4551 x64Emitter: Move FloatOp and NormalOp enums to the cpp file
These are only used internally. This also allows us to eliminate some
symbols that get dumped into the exposed Gen namespace.

By extension this also hides the Write[X] functions from OpArg's public
interface. This is only used internally by XEmitter, so they shouldn't
be usable by anything else.
2018-03-18 18:04:48 -04:00
Lioncash b21a00d290 DataReader: Provide a const qualified variant of GetPointer()
This wouldn't be much of a data reader if it can't access the
read-only data pointer in read-only contexts. Especially if it
can get a writable equivalent in contexts that aren't read-only.
2018-03-18 16:53:04 -04:00