Commit Graph

8801 Commits

Author SHA1 Message Date
Léo Lam
a1f75f3370 Analytics: Report a few more video settings
* per-pixel lighting
* usershader mode
* fast depth
* vertex rounding
2017-07-30 21:50:33 +08:00
Tom Boshoven
fa683adaf5 SDHC documentation and cleanups.
Added some more comments.

Cleanups based on PR feedback.

Comment was unclear.
2017-07-30 13:06:38 +02:00
Stenzek
b154edb4fb VideoCommon: Move WM_USER_CREATE message to after backend initialization
Fixes the mouse cursor being left visible after ubershader
precompilation when the hide option is checked.
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
901bf9c257 VideoConfig: Add config options for ubershaders 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
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
Léo Lam
5a90a26080 IOS: Fix the error code for ES_DEVICE_ID_MISMATCH 2017-07-30 00:24:47 +08:00
Anthony
6fe33f844f Merge pull request #5770 from ligfx/lognewconfig
LogManager: use layered config
2017-07-27 11:58:57 -07: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
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
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
fb80c5398a DolphinWX: Use title case for hotkey group names 2017-07-26 08:00:17 +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
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
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
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
JosJuice
c83cac7cca Fix the handling of NTSC-K for GCI folders 2017-07-16 16:31:12 +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
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
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
Michael Maltese
0019c34c73 DolphinWX: fix input bitmaps not working when background input is off 2017-07-12 00:12:07 -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
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
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
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
Michael Maltese
28d6c61e34 LogManager: use layered config 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
Tillmann Karras
31dd690ed1 Core: fix log category for startup message 2017-07-09 18:48:35 +01:00
Michael Maltese
26aa9f88a4 LogManager: clean up header 2017-07-07 16:44:38 -07:00
John Pansera
72c573f6dc Fix Forecast Channel 2017-07-06 20:28:33 -04: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
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
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
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
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
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
Léo Lam
4dcfa5371a IOS/ES: Don't open store in rw mode in WriteNewCertToStore
Causes different issues on different platforms.

r+b is broken on Windows for some reason.
a+b is broken on macOS.
2017-06-28 11:23:08 +02:00
Léo Lam
42d217b9a8 WiiUtils: Add an online updater
While setting up a proper NAND for Wii emulation has become much easier
now that disc and online system updates work, they still require users
to have a recent disc game, certificates extracted from IOS or a NAND
dump for online updates to work and to really get all system titles.

This commit adds the ability to do an online update right from
Dolphin itself, which solves that usability issue.
2017-06-28 11:22:10 +02:00
Léo Lam
0c7b9570b4 Move WiiUtils to Core
Allows reusing the WAD import logic more easily, whereas UICommon
code can only be used from UICommon and UI.

And managing what's on the NAND is the Core's responsability, not UI.
2017-06-28 11:22:10 +02:00
Leo Lam
7454a20f4f Merge pull request #5707 from leoetlino/content-table
IOS/ES: Fix content table handling
2017-06-28 10:42:59 +02:00
Tillmann Karras
ad51311dbf Fix GCC warnings 2017-06-28 01:12:13 +01:00
Léo Lam
ff83b93949 Remove unnecessary WiiRoot inits/shutdowns
* IOS: WiiRoot shutdown was moved to HW.

* Movie: Don't call UpdateWantDeterminism() if we're not running yet,
  because this will automatically be done during the boot process.
  Not doing this will result in two NANDs being created.
2017-06-27 20:43:39 +02:00
shuffle2
ffe4135d77 Merge pull request #5708 from leoetlino/once
Initialise WiiRoot once per emulation session
2017-06-27 11:41:34 -07:00
Léo Lam
f5ef060b21 Initialise WiiRoot once per emulation session
This removes unnecessary initialisations which would cause issues in
determinism mode.
2017-06-27 15:44:17 +02:00
Léo Lam
da5a7fcc63 IOS/ES: Fix content table handling
This is larger than I thought I would be, but unfortunately it's quite
hard to split fixes like this when the handling is wrong in tons of
different places.

The content table is limited in size. It can only hold 16 entries.
Three consequences:

* Since the table cannot grow indefinitely, instead of using a std::map
  we use a std::array as we should.

* Remove a hack where the CFD was cleared back to 0 on IPC close (wtf?)

* The CFD now doesn't keep increasing to infinity. It's unknown if this
  would fix anything at all, but some issues in the past were caused
  by CFDs being excessively large.

Other minor changes:

* Simplify save state logic.

* Keep track of the UID like ES does. Not sure how useful this is, but
  we can do this very easily so why not.

* Remove the guesswork and use the actual error codes.

* Add more error checking to make Dolphin less likely to crash.

Something that should be done in the future: deduplicate the filesystem
logic. Something that takes one line in the actual ES code takes
10+ lines in our implementation... while duplicating the FS logic...
This will likely harder to fix though, so I'm leaving that
for another time.
2017-06-27 15:37:00 +02:00
LAGonauta
8fd1af6783 Changed OpenAL latency setting to really reflect how much time it is.
Before these changes each value of latency were actually 5ms, with a
minimum latency of ~10 ms. If it was set to 4 ms on the UI, the actual
latency was 10 + 5 * 4 = 30 ms.
Now 30 ms on the UI means 30 ms on the backend.
2017-06-27 06:54:28 -03:00
shuffle2
0f3ee2f209 Merge pull request #5700 from leoetlino/title-key
ESFormats: Minor changes
2017-06-27 01:02:42 -07:00
Léo Lam
9f08534a47 IOS: Reuse IOSC instance when possible
Changes ESFormats to take an IOSC instance instead of creating its own
temporary instance unnecessarily.
2017-06-27 00:01:20 +02:00
Léo Lam
6d821de2b9 IOS: Use a std::array for the title key instead of vector
The title key is always 16 bytes, so it doesn't make sense to make it
a std::vector.
2017-06-27 00:01:20 +02:00
Michael Maltese
b2c9d6d217 Rename CMixer to Mixer 2017-06-26 15:01:07 -07:00
Leo Lam
0ace7fd8f3 Merge pull request #5694 from leoetlino/dolphin-drm
Refuse to launch the shop with default credentials
2017-06-26 21:31:32 +02:00
Léo Lam
70828916e6 IOS/ES: Refuse to launch the shop with default credentials
Prevents... misusing the shop.

We are not legally obliged to do this, but let's not make piracy
any easier.
2017-06-26 20:30:13 +02:00
Léo Lam
860f07f5a1 IOS/ES: Expose GetDeviceId 2017-06-26 15:18:01 +02:00
Léo Lam
60c6fbe9cc Add CommonTitles.h for common Wii title IDs 2017-06-26 15:17:55 +02:00
JosJuice
642e3db3c5 TitleDatabase: Add more information to a comment 2017-06-26 11:25:58 +02:00
JosJuice
ee66c562ab TitleDatabase: Let user files override sys files
This seems like an oversight in the old code, because
what's the point of loading user files if the titles
in them are going to be ignored for nearly all games?

This commit fixes the issue by making the first LoadMap
variant not overwrite entries and making the constructor
do everything in the opposite order. An alternative solution
would be to make the second LoadMap variant overwrite entries.
2017-06-26 11:14:27 +02:00
Shawn Hoffman
c5fa470ad8 replace DoFileSearch with optimized version 2017-06-23 17:25:53 -07:00
shuffle2
1bd177561b Merge pull request #5663 from leoetlino/import-fix
IOS/ES: Fix import sanity check
2017-06-23 17:04:26 -07:00
Léo Lam
a3fdda1675 IOS/ES: Fix import sanity check
The sanity check runs *before* finalising the import, so at that time
the whole title directory is still in /import and not in /title.
This means we should check for contents there, not in /title. Whoops.
2017-06-22 23:41:01 +02:00
Niels Boehm
56158ca176 Replace MMU mask tests with dedicated function.
The efficient function (that is nearly the same as
https://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2)
replaces one loop based instance (which also reused the xx variable
afterwards, whereas it should have used htabmask instead) and one
instance using the population count a.k.a. Hamming weigth.
2017-06-22 20:22:53 +02:00
shuffle2
09edd62cce Merge pull request #5650 from leoetlino/check-contents
IOS/ES: Add some sanity checks to ImportTitleDone
2017-06-21 20:13:44 -07:00
Tillmann Karras
e504da6f04 DSPHLE: add a few comments 2017-06-21 07:07:10 +01:00
Tillmann Karras
b2a3827ecb DSPHLE: fix volume in NTSC IPL ucode 2017-06-21 06:57:58 +01:00
Tillmann Karras
578ae3c8a1 DSPHLE: the light protocol has no sine table
The sine table is only used for Dolby mixing which the light protocol
doesn't support.
2017-06-20 22:00:27 +01:00
Tillmann Karras
a46430851d DSPHLE: the IPL PAL ucode's 0xC command is a nop 2017-06-20 22:00:27 +01:00
Tillmann Karras
69027bc488 DSPHLE: add another Japanese IPL checksum
I'm not actually sure it's version 1.2 but it doesn't really matter
anyway.
2017-06-20 22:00:11 +01:00
Léo Lam
3613f33c9b IOS/ES: Make sure all contents are imported
This adds a check to ImportTitleDone to make sure all required contents
that are listed in the TMD have been imported before allowing to finish
the import. Not checking for this could allow titles to be left in an
inconsistent state.
2017-06-20 20:12:50 +02:00
Léo Lam
4d08e90f26 IOS/ES: Block ImportTitleDone if there's a content import 2017-06-20 11:57:00 +02:00
shuffle2
74cab88a8c Merge pull request #5618 from lioncash/fifo
FifoRecorder: Don't allocate ~100.7MB on program startup
2017-06-19 08:02:51 -07:00
Steven Newbury
e9a696b160 Retry opening of wiimote channels on initial failure #5997
There seems to be a race condition between a peripheral device
connecting to the bluetooth controller and it being ready to use.
It's very short and it depends upon the controller, some appear to
connect synchronously and block until the device is ready, others
report the device upon discovery but do not allow communication straight
away. I don't know which is the correct behaviour, or whether it depends
on the peripheral, controller or both. Anyway, Dolphin waits for a
remote to appear and immediately attempts to open the communication
channels, this can fail because the device isn't ready yet, delay, try
again, and it works.

There are other (unlikely) chances the device is busy at random
moments after this initial race condition so it loops around try to
reconnect.

This was inspired by an earlier patch, see here:
https://bugs.dolphin-emu.org/issues/5997#note-20

I can confirm that it works perfectly for me on a bluetooth
controller where otherwise it's impossible to connect (Dell 380
Bluetooth 4.0).
2017-06-19 09:22:04 +01:00
Lioncash
82c66e2bab FifoRecorder: Don't allocate ~100.7MB on program startup
So, a FifoRecorder instance is instantiated as a file-local variable and
used as a singleton (ugh). Most users likely don't regularly use the
FIFO player/FIFO recorder, so this is kind of a substantial waste of
memory.

FifoRecorder's internal RAM and ExRAM vectors are 33554432 and 67108864
bytes respectively, which is around 100.66MB in total.

Just on the game list view on a clean build with nothing loaded, this
knocks debug build memory usage down from ~232.4MB to ~137.5MB, and
release build memory usage down from ~101MB to ~5.7MB.
2017-06-19 02:47:26 -04:00
Michael Maltese
f7e2b8dab7 DSPCore: replace 'GC' with 'GameCube' in messages 2017-06-18 15:43:02 -07:00
Michael Maltese
9de2934aae DSPCore: remove message that the free ROM doesn't work with IPL
The GameCube IPL sounds the same when using the free ROM as it does when
using the official ROM (and in Audacity, I couldn't visually distinguish
between the waveforms). It has a reference to an unimplemented function
at 0x8644 which seems to only be used in an inlined version of the CARD
ucode.
2017-06-18 15:43:02 -07:00
Michael Maltese
84808d2e35 DSPCore: update free DSP ROM message for GBA ucode support
The GBA ucode is supported as of #5524 / d51be94.
2017-06-18 15:43:02 -07:00
Léo Lam
961c85bf7c IOS/ES: Fix bug in ImportTicket ioctlv handler 2017-06-18 23:09:30 +02:00
shuffle2
5072f4e5c3 Merge pull request #5638 from leoetlino/sysconf
Rewrite SysConf handling
2017-06-18 13:19:11 -07:00
Léo Lam
d86f020e81 Rewrite SysConf handling
This rewrites the SysConf code for several reasons:

* Modernising the SysConf class. The naming was entirely cleaned up.
  constexpr for constants.

* Exposing less stuff in the header.

* Probably less efficient parsing and writing logic, but much simpler
  to understand and use in my opinion. No more hardcoded offsets.
  No more duplicated code for the initial SYSCONF generation.

* More flexibility. It is now possible to add and remove entries,
  since we rebuild the file. This allows us to stop spamming
  "section not found" panic alerts; we can now use and insert
  default entries.
2017-06-18 16:17:05 +02:00
Tillmann Karras
9a2bef97da JitCache: use SymbolDB names as JIT block names 2017-06-18 06:58:44 +01:00
Léo Lam
e1990e2645 IOS/ES: Fix title ordering
On a real Wii, the title list is not in any particular order. However,
because of how the flash filesystem works, titles such as 1-2 are
*never* in the first position. We must keep this behaviour, or some
versions of the System Menu may break.
2017-06-17 22:39:08 +02:00
Leo Lam
bc9c9b9fe4 Merge pull request #5594 from MerryMage/phack
Cleanup Projection Hack
2017-06-16 18:36:39 +02:00
Léo Lam
6249244c90 IOS/ES: Fix formatting 2017-06-16 16:17:38 +02:00
Léo Lam
c08806d107 IOS/ES: Verify containers in GetTMDStoredContents 2017-06-16 16:17:38 +02:00
Léo Lam
d77b7ac90e IOS/ES: Verify containers in SetUpStreamKey 2017-06-16 16:17:38 +02:00
Léo Lam
36c5caacf4 IOS/ES: Verify containers in ImportTmd 2017-06-16 16:17:37 +02:00
Léo Lam
54025da00f IOS/ES: Add note about verification in DiVerify
We probably don't want to verify containers there because it might
result in patched/custom games failing the check.
2017-06-16 16:17:37 +02:00
Léo Lam
8a49e1f7db IOS/ES: Verify containers in ImportTitleInit 2017-06-16 16:17:37 +02:00
Léo Lam
719af1aff4 IOS/ES: Verify containers in ImportTicket 2017-06-16 16:17:37 +02:00
Léo Lam
07d83ada39 IOS/ES: Create missing directories at boot
Something that IOS does and that Dolphin doesn't, for whatever reason.
2017-06-16 16:17:37 +02:00
Léo Lam
f3bf1d626c IOS/ES: Add helper function ReadCertStore 2017-06-16 16:17:37 +02:00
Léo Lam
88348e2903 IOS/ES: Add VerifyContainer
Will be used from several functions to verify the signatures for
different containers (TMDs, tickets, device signed blobs).

An option was added to disable signature checks, because that could be
useful for people trying to import unsigned stuff.
2017-06-16 16:17:37 +02:00
Léo Lam
34c9bf391e IOS: Correct ES return code names about signatures
-1027 is used when ES cannot find the issuer of a certificate.

-1012 is used when the signature type is invalid.
2017-06-16 15:49:40 +02:00
Shawn Hoffman
1ada68aecd windows: fix handle leak when using continuous scan 2017-06-16 04:00:32 -07:00
Shawn Hoffman
e51071a9c5 msbuild: put pugixml in Externals solution filter; fix project reference. 2017-06-15 19:06:16 -07:00
Lioncash
dd4203bec8 Core: Remove unnecessary includes
Also moves a cpp file's related header file to the top of the inclusions if it isn't already there.
2017-06-15 18:52:22 -04:00
Lioncash
b003108b8b Core: Add WiimoteCommon headers to the VS project 2017-06-15 18:38:21 -04:00
Leo Lam
8f460a1cda Merge pull request #5611 from JosJuice/reorganize-file-namespace
Reorganize File namespace
2017-06-15 23:28:36 +02:00
JosJuice
cf94ce6305 Add a namespace to OpenFStream
For consistency with the other functions in FileUtil.h.
2017-06-15 21:34:04 +02:00
JosJuice
f09ceaa735 Move IOFile to a separate file
Reduces the number of files that need to be recompiled
when making changes to FileUtil.h.
2017-06-15 21:33:50 +02:00
Leo Lam
9bc1b652fe Merge pull request #5601 from leoetlino/esformats-additions
ESFormats additions and fixes
2017-06-15 21:32:44 +02:00
Leo Lam
09c0a3caaf Merge pull request #2820 from JosJuice/filesystem
Filesystem redesign and performance improvements
2017-06-15 21:24:42 +02:00
MerryMage
44f2420517 GraphicsSettings: PH_ZNear and PH_ZFar are std::strings 2017-06-15 16:38:06 +01:00
Léo Lam
a370ad5f6d IOS/ESFormats: Fix content map writing
On Windows, this would fail because the file handle wasn't closed.
2017-06-14 23:13:46 +02:00
Léo Lam
8865208571 IOS/ESFormats: Add ParseCertChain
This will be used to avoid duplicating cert chain parsing code.
2017-06-14 22:45:30 +02:00
Léo Lam
e29f6e383f IOS/ESFormats: Add CertReader 2017-06-14 22:45:30 +02:00
Léo Lam
90280b3f84 IOS/ESFormats: Remove unused TMDReader function
The ES function that used to make use of it was changed to be more
sane, so GetRawHeader() is now unused and useless.
2017-06-14 22:45:29 +02:00
Léo Lam
6c3069be97 IOS/ESFormats: Use SignedBlobReader for TMDs and tickets 2017-06-14 22:45:29 +02:00
Léo Lam
2ec04675c9 IOS/ESFormats: Add SignedBlobReader
Allows common signature parsing code to not be duplicated.
2017-06-14 22:45:29 +02:00
JosJuice
87916fe099 Filesystem: Replace GetFileList()
Instead of expecting callers to know how the size of directory file infos
relates to which files are in which directories, filesystems now offer a
GetRoot() method, and file infos offer a way to get their children. As
a bonus, m_FileInfoVector no longer has to be created and kept around
in RAM. Only the file info objects that actually are used are created.
2017-06-14 15:23:48 +02:00
Leo Lam
54e882941c Merge pull request #5600 from leoetlino/xml-library
Externals: Add zeux/pugixml@38edf25
2017-06-14 11:13:32 +02:00
JosJuice
7c45afecb2 Filesystem: Use file info in arguments instead of path
Some callers already have the file info, making the relatively slow
FindFileInfo calls unnecessary. Callers that didn't have the file info
will now need to call FindFileInfo on their own.
2017-06-13 22:40:57 +02:00
JosJuice
07d3a39aeb Filesystem: Replace file info's full path with name
Some callers (i.e. ISOProperties) don't want the full path, so giving them
it is unnecessary. Those that do want it can use GetPathFromFSTOffset.
Not storing full paths everywhere also saves a small bit of RAM and is
necessary for a later commit. The code isn't especially pretty right now
(callers need to use FST offsets...) but it'll become better later.
2017-06-13 22:38:31 +02:00
Léo Lam
b08201654e Externals: Add zeux/pugixml@38edf25
Along with VS boilerplate to get it to build on Windows.
2017-06-13 14:05:10 +02:00
Léo Lam
18678afa6d Common: Add HttpRequest to simplify HTTP requests
Too much boilerplate that is duplicated if we use curl directly.
Let's add a simple wrapper class that hides the implementation details
and just allows to simply make HTTP requests and get responses.
2017-06-13 12:52:31 +02:00
Leo Lam
3e1a650a3f Merge pull request #5591 from leoetlino/wii-fix
Core: Misc WiiRoot fixes
2017-06-12 23:41:45 +02:00
Léo Lam
4a3537285b IOSC: Implement ImportCertificate
Same as VerifyPublicKeySign, we currently only support RSA keys
(which is all we need right now).
2017-06-12 20:33:54 +02:00
Léo Lam
1a8144c702 IOSC: Fix ImportPublicKey to work with other public key types 2017-06-12 20:33:54 +02:00
Léo Lam
2eccd45f01 IOSC: Implement GetSizeForType
Avoids duplicating sizes everywhere.
2017-06-12 20:33:53 +02:00
Léo Lam
965773bf67 IOSC: Implement VerifyPublicKeySign
Partial implementation which doesn't support ECC stuff, but good enough
for our purposes.
2017-06-12 18:24:02 +02:00
Léo Lam
a0392db833 IOSC: Add entry for the root key handle
It contains a RSA4096 public key used to validate all other
Nintendo certificates.
2017-06-12 18:24:01 +02:00
Léo Lam
8859bc91e2 IOSC: Add storage for key misc data
Will be used to store the exponent for RSA keys.
2017-06-12 18:24:01 +02:00
Léo Lam
d4f501bca6 IOSC: Replace direct access to entries with getter
Makes it slightly less likely to forget a check and end up doing an
out-of-bounds access. Also makes it obvious that we *are* indeed
checking whether the handle is valid, instead of hiding it in
HasOwnership (which won't handle the root key handle case properly).
2017-06-12 18:24:01 +02:00
Léo Lam
acf150df3f IOSC: Add structures for certificates and signatures 2017-06-12 18:24:01 +02:00
JosJuice
b3ac6de7f8 Skip GameCube IPL by default
See https://github.com/dolphin-emu/dolphin/pull/5492#issuecomment-306988942

I'm also renaming the setting because HLE_BS2 has already
been set to False automatically in existing INIs.
2017-06-11 17:51:01 +02:00
Léo Lam
17ef4c8046 StringUtil: Make SplitString return by value
Simpler usage.
2017-06-11 16:48:20 +02:00
Léo Lam
91bcd756ff Core: Remove useless ShutdownWiiRoot calls
I don't see why we need to call ShutdownWiiRoot on InitializeWiiRoot.

Also, atexit? Really? Not only is this unnecessary, it will also cause
ShutdownWiiRoot to be called twice in rapid succession for no reason.
2017-06-10 20:00:43 +02:00
Léo Lam
3eecf67a2a Core: Remove useless InitializeWiiRoot call 2017-06-10 19:52:54 +02:00
Léo Lam
8b67a3ada3 Core: Only restore config after HW shutdown
The config must only be restored after the HW has shut down, not while
it is still running, because the HW can still query the config, which
can lead to inconsistent states.

This fixes WiiRoot not being able to copy back saves on shutdown.
2017-06-10 19:50:43 +02:00
Leo Lam
1f30bd1f26 Merge pull request #5583 from shuffle2/remove-psapi
remove MemUsage, and therefor psapi dependency
2017-06-09 18:10:04 +02:00
Leo Lam
d9e8a2a7e7 Merge pull request #5584 from JosJuice/boot-tmd-valid
Boot: Check TMD validity before reading from TMD
2017-06-09 18:07:26 +02:00
Leo Lam
25850dd366 Merge pull request #5563 from leoetlino/internal-functions
IOS/ES: Make NandUtils member functions
2017-06-09 17:52:09 +02:00
JosJuice
fdd197475b Boot: Check TMD validity before reading from TMD
Otherwise Dolphin crashes when trying to boot a Wii game
with an invalid TMD.
2017-06-09 17:44:43 +02:00
Shawn Hoffman
f206a4ea9c remove MemUsage, and therefor psapi dependency 2017-06-08 22:25:46 -07:00
Leo Lam
9885a2bb28 Merge pull request #5575 from leoetlino/setup-stream-key
IOS/ES: Implement ES_SetUpStreamKey
2017-06-08 20:11:14 +02:00
Léo Lam
7b4404c7d5 IOS/ES: Implement ES_SetUpStreamKey
This ioctlv is used to get an IOSC decrypt handle for a title.
It is known to be used internally by the WFS modules, but it can also
be used from the PPC under some conditions.

Brings us down to 2 essentially unimplementable ioctlvs (syscalls which
seem to return kernel thread priorities...), and 1 known but
unimplemented ioctlv (VerifySign).
2017-06-08 18:15:03 +02:00
Léo Lam
e240e260d9 IOSC: Fix the SetOwnership implementation 2017-06-08 18:15:03 +02:00
Léo Lam
47e0a1656e IOS/ES: Make NandUtils member functions
In the future, NAND filesystem access will be limited to one IOS
instance, for safety reasons and to make it possible to consider
supporting NAND images. This means that any code accessing the NAND
filesystem must go through the FS device, both for code that is
external to IOS and internal.

Because we don't want to introduce any singleton, this requires
internal IOS code that needs NAND access to be part of an IOS device
class, so they can access the FS device easily.

Making some of the internal ES implementation functions member
functions also prevents them from being (mis)used outside of IOS,
since they cannot be called everywhere anymore.
2017-06-08 17:44:00 +02:00
Shawn Hoffman
55062afea9 move IOS::HLE::WriteReturnValue to .cpp file 2017-06-08 00:07:10 -07:00
shuffle2
327050348c Merge pull request #5576 from lioncash/filters
Core: Move SignatureDB and Config source files into filters
2017-06-07 20:41:06 -07:00
Shawn Hoffman
fd166032ab msbuild: obey some warnings about missing virtual destructors 2017-06-07 20:20:25 -07:00
Shawn Hoffman
5480efdff2 video: change multisample/AA setting to u32 2017-06-07 20:20:25 -07:00
Shawn Hoffman
9357cee2ef do not assign in conditional statements 2017-06-07 20:09:44 -07:00
Shawn Hoffman
50f34f8b05 jit64: silence signedness comparison warnings 2017-06-07 20:09:44 -07:00
Shawn Hoffman
ef9090d7da powerpc: silence an int->u32 init warning 2017-06-07 20:09:43 -07:00
Shawn Hoffman
a97d079138 jit64: quiet variable init warnings 2017-06-07 20:09:43 -07:00
Shawn Hoffman
e6c15e993b quiet some sign-conversion-in-parameter warnings 2017-06-07 20:09:43 -07:00
Shawn Hoffman
ead4f19654 ios/usbv4: initialize TransferCommand::data_address to 0 2017-06-07 19:52:08 -07:00
Shawn Hoffman
983f70c9ea ios: treat return values as s32 2017-06-07 19:52:07 -07:00
Shawn Hoffman
5b5c630afb set underlying type of some enums to quiet warnings 2017-06-07 19:52:07 -07:00
Shawn Hoffman
ebd3d43b7d ios/es: make fd s32 -> quiets warnings 2017-06-07 19:52:07 -07:00
Shawn Hoffman
8f12d7fb3c ios/net/ip/top: introduce a helper to write ip addr (quiets warning) 2017-06-07 19:52:07 -07:00
Shawn Hoffman
4a1b32afe4 windows: use proper type/constant for NET_IFINDEX in ios hle 2017-06-07 19:52:07 -07:00
Shawn Hoffman
7e75a052a4 windows/bba: pass c_str() instead of std::string object through a va_list 2017-06-07 19:52:07 -07:00
Shawn Hoffman
90f863a7a3 HLE: fix unreachable code warning 2017-06-07 19:52:07 -07:00
Shawn Hoffman
f730b775b6 quiet warnings about possibly-uninitialized variable usage 2017-06-07 19:52:07 -07:00
Shawn Hoffman
e1a3e41bf3 fix various instances of -1 being assigned to unsigned types 2017-06-07 19:52:07 -07:00
Lioncash
a093b58aad Core: Move SignatureDB and Config source files into filters
Keeps things organized instead of being in the root of Core's source
tree when using the filter view.
2017-06-07 21:57:49 -04:00
Shawn Hoffman
8d37301b19 msbuild: Remove hack for ObjectFileName (reduces build parallelism). 2017-06-07 17:30:05 -07:00
Léo Lam
7b490d7cb0 HW/WiiSaveCrypted: Don't use new/delete 2017-06-07 12:49:24 +02:00
Leo Lam
3a83ebcc35 Merge pull request #5567 from lioncash/put_time
Movie: Use std::put_time in GetRTCDisplay()
2017-06-07 10:00:31 +02:00
Leo Lam
6ee2227ba2 Merge pull request #5568 from lioncash/boot
Boot: Make BootExecutableReader hierarchy constructors explicit
2017-06-07 09:27:04 +02:00