Implements the auto map functionality for the GC adapter.
The controls map nicely to the original 3ds controls, with the select button being mapped to the Z button on GC.
The ZL/ZR buttons are not mapped by this feature.
This is a port of the initial GameCube adapter input support i added into yuzu emulator.
It requires the same setup as when it was first introduced in yuzu, requiring the Zadig driver be installed for the adapter to allow it to interface with libusb.
setMargin() has been deprecated since Qt 5, and replaced with
setContentsMargins(). We can move over to setContentsMargins() to stay
forward-compatible with Qt 6.0.
Co-Authored-By: LC <712067+lioncash@users.noreply.github.com>
Saves UISettings and Settings when booting a guest. Moves updating
UISettings::values from GMainWindow::closeEvent into its own function,
then reuses it in GMainWindow::BootGame.
Co-Authored-By: lat9nq <22451773+lat9nq@users.noreply.github.com>
* Implement the basics of controller auto mapping. From testing doesn't currenlty work.
Opening the controller requires the device index, but it is only known and guaranteed
at boot time or when a controller is connected.
* Use the SDL_INIT_GAMECONTROLLER flag to initialize the controller
subsystem. It automatically initializes the joystick subsystem too,
so SDL_INIT_JOYSTICK is not needed.
* Implement the SDLGameController class to handle open game controllers.
Based on the SDLJoystick implementation.
* Address review comments
* Changes SDLJoystick and SDLGameController to use a custom default
constructible destructor, to improve readability. The only deleters
used previously were SDL_JoystickClose and SDL_GameControllerClose,
respectively, plus null lambdas. Given that both SDL functions
accept null pointers with just an early return, this should be
functionally the same.
with just an early return
* warn the user when a controller mapping is not found
* Get axis direction and threshold from SDL_ExtendedGameControllerBind
* Reject analog bind if it's not axis, for the couple of examples present in SDL2.0.10's db.
Also add SDL_CONTROLLER_BINDTYPE_NONE for the button bind switch, with a better log message.
* sdl_impl.cpp: Log the error returned by SDL_GetError upon failure to open joystick
* sdl: only use extended binding on SDL2.0.6 and up
* sdl_impl.cpp: minor changes
* game_list: Eliminate redundant argument copies
Several functions can be taken by const reference to avoid copies
Co-Authored-By: LC <712067+lioncash@users.noreply.github.com>
* game_list: Make game list function naming consistent
Makes the naming consistent with the rest of the functions that are
present.
Co-Authored-By: LC <712067+lioncash@users.noreply.github.com>
Co-authored-by: Lioncash <mathew1800@gmail.com>
Co-authored-by: LC <712067+lioncash@users.noreply.github.com>
The feature wasn't working when the "single window mode" was off.
Changed the cursor setting to only affect the render_window and
moved to a signal/slot model to show the mouse.
* kernel/thread: Change owner_process to std::weak_ptr
Previously this leaked almost all kernel objects. In short, Threads own Processes which own HandleTables which own maps of Objects which include Threads.
Changing this to weak_ptr at least got the camera interfaces to destruct properly. Did not really check the other objects though, and I think there are probably more leaks.
* hle/kernel: Lock certain objects while deserializing
When deserializing other kernel objects, these objects (`MemoryRegion`s and `VMManager`s) can possibly get modified. To avoid inconsistent state caused by destructor side-effects, we may as well simply lock them until loading is fully completed.
* Fix silly typo
Somehow this didn't break?!
* Enable 'Accurate Multiplication' by default.
* Move 'Disk Shader Cache' to the 'Advanced' tab
* Prevent enabling 'Disk Shader Cache' when 'Enable Hardware Shader' or 'Accurate Multiplication' is disabled.
* Do not load 'Disk Shader Cache' when 'Accurate Multiplication' is disabled.
* Add a tooltip for 'Disk Shader Cache'.
* Forward declare ui and use unique_ptr
* ConfigureEnhancements: use unique_ptr for ui
* Use make_unique instead of new where applicable
* Move some of the ui includes that already used unique_ptr
* main.cpp: also make use of make_unique on Config
* Address review comments
The list of points is returned by const reference, so we don't need to
make a copy of every element in the list.
Co-authored-by: Lioncash <mathew1800@gmail.com>