Prevents path traversal without needing an absolute path
function, and also improves accuracy (character sequences
like ../ appear to have no special meaning in IOS).
This removes the creation and usage of /sys/replace,
because the new escapes are too complicated to all
be representable in its format and because no other
NAND handling software seems to use /sys/replace.
This reverts commit 141f3bfb3a.
The implementation of getting absolute paths wasn't working
on non-Windows systems, which is a huge problem for IOS HLE.
For hotkeys, changed HotkeyManager to allow to get and make partial groups of hotkeys.
Also preserved the old configuration naming scheme for the ini, this is done to preserve compatibility with the older groups structure.
Add the ability to get GCPad control groups
Used like the HotkeyManager methods, this is used for the new GCPad configuration dialog.
Add the ability to get groups of Keyboard input
Same reasons as the previous ones.
Add ability to get groups of Wiimote input
Add the ability to get extensions group
This needed to pass to 3 classes. Will be used for their respective dialogs.
I know there is already #3521, but it currently needs a rebase and I
needed to add something to IPC_HLE_Device properly, that is, without
putting everything in the header, so this commit cleans up
IPC_HLE_Device first. (And only IPC_HLE_Device: the rest will still
be handled by #3521.)
Also fixes a few indirect includes (removing unused header includes
from IPC_HLE_Device.h broke building)
This is something that was copy-pasted across the IPC_HLE code
(because it's often used). Since all of the duplicated pieces of code
do the same thing as the previous EnqueueReply, except that they also
write to command_address + 0 and + 8 (to write the correct reply type),
this commit changes EnqueueReply to do that instead of having it
duplicated all over IPC HLE.
It was apparently causing heavy slowdowns on game even though it wouldn't spam much, probably caused by the amount of additional check caused by the logs levels changes.
This is mainly for potential Android fifoci usage, and thus is not
exposed anywhere in the UI. To enable, set DumpFramesAsImages under
Settings in GFX.ini.
When the emulated BT device is created, m_HCIEndpoint (which is a
CtrlBuffer)'s m_cmd_address is not initialised to 0. So it ends up
being a random value. This is normally not an issue… but the
emulated Bluetooth code relies on m_cmd_address to know whether the
HCI endpoint is still valid.
This is a problem with ES_Launch, because the bt_emu class is
destructed and re-constructed, and while m_cmd_address is still
uninitialised, the ES_Launch code disconnects all Wii remotes,
which triggers a HCI event and hence the bug.
Load all the inis at once, choose which one to write to, and save them all
at the same time. This allows us to modify settings from different files
on the same settings page.
Instead of resetting two command buffers, now we only have to call
vkResetCommandPool once at the start of a frame.
NV's recommends using one pool per frame/thread. May offer a very small
boost in performance on some systems.
%n writes to a pointer that's provided as a parameter.
We didn't have a custom implementation of this before,
meaning that %n would trigger a write to the host
memory instead of the emulated memory!
The bounds checks in IOCtl were using 0x200 as the size of
m_Registers, which is more than the actual size, 0x200 / 4.
This commit turns m_Registers into an std::array to allow
for a correct and obvious way of getting its size.
anv seems to set this to zero, which is fine according to the spec, but
we were using it as a maximum, which was resulting in a swap chain
without any buffers being created.
This fixes the screenshot stutter, as this needs more than a frame.
So we won't stall on the png writing at all until emulation stops or
a new screenshot is requested.
This increase the performance of good backends a bit, but slows down the bads one a lot.
Let's fix those backends instead of forcing stupid memcpy in the common code.
Makes for a cleaner separation of functionality, as well as removing
multiple includes from the main header file. It also gets a bunch of
structs and enums out of the global namespace.
Coincidentally, this also gets rid of an indirect include cycle that
could have broken compilation of Core.cpp in the future, since it was
relying on IPC network includes to resolve functions in Common/NandPaths.h.
This makes it easier to separate out the individual net classes in a
follow-up. Separating these out would also make it less of a pain to
figure out what's going on, since you wouldn't need to sift through 1000+
lines of code.i
This used an invalid pointer, which was only valid within AddFrame.
This drops a feature which shall dump the last frame as it might was dropped before.
A good implementation however should "overwrite" the last frame if the time matches.
But this needs to delay every frame a bit.