Commit Graph

19967 Commits

Author SHA1 Message Date
JosJuice a7e11db4bf DolphinWX: Remove usage of IsCompressed() in compression code
What we actually care about is whether it's a GCZ file,
not whether it's compressed. (This commit doesn't change
the behavior, since the beginning of CompressSelection
discards items that aren't BlobType::GCZ or BlobType::PLAIN.)
2017-02-20 16:08:07 +01:00
JosJuice b1589a6337 DolphinWX: Don't use a special color for compressed games
- There's no clear definition of what it means for a GC/Wii game
  to be compressed. GC games in GCZ are obviously compressed,
  but what about formats like WBFS and CISO that just discard data?
- Hardcoded colors might have bad contrast with the used theme.
- It feels Windows XP to me.
2017-02-20 16:02:30 +01:00
Steven Newbury 02681bc352 Add missing "functional" include
Building fails on GCC7 without an explicit
2017-02-20 14:25:55 +00:00
Pierre Bourdon f07a6944d1 Merge pull request #4934 from leoetlino/es-cfd
IOS/ES: Fix the initial content FD value
2017-02-20 12:40:00 +01:00
Léo Lam 696e493acc IOS/ES: Fix the initial content FD value
YYCJ is one of the last titles to be completely broken in Dolphin.
It would hang right after the Wii remote screen. Looking at the
game's debug messages reveals that it was failing to find some of
its files.

IOS LLE booted the game just fine, which confirmed that it was an issue
with IOS HLE.

By comparing the ioctlv requests and responses with IOS, it turns out
that one of the very first ES replies was different between IOS HLE and
IOS: there was a mismatch for the content fd returned by ES.

Changing the initial content FD to what IOS returns fixes the issue.

IOS
000000: 00 00 00 08 00 00 00 00 00 00 00 07 00 00 00 09  ................
000010: 00 00 00 01 00 00 00 00 01 38 66 f0 00 00 00 20  .........8f....
000020: 00 00 00 00 00 00 00 00 00 00 00 00 81 36 d3 18  .............6..
000030: 81 36 d3 18 00 00 ff ff ff ff ff ff ff ff ff ff  .6..............

Dolphin
000000: 00 00 00 08 06 00 00 00 00 00 00 07 00 00 00 09  ................
000010: 00 00 00 01 00 00 00 00 01 38 66 f0 00 00 00 20  .........8f....
000020: 00 00 00 00 00 00 00 00 00 00 00 00 81 36 d3 18  .............6..
000030: 81 36 d3 18 00 00 ff ff ff ff ff ff ff ff ff ff  .6..............

So where did 0x6000000 come from?
2017-02-19 15:46:51 +01:00
Jules Blok 21967b1f6e VideoBackends: Add a developer option to disable the shader cache.
Makes it easier to disable the cache while working on the shaders.
2017-02-19 12:05:44 +01:00
JosJuice 298e81881f Forward declare IBlobReader in Volume headers
We have to do this (or include Blob.h) since the
constructors take unique_ptr<IBlobReader> parameters.
2017-02-19 08:40:30 +01:00
JosJuice f5c82adc59 Change INI keys containing "Wii Remote" back to "Wiimote"
4bd5674 changed "Wiimote" to "Wii Remote" in the GUI
(intentionally) but also did the same change for two INI
keys (seemingly unintentional, breaks backwards compatibility,
and is inconsistent with the INI's filename). This commit
reverts the INI keys but not the GUI strings.

This commit uses the same approach as cbd539e used for GameCube
sticks (but I made sure to avoid the bug that 56531a0 fixed).
2017-02-18 12:59:36 +01:00
Stenzek b8eb1080ce Merge pull request #4924 from stenzek/vulkan-list-restart
Vulkan: Fix GPU hangs on AMD Polaris
2017-02-18 21:58:30 +10:00
Markus Wick 6acad27919 Merge pull request #4927 from lioncash/unique-ptr
VertexManagerBase: Make CreateNativeVertexFormat return a unique_ptr
2017-02-18 12:40:00 +01:00
Lioncash 2f2aab963d SymbolDB: Simplify GetSymbolsFromHash
Given a std::map can't have duplicate keys, iterating over the map
explicitly isn't necessary, and find() can just be used instead.

Also, instead of manually calling push_back() for every entry to
be added, the range constructor of std::vector can be used instead to add
the whole range all at once.
2017-02-18 06:30:20 -05:00
Lioncash aaa6430db6 PPCAnalyst: Make SetInstructionStats' opinfo parameter a const pointer
trivial const-correctness stuff
2017-02-18 04:14:26 -05:00
Lioncash 1fa81f24d3 VertexManagerBase: Make CreateNativeVertexFormat return a unique_ptr
Much safer as opposed to just returning raw allocated memory.
2017-02-18 03:16:24 -05:00
Matthew Parlane 5814d23fd9 Merge pull request #4926 from lioncash/net
IOS Network: Split ncd/manage code and wd/command code into their own source files
2017-02-18 21:13:24 +13:00
Matthew Parlane 4da7164f66 Merge pull request #4596 from ligfx/updateffmpeg
AVIDump: Updates to avoid deprecation warnings
2017-02-18 21:12:37 +13:00
Lioncash a8eb2e2a8f IOS Network: Split wd/command code into its own source files 2017-02-18 02:35:53 -05:00
Stenzek e2ddb3853e DriverDetails: Set BUG_PRIMITIVE_RESTART for AMD drivers 2017-02-18 15:07:35 +10:00
Stenzek 50fa135594 Vulkan: Handle BUG_PRIMITIVE_RESTART 2017-02-18 15:07:34 +10:00
Stenzek 4094268009 Vulkan: Use TRIANGLE_LIST when primitive restart is not supported 2017-02-18 15:07:33 +10:00
Stenzek 6965dc0481 Vulkan: Don't enable primitive restart on list topologies 2017-02-18 15:07:32 +10:00
Lioncash ec298d9ea9 IOS Network: Split ncd/manage code into its own source files 2017-02-17 23:55:33 -05:00
Chris Burgener 8bfe2671b2 Remove IsReadOnly check when stop recording 2017-02-17 23:23:42 -05:00
Mat M 82734fffaa Merge pull request #4910 from lioncash/netsplit
IOS Network: Move net/ip/top code into its own source files
2017-02-17 22:42:28 -05:00
degasus 674e7430d0 JitArm64: Extract block exit link area generation.
Always use 3 instructions on linking.
2017-02-17 23:07:28 +01:00
Sepalani 5f7002da5c HLE: More printf floating point types handled 2017-02-17 10:51:10 +00:00
Léo Lam aa9ed91bc8 IOS: Add constants for IOS40
This adds memory constants for IOS40.

We should now support every system menu, courtesy of Bent82:
https://github.com/dolphin-emu/dolphin/pull/4907#issuecomment-280433023
2017-02-16 20:50:02 +01:00
Ryan Houdek c2d5fe3ec9 Move DolphinWX over to command command line parsing. 2017-02-16 17:24:59 +01:00
Ryan Houdek 36a9479c17 Change NoGUI over to using common command line parsing 2017-02-16 17:24:58 +01:00
Ryan Houdek f61363a791 Add command line parsing to UICommon. 2017-02-16 17:24:58 +01:00
Ryan Houdek 77c7fa836f Add the cpp-optparse project to Externals.
From https://github.com/weisslj/cpp-argparse
2017-02-16 14:09:13 +01:00
Ryan Houdek 85c3e677da Expose some ways to manage an INI file.
This is required for our later INI file loaders and savers
2017-02-16 09:34:25 +01:00
Ryan Houdek a2f5c3dbe0 Add some missing INI files to FileUtil 2017-02-16 09:33:50 +01:00
Phil Christensen 34b0b1b9d6 wxWidgets expects non-const
revert my previous change to these files and instead create a named temporary.
2017-02-15 21:20:29 -08:00
Phil Christensen 2ed61b0ee1 C++ conformance fixes (MSVC /permissive-)
We (the Microsoft C++ team) use the dolphin project as part of our "Real world code" tests.
I noticed a few issues in windows specific code when building dolphin with the MSVC compiler
in its conformance mode (/permissive-).  For more information on /permissive- see our blog
https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/.

These changes are to address 3 different types of issues:

1) Use of qualified names in member declarations

    struct A {
        void A::f() { } // error C4596: illegal qualified name in member declaration
                        // remove redundant 'A::' to fix
    };

2) Binding a non-const reference to a temporary

    struct S{};
  
    // If arg is in 'in' parameter, then it should be made const.
    void func(S& arg){}
  
    int main() {
      //error C2664: 'void func(S &)': cannot convert argument 1 from 'S' to 'S &'
      //note: A non-const reference may only be bound to an lvalue
      func( S() );
   
      //Work around this by creating a local, and using it to call the function
      S s;
      func( s );
    }

3) Add missing #include <intrin.h>

Because of the workaround you are using in the code you will need to include
this.  This is because of changes in the libraries and not /permissive-
2017-02-15 20:37:04 -08:00
Michael Maltese 88f7056a41 Remove include Xlib.h from X11Utils.h 2017-02-15 16:49:21 -08:00
JosJuice f80f7b6f9c Merge pull request #4883 from JosJuice/dvd-timing-address-translation-2
DVDInterface: Translate Wii partition offsets for timing purposes
2017-02-15 21:12:42 +01:00
JosJuice 339f6e353d Merge pull request #4907 from leoetlino/ios-constants
IOS: Add constants for some missing IOSes
2017-02-15 21:09:42 +01:00
Lioncash 92e17d2eb8 IOS: Move net/ip/top code to its own source files 2017-02-15 14:42:43 -05:00
Lioncash 245de3fa4f IOS: Move network MAC utilities to their own source files
All three implementations within Net.cpp currently rely on these
functions.
2017-02-15 13:38:52 -05:00
Lioncash 0da963c32c NetKDRequest: Make lookup maps const 2017-02-15 11:50:37 -05:00
Mat M 6f272b3a4c Merge pull request #4862 from lioncash/compile
CPU Backends: Make instruction table initialization private
2017-02-15 11:44:37 -05:00
Mat M 8fd16db80d Merge pull request #4778 from leoetlino/update-mbedtls
Externals: Update mbedtls to 2.4.1
2017-02-15 11:30:18 -05:00
Mat M 5a53763c1a Merge pull request #4892 from lioncash/control
Control: Convert raw pointer parameter into unique_ptr
2017-02-15 11:26:53 -05:00
Mat M 3d1f00e98d Merge pull request #4874 from ligfx/movie_magic_number
Movie: replace magic number 8 with sizeof(ControllerState)
2017-02-15 11:25:26 -05:00
Mat M 28a6575244 Merge pull request #4900 from lioncash/netkd
IOS: Separate net/kd code out from Net.cpp
2017-02-15 11:21:01 -05:00
Mat M 30ee4dfcdf Merge pull request #4908 from leoetlino/apostrophe
Remove C++14 optional digit separator
2017-02-14 11:06:08 -05:00
Markus Wick 032b6252a0 Merge pull request #4875 from degasus/ABI
JitArm64: Optimize GPR register push/pop and fix the FPR one.
2017-02-14 17:02:17 +01:00
Léo Lam 089f45212e IOS: Add constants for some missing IOSes
This adds memory values for IOS11, 20, 30, 50, 51, 52, 60 and 70.

Unfortunately, IOS40 (in its working version) is not present on NUS, so
constants for that one are still missing.
2017-02-14 12:18:58 +01:00
Anthony f966354044 Merge pull request #4898 from RisingFog/stop_recording_dtm
Add Stop Play/Recording Input Menu
2017-02-13 14:10:23 -08:00
Mat M f68955502a Merge pull request #4905 from JosJuice/rename-copy-wii-save
Rename "Copy Wii Save" to "Load Wii Save"
2017-02-13 09:55:54 -05:00
Léo Lam 1aae7fb9c8 Remove C++14 optional digit separator
It confuses GitHub and localization tools. And some people as well.
2017-02-13 14:25:14 +01:00
Matthew Parlane d1ade5de22 Merge pull request #4904 from JosJuice/oh0-usb-state-warning
Don't show savestate USB warning when not using USB passthrough
2017-02-13 14:36:26 +13:00
JosJuice fc798ca410 Rename "Copy Wii Save" to "Load Wii Save"
That netplay uses a separate NAND isn't obvious,
so what "copy" means might not be clear.
2017-02-12 18:40:54 +01:00
JosJuice 8a6b8f7b53 Don't show savestate USB warning when not using USB passthrough 2017-02-12 18:16:26 +01:00
Pierre Bourdon 047394c099 Merge pull request #4903 from leoetlino/usb-kbd-stub
IOS/USB_KBD: Re-add the Write stub handler
2017-02-12 16:33:02 +01:00
Léo Lam 5add8c23ee IOS/USB_KBD: Re-add the Write stub handler
This is something I removed by mistake. It didn't break anything in
most titles, but the Mii Channel *requires* write requests to
/dev/usb/kbd to succeed before exiting, so this commit readds the stub.
2017-02-12 16:00:50 +01:00
Mat M da5683cf27 Merge pull request #4880 from ligfx/windowsmanifest
Use .manifest file for apps on Windows
2017-02-12 08:44:38 -05:00
JosJuice 5e799fd469 Merge pull request #4902 from lioncash/unused
Boot: Remove unused game ID string
2017-02-12 14:20:05 +01:00
Lioncash 921ab22cb7 Boot: Remove unused game ID string 2017-02-12 07:55:49 -05:00
Léo Lam b8dd3e690f Externals: Update mbedtls to 2.4.1
The latest version has tons of security fixes (which is expected for a
library such as mbedtls).

Updating also allows getting rid of a few deprecation warnings.
2017-02-12 10:29:02 +01:00
JosJuice 49ec22bc42 DVDInterface: Translate Wii partition offsets for timing purposes
Until now, Dolphin has been using the wrong values
for calculating DVD timing for decrypted Wii reads
(which Wii games essentially always use).
2017-02-12 09:37:39 +01:00
Lioncash 40cea773bc IOS: Separate net/kd code out from Net.cpp
Net.cpp is just a huge glob of network related things, this separates the
KD portion out to make things a little more manageable.
2017-02-11 23:09:08 -05:00
Lioncash 1a99e70ed7 Force: Use std::array for m_swing 2017-02-11 20:22:50 -05:00
Lioncash df3a4580ea Tilt: Use std::array for m_tilt 2017-02-11 20:22:42 -05:00
Mat M 0e961776e6 Merge pull request #4879 from orbea/llvm
CMake: Fix LLVM error
2017-02-11 20:07:34 -05:00
Mat M 3e016ecc1d Merge pull request #4888 from leoetlino/good-bye-singleton
Get rid of a singleton for NAND shared contents
2017-02-11 20:02:52 -05:00
Mat M 9cdb07b2ef Merge pull request #4886 from leoetlino/no-prefix
FileIO: Minor cleanup
2017-02-11 20:00:58 -05:00
Mat M 295600c86e Merge pull request #4884 from leoetlino/wii-connect-on-boot
Fix connecting Wii remotes on boot
2017-02-11 19:59:50 -05:00
Chris Burgener 28c9f2a44d Add Stop Play/Recording Input Menu 2017-02-11 19:59:19 -05:00
Mat M daed1189d9 Merge pull request #4891 from ligfx/cmakewarnings
CMake: use _SCL_SECURE_NO_WARNINGS instead of _SECURE_SCL=0
2017-02-11 19:55:37 -05:00
Anthony bb82586a3d Merge pull request #4897 from JosJuice/correct-es-comment
Correct the comment about the number of ES devices
2017-02-11 10:27:35 -08:00
JosJuice aaa8ad330a Correct the comment about the number of ES devices 2017-02-11 17:13:42 +01:00
JosJuice c96bcace2f VolumeWiiCrypted: Use constant naming style for constants 2017-02-11 12:56:48 +01:00
JosJuice d19aabb55b Merge pull request #4895 from lioncash/const
ControllerEmu: Add const to UpdateReferences() first reference parameter
2017-02-11 09:27:37 +01:00
JosJuice e568d57022 Merge pull request #4894 from lioncash/private
Cursor: Make m_z private
2017-02-11 09:26:30 +01:00
Léo Lam 81b1425b52 Remove useless Wiimote reconnect code on ES_Launch
Turns out it is completely unneeded and it actually works better
*without* it.

Just try launching the system menu from the HBC; in current master, it
will disconnect the remote and not connect it automatically again. With
this change, it will.
2017-02-11 09:02:32 +01:00
Léo Lam c14becd575 Fix connecting Wii remotes on boot
The recent IOS initialization changes caused the Bluetooth device to
no longer exist before "starting" IOS (as it should be…), which meant
that Core could not activate Wii remotes during the boot process
anymore.

But that is actually completely useless, because we can just have the
emulated Bluetooth code itself activate Wii remotes as appropriate,
at the right moment.
2017-02-11 08:58:47 +01:00
Lioncash 98145d2160 ControllerEmu: Add const to UpdateReferences() first reference parameter
None of these parameters are modified.
2017-02-11 00:31:49 -05:00
Lioncash e4bdc88494 Cursor: Make m_z private
This isn't used directly anywhere (and really shouldn't be public
anyways).
2017-02-10 23:57:50 -05:00
orbea 6913e8c3ac Fix LLVM error 2017-02-10 19:07:30 -08:00
Lioncash fda235b6e3 Buttons: Use a delegating constructor
Basic code deduplication
2017-02-10 19:52:15 -05:00
Lioncash d07d9f3110 Control: Convert raw pointer parameter into unique_ptr
Raw pointers shouldn't be used as boundaries in scenarios where ownership
is being taken.
2017-02-10 19:35:02 -05:00
Michael Maltese df0a0c857d CMake: use _SCL_SECURE_NO_WARNINGS instead of _SECURE_SCL=0
_SECURE_SCL is deprecated (and doesn't seem to disable warnings anymore
with Visual Studio 2015).
2017-02-10 16:28:39 -08:00
Michael Maltese 2b65e41d97 NetWindow: explicitly tell wxWidgets to clean up Windows macros
wxWidgets headers don't play well with some of the macros defined in
Windows headers and perform their own magic to fix things, as long as
they're included entirely either before or after any Windows headers.

This file can cause a conflict in other DolphinWX files because NetPlay
headers directly include ENet headers, which leak Windows header macros.
To fix this, explicitly tell wxWidgets here that it needs to re-clean
macros.
2017-02-10 16:14:25 -08:00
degasus 8829af62cb JitArm64: Fix for stack push/pop ABI. 2017-02-11 00:59:12 +01:00
degasus 6aa54a029e JitArm64: Optimize GPR register push/pop. 2017-02-11 00:59:12 +01:00
Michael Maltese 715170759c Use .manifest file for apps on Windows
Works with CMake, and also adds DPI awareness to DolphinQt2 (which
wasn't enabled before).
2017-02-10 14:18:45 -08:00
Léo Lam 850802ea88 Get rid of a singleton for NAND shared contents
This also allows shared contents to be installed to the configured root
when installing a WAD.
2017-02-10 22:46:38 +01:00
Léo Lam f96d71ce81 FileIO: Simplify Seek()
We can return early from invalid conditions, which allows getting rid
of quite a few levels of indentation.

And let's not duplicate the new_position > file_size check.
2017-02-10 21:06:23 +01:00
Léo Lam ca4d2969a0 Remove the HLE_IPC prefix from some functions
Those were left over during the namespacing.
2017-02-10 20:58:41 +01:00
Lioncash 68dcb0f195 ControlReference: Add missing virtual destructor
ControllerEmu::Control instances have a unique_ptr<ControlReference>
member, which is passed either an InputReference or OutputReference.

Without this virtual destructor, deleting a derived class through a
pointer to the base class is undefined behavior.
2017-02-10 13:58:44 -05:00
Mat M f6d364e37b Merge pull request #4873 from lioncash/controller-emu
ControllerEmu: Separate ControlGroup from ControllerEmu
2017-02-10 13:50:33 -05:00
Anthony 8f81051df3 Merge pull request #4882 from leoetlino/elf-fix
Fix booting Wii DOLs
2017-02-10 10:21:08 -08:00
Léo Lam 328359118c Fix booting Wii DOLs
We did not set up any kind of constants in memory for Wii DOLs or even
initialize IOS, so a lot of homebrew would just crash when opening ES.
2017-02-10 19:14:34 +01:00
Léo Lam 7a1f676ef4 Always use configured root when installing WAD
This prevents Dolphin from writing to /sys/uid.sys (on the host; root
partition) when installing a WAD before starting emulation, because
the session root is not initialized at that moment.

Incidentally, this also gets rid of a singleton.
2017-02-10 19:12:08 +01:00
Lioncash 1ce1304d0f CPU Backends: Make each CPU backend responsible for initializing its own
instruction tables

Previously, all of the internals that handled how the instruction tables
are initialized were exposed externally. However, this can all be made
private to each CPU backend.

If each backend has an Init() function, then this is where the instruction
tables should be initialized, it shouldn't be the responsibility of
external code to ensure internal validity.

This allows for getting rid of all the table initialization shenanigans
within JitInterface and PPCTables.
2017-02-10 13:08:14 -05:00
Lioncash 5da7d700ca JIT: Make compilation functions a part of the JIT classes 2017-02-10 13:05:44 -05:00
Anthony 96e83b5d54 Merge pull request #4764 from aldelaro5/crash-fix-inputconfig
InputConfigDialog pass the device_cbox to the wiimote extension dialogs
2017-02-09 21:50:44 -08:00
degasus 4d3883a756 JitArm64: Handle stack faults. 2017-02-10 00:32:21 +01:00
degasus 40b7cc9252 JitArm64: Use a custom stack with proper guard pages. 2017-02-10 00:32:17 +01:00
Lioncash 6a75ea5653 ControllerEmu: Separate ControlGroup from ControllerEmu
ControllerEmu, the class, is essentially acting like a namespace for
ControlGroup. This makes it impossible to forward declare any of the
internals. It also globs a bunch of classes together which is kind of a
pain to manage.

This splits ControlGroup and the classes it contains into their own source
files and situates them all within a namespace, which gets them out of
global scope.

Since this allows forward declarations for the once-internal classes, it
now requires significantly less files to be rebuilt if anything is changed
in the ControllerEmu portion of code.

It does not split out the settings classes yet, however, as it
would be preferable to make a settings base class that all settings derive
from, but this would be a functional change -- this commit only intends to
move around existing code. Extracting the settings class will be done in
another commit.
2017-02-09 18:18:52 -05:00
Michael Maltese 31e3424367 Movie: replace magic number 8 with sizeof(ControllerState)
(Bonus points for rhyming commit message)
2017-02-09 15:07:47 -08:00
JosJuice 657639899f Merge pull request #4872 from lioncash/scan
GameListCtrl: Separate some scanning code into functions
2017-02-09 20:56:29 +01:00
Lioncash ea6e75d45f GameListCtrl: Separate some scanning code into functions
Several of the things done while performing a scan are logically their own
behavior (e.g. loading a titles file, checking if an entry should be added, etc).
2017-02-09 14:50:20 -05:00
Lioncash 56531a0b7f ControllerEmu: Fix incorrect default radius being set in AnalogStick
The three parameter AnalogStick constructor takes an internal name, a
display name, and a default radius argument. The delegated constructor is
the one that calls the ControlGroup constructor, setting the group type,
so passing the group type here is a logic bug.

The only reason this appeared to work despite this bug is because
GROUP_TYPE_STICK has a value of 1, and the default radius value used for
attachment sticks is 1.0.
2017-02-08 23:08:13 -05:00
Mat M 73382852b7 Merge pull request #4502 from ligfx/extractcontrolreference
InputCommon: Extract ControlReference from ControllerInterface
2017-02-08 20:01:18 -05:00
Pierre Bourdon 17e4b450fb Merge pull request #4784 from leoetlino/mios
IOS: Implement MIOS functionality
2017-02-09 01:57:16 +01:00
JosJuice 01073946b4 Fix default audio backend on Android being "No audio output"
People who already have encountered the problem will need to
manually change the audio backend (or delete the config INI).
2017-02-08 21:29:27 +01:00
Lioncash 90273191da Boot: Add missing includes 2017-02-08 10:57:24 -05:00
Lioncash 3b41d4806c Boot_BS2Emu: Get rid of unnecessary headers 2017-02-08 10:57:16 -05:00
Lioncash 57d543b10a ElfReader: Get rid of unnecessary includes 2017-02-08 10:57:10 -05:00
Lioncash 95a918b9f8 Boot_WiiWAD: Get rid of unnecessary includes 2017-02-08 10:43:50 -05:00
Léo Lam a085cd431d Adjust event times after a PPC clock change
This likely doesn't change much, but it makes events trigger at the
correct time after a clock change.
2017-02-08 16:22:27 +01:00
Lioncash e6ffce3ac9 ElfReader: Make constructor explicit
Allowing implicit conversions here is definitely not desirable.
2017-02-08 10:20:06 -05:00
Léo Lam fdfe57a49b IOS: Implement MIOS functionality
This implements MIOS's PPC bootstrapping functionality, which enables
users to start a GameCube game from the Wii System Menu.

Because we aren't doing Starlet LLE (and don't have a boot1), we can
just jump to MIOS when the emulated software does an ES_LAUNCH or uses
ioctlv 0x25 to launch BC.

Note that the process is more complex on a real Wii and goes through
several more steps before getting to MIOS:

* The System Menu detects a GameCube disc and launches BC (1-100)
  instead of the game. [Dolphin does this too.]

* BC, which is reportedly very similar to boot1, lowers the Hollywood
  clock speed to the Flipper's and then launches boot2.

* boot2 sees the lowered clock speed and launches MIOS (1-101) instead
  of the System Menu.

MIOS runs instead of IOS in GC mode and has an embedded GC IPL (which
is the code actually responsible for loading the disc game) and a PPC
bootstrap code. To get things working properly, we simply need to load
both to memory, then jump to the bootstrap code at 0x3400.

Obviously, because of the way this works, a real MIOS is required.
2017-02-08 15:07:34 +01:00
Léo Lam 4662e25cbb DolphinWX: Fix overclock slider clock display 2017-02-08 15:07:34 +01:00
Léo Lam fd49a1b2d5 Get rid of GetUsbPointer for emulated Bluetooth
It held a raw pointer to a IOS::HLE::Device::BluetoothEmu that is not
guaranteed to exist (and of course, nothing checked that it wasn't
nullptr), but what is more, it's totally unnecessary because we have
IOS::HLE::GetDeviceByName().

Since we cannot always inform the host that Wii remotes are
disconnected from ES, that is now done in BluetoothEmu's destructor.
2017-02-08 15:07:33 +01:00
Léo Lam 5fd5eeb82a IOS/ES: Don't write anything to the request after ES_Launch
Unless IOS failed at ES_Launch, it doesn't appear to write anything
back to the request after a launch, because the request is never
actually replied to in the normal way.

So let's just drop the writes to make things less confusing.
2017-02-08 15:07:33 +01:00
Léo Lam 9e6f5b203e IOS/ES: Implement ioctlv 0x25 (ES_LaunchBC)
This ioctlv is used to launch BC. Not sure if that's useful,
since only the system menu is known to launch BC and it does that
through a regular ES_LAUNCH; but let's implement it anyway.

(Implementation based on IOS59.)
2017-02-08 15:07:32 +01:00
Léo Lam ab38be1ee2 IOS: Clarify Init, Reinit, Reset, Shutdown
Some minor changes to make things slightly less confusing:

* Reinit doesn't actually init anything. It just adds static devices to
  the map, so let's give it an actually descriptive name. And let's not
  expose it in the header when it should not be.

* Reset's parameter name was changed from "force" -- which totally does
  not describe what it does -- to "clear_devices".

* Add a reload function which handles the reload process properly
  (reset all devices, set up memory values, re-add devices) and
  without publicly exposing implementation details.
2017-02-08 15:07:29 +01:00
JosJuice 14bb81716c WiiRoot: Only call InitializeDeterministicWiiSaves on temporary NAND
Shouldn't make any difference in practice because
both IsRecordingInput and IsNetPlayRunning should
be false if a temporary NAND isn't being set up,
but doing it this way is cleaner regardless.
2017-02-08 14:26:25 +01:00
Matt Mastracci 961f84b767 DVD read chunking
Splits DVD reads up into smaller chunks so that data is available
before the final interrupt is triggered. This better simulates the DMA
that happens on a real device, which some games will take advantage of -
by either playing back data as it is loading or by using data that is
going to be overwritten shortly by an outstanding read.
2017-02-08 14:18:55 +01:00
JosJuice 99492c22a6 Merge pull request #4839 from leoetlino/better-warnings
Be less annoying when usbdk is not installed
2017-02-08 14:00:12 +01:00
Markus Wick 027719d8e2 Merge pull request #4711 from lioncash/tables
JIT Instruction Tables: Eliminate JIT global usages
2017-02-08 09:39:50 +01:00
Michael Maltese 2d51bf579f ControlReference: put parsed_expression in a unique_ptr 2017-02-07 22:59:29 -08:00
Michael Maltese 492d5b6ac7 ControlReference: hide parse_error behind GetParseStatus() 2017-02-07 22:59:26 -08:00
Michael Maltese 9a632ea7b9 ControlReference: hide is_input behind function 2017-02-07 22:59:21 -08:00
Michael Maltese 813a725f68 ControlReference: move function bodies out of header 2017-02-07 22:59:14 -08:00
Michael Maltese a509f56116 InputCommon: Extract ControlReference from ControllerInterface
Better separation of concerns. Relegates `ControllerInterface` to
enumerating input controls, and the new `ControlReference` deals with
combining inputs and configuration expression parsing.
2017-02-07 22:59:10 -08:00
Matthew Parlane e2706b4381 Merge pull request #4860 from lioncash/lock
FifoPlayerDlg: Use std::lock_guard instead of manual mutex locking/unlocking
2017-02-08 18:59:28 +13:00
Matthew Parlane f838d16b0c Merge pull request #4546 from RisingFog/tas_wii_nand
Copy Wii save for current game for Netplay and TAS
2017-02-08 18:58:28 +13:00
Lioncash 399757a771 FifoPlayerDlg: Use std::lock_guard instead of manual mutex locking/unlocking
Same thing, but less error prone.
2017-02-08 00:26:32 -05:00
Matthew Parlane 4b7dd1f638 Merge pull request #4846 from aldelaro5/fix-symbols-newline
Fix symbols name from maps taking 2 lines instead of one
2017-02-08 18:18:56 +13:00
Matthew Parlane 7b3b8f26a3 Merge pull request #4789 from lioncash/input
InputCommon: Move ControllerEmu to its own directory
2017-02-08 18:16:14 +13:00
Matthew Parlane dac6a66252 Merge pull request #4769 from lioncash/settingshandler
SettingsHandler: Minor cleanup
2017-02-08 18:15:37 +13:00
Matthew Parlane f456fcec48 Merge pull request #4840 from lioncash/net
NetWindow: Eliminate usages of the main_window global
2017-02-08 18:12:56 +13:00
Matthew Parlane 691abc223b Merge pull request #4859 from lioncash/opcodedecoder
OpcodeDecoding: Convert #defines into enum constants
2017-02-08 18:12:11 +13:00
Matthew Parlane 5b7c0d86cd Merge pull request #4850 from lioncash/redundant
Core: Remove redundant returns in FifoPlayerThread() and CpuThread()
2017-02-08 18:11:30 +13:00
Matthew Parlane f91290d702 Merge pull request #4857 from lioncash/global
DSPCore: Make g_cycles_left a regular member variable of DSPEmitter
2017-02-08 18:10:59 +13:00
Matthew Parlane b41921935c Merge pull request #4854 from lioncash/constant
PowerPC: Convert #defines into typed constants
2017-02-08 18:10:11 +13:00
Matthew Parlane a027aadb24 Merge pull request #4851 from leoetlino/fix-wifi-scanning
IOS: Fix Wi-Fi scanning in system menu
2017-02-08 18:09:12 +13:00
Lioncash d9d069e024 OpcodeDecoding: Convert #defines into enum constants
Gets several constants out of global scope.
2017-02-08 00:05:17 -05:00
Florent Castelli 2bc3ffe07d DolphinWX: Add missing include for no-PCH builds 2017-02-08 05:24:46 +01:00
Lioncash 31f037b187 InputCommon CMakeLists: Normalize whitespace
Tabs -> Spaces
2017-02-07 22:15:53 -05:00
Lioncash 3a66f2c008 ControllerEmu: Move into its own directory
ControllerEmu is a massive class with a lot of nested public classes.

The only reason these are nested is because the outer class acts as a
namespace. There's no reason to keep these classes nested just for that.

Keeping these classes nested makes it impossible to forward declare them, which leads to quite a few includes in other headers, making compilation take
longer.

This moves the source files to their own directory so classes can be
separated as necessary to their own source files, and be namespaced under the
ControllerEmu namespace.
2017-02-07 22:12:06 -05:00
Lioncash 4260afc848 DSPCore: Make g_cycles_left a regular member variable of DSPEmitter
Gets rid of a global within the DSP core.
2017-02-07 21:56:57 -05:00
Florent Castelli 9ca4037ed9 UICommon: Rename HAS_LLVM to HAVE_LLVM 2017-02-08 03:30:38 +01:00
Florent Castelli f649e26655 cmake: Move LLVM import to UICommon
To use it, with a modern LLVM (3.9+), set your CMAKE_PREFIX_PATH
to point to the LLVM install folder or to a LLVM build folder.
We're linking ALL of LLVM libs since I don't really know which ones we need.
LTO will take care of sliming the binary size...
2017-02-08 03:30:38 +01:00
Florent Castelli 8c82607c95 cmake: Don't use unqualified target_link_libraries
You can't mix unqualified and qualified link libraries (PUBLIC / PRIVATE).
Use the modern form.
2017-02-08 03:07:43 +01:00
Lioncash 13f70d4597 PowerPC: Convert #defines into typed constants 2017-02-07 20:17:15 -05:00