Commit Graph

24728 Commits

Author SHA1 Message Date
JosJuice e3a2cd827a Filesystem: Do more validity checking in the constructor
This makes it possible to catch errors earlier so that file systems
simply fail to load instead of behaving oddly. It also makes it possible
to check for errors that weren't checkable before, like the end of a
directory being after the end of the parent directory.
2017-06-14 15:25:05 +02:00
JosJuice ee27be06d7 Filesystem: Add a cache for finding file info by disc offset
FileMonitor calls this every time a read happens, and there's no code that
only calls this a small number of times, so having a cache is worthwhile.
2017-06-14 15:25:02 +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
JosJuice ee2b88ebb6 Filesystem: Store pointer to beginning of FST in file infos
Needed for the next commit.
2017-06-13 22:44:15 +02:00
JosJuice 1262f08ac1 Filesystem: Better validity checking
Now that the FST in read in the constructor, m_Valid
can be set to false when there are errors in the FST.
2017-06-13 22:44:11 +02:00
JosJuice afe2bc60f6 Filesystem: Initialize everything in constructor
Not initializing until the filesystem is used is good when
a filesystem is constructed and then never used, but nobody does that.
This simplifies the code a little and lets all methods be const.
2017-06-13 22:44:07 +02:00
JosJuice d6ee7ec32c Filesystem: Read the entire FST in one go
Instead of using lots of small scattered reads to read the FST,
only one big read is used, which is more efficient.

This also means that the FST only allocates memory once and stores all
strings close to each other - good for the CPU cache. The file info
objects use pointers to this FST memory of containing data themselves.
Keeping around the big m_FileInfoVector containing objects with only
pointers is a bit unnecessary, but that will be fixed soon.
2017-06-13 22:43:41 +02:00
JosJuice f49b64caff Filesystem: Rewrite finding file info by path for performance
Instead of calling GetPathFromFSTOffset for every file info, FindFileInfo
now only looks at names in directories that are included in the path.
For the common case of searching for "opening.bnr", this means that
only root-level files and directories have to be searched through.
2017-06-13 22:41:02 +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 3d5ef948d0 Filesystem: Make FindFileInfo public 2017-06-13 22:40:53 +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
JosJuice 5021b4a567 Filesystem: Replace FileInfo struct with interface
GC/Wii filesystem internals shouldn't be exposed to other classes.
This change isn't especially useful by itself, but it opens up the
way for some neat stuff in the following commits.
2017-06-13 22:37:43 +02:00
JosJuice 95bc57cff3 DiscScrubber: Use FileInfo::IsDirectory instead of bit magic 2017-06-13 17:01:39 +02:00
Anthony 67dbbc67c0 Merge pull request #5597 from JosJuice/bs2-hle-default
Skip GameCube IPL by default
2017-06-11 10:47:56 -07: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
Tilka 1bf62cc084 Merge pull request #5596 from leoetlino/return-by-value
StringUtil: Make SplitString return by value
2017-06-11 16:05:14 +01:00
Léo Lam 17ef4c8046 StringUtil: Make SplitString return by value
Simpler usage.
2017-06-11 16:48:20 +02:00
Tilka 937d72e591 Merge pull request #5595 from MerryMage/bRunning
VideoConfig: Remove bRunning
2017-06-11 15:26:04 +01:00
MerryMage a0b41c83e7 VideoConfig: Remove bRunning
Value was set but not used.
2017-06-11 15:06:12 +01:00
Leo Lam eefae402b3 Merge pull request #5593 from leoetlino/legacy-code
VideoConfig: Remove useless code
2017-06-10 21:34:56 +02:00
Léo Lam 774587cbd1 VideoConfig: Remove useless header includes 2017-06-10 20:25:27 +02:00
Léo Lam 0e85c47237 VideoConfig: Remove manual panic alert setting load
This code hadn't been touched since 2010. Nowadays, the panic alert
setting is loaded by ConfigManager and applied in UICommon.
VideoConfig has no business messing with it.
2017-06-10 20:24:18 +02:00
Leo Lam f2a6e39722 Merge pull request #5590 from MerryMage/vcd-refresh
VideoConfigDiag: Refresh VideoConfig before opening configuration dialog
2017-06-10 20:21:18 +02:00
Leo Lam a3710745c5 Merge pull request #5592 from MerryMage/config-commandline
Config: Remove creation of unnecessary CommandLine layer
2017-06-10 20:15:34 +02:00
MerryMage 33879bf611 Config: Remove creation of unnecessary CommandLine layer 2017-06-10 19:07:17 +01:00
MerryMage 12e9ce47f6 VideoConfigDiag: Refresh VideoConfig before opening configuration dialog
If the video configuration dialog is opened before a game was run, VideoConfig::Refresh was never called.
2017-06-10 16:40:10 +01:00
shuffle2 b841f796f9 Merge pull request #5588 from TaoSc/zlibupdate
Update zlib to 1.2.11
2017-06-09 17:25:20 -07:00
Anthony 0a69331371 Merge pull request #5585 from JosJuice/volumedirectory-minor-fixes
VolumeDirectory: Minor fixes
2017-06-09 11:36:46 -07:00
JosJuice 2578a3553b VolumeDirectory: That's not what "4 byte" means 2017-06-09 20:00:36 +02:00
JosJuice 240cb0ca11 VolumeDirectory: Use correct endianness when writing apploader -1 2017-06-09 20:00:17 +02:00
JosJuice eb50533201 Automatic translation resources sync with Transifex 2017-06-09 19:50:09 +02:00
Anthony 20a3cbb8fc Merge pull request #5587 from JosJuice/volumewii-game-partition-later
VolumeWii: Don't set m_game_partition until we know partition is valid
2017-06-09 10:49:50 -07:00
Anthony c900829eee Merge pull request #5586 from JosJuice/expand-game-partition
FilesystemPanel: Expand game partition rather than second partition
2017-06-09 10:49:12 -07:00
JosJuice d2b69f963a VolumeWii: Don't set m_game_partition until we know partition is valid
Without this, we can end up in an inconsistent state where
m_game_partition is set to a partition that isn't in the
partition maps.
2017-06-09 18:39:30 +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
JosJuice 025884b688 FilesystemPanel: Expand game partition rather than second partition
The game partition is normally the second partition, but not
if the disc has been scrubbed to only contain one partition.
2017-06-09 18:04:58 +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
Leo Lam 9ec14eb17f Merge pull request #5581 from shuffle2/move-WriteReturnValue
move IOS::HLE::WriteReturnValue to .cpp file
2017-06-08 19:02:10 +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 c7316c89db Merge pull request #5545 from shuffle2/fix-unittests
unittests: set user directory
2017-06-07 21:20:38 -07:00
shuffle2 ffd8309aca Merge branch 'master' into fix-unittests 2017-06-07 21:20:06 -07:00
shuffle2 9ee63608b3 Merge pull request #5579 from shuffle2/msvc-warn-more
msvc: enable some default-off warnings
2017-06-07 21:19:35 -07:00
Shawn Hoffman 602b972773 msvc: enable some default-off warnings 2017-06-07 21:07:36 -07:00