summaryrefslogtreecommitdiff
path: root/src/yuzu/main.cpp
AgeCommit message (Collapse)Author
2021-10-07discord_impl: Remove global system instanceslat9nq
2021-10-07game_list: Remove global instances of Core::Systemlat9nq
2021-10-07yuzu qt: Remove global system instances from config, WaitTree, mainlat9nq
2021-10-03Merge pull request #7111 from lat9nq/no-title-bar-versionbunnei
main: Don't add an extra separator when the title version is absent
2021-10-01yuzu: main: Register a callback for ExitMorph
2021-09-30main: Don't add an extra separator when the title version is absentlat9nq
Some titles, such as homebrew, do not have any version string. Because yuzu hard codes the title bar string assuming a version string is preset, booting homebrew causes yuzu to add an extra separator with no content between. This uses a lambda expression to prevent that from happening.
2021-09-18UI: Relocate tas menu and add brief descriptiongerman77
2021-09-18input_common/tas: new update methodgerman77
2021-09-18input_common/tas: Add swap controllergerman77
2021-09-18input_common/tas: overwrite file dialoggerman77
2021-09-18input_common/tas: Fallback to simple updateMonsterDruide1
2021-09-18config: Move TAS options to it's own menugerman77
2021-09-18core: Hacky TAS syncing & load pausingMonsterDruide1
To keep the TAS inputs synced to the game speed even through lag spikes and loading zones, deeper access is required. First, the `TAS::UpdateThread` has to be executed exactly once per frame. This is done by connecting it to the service method the game calls to pass parameters to the GPU: `Service::VI::QueueBuffer`. Second, the loading time of new subareas and/or kingdoms (SMO) can vary. To counteract that, the `CPU_BOOST_MODE` can be detected: In the `APM`-interface, the call to enabling/disabling the boost mode can be caught and forwarded to the TASing system, which can pause the script execution if neccessary and enabled in the settings.
2021-09-18main: TAS Playback state labelMonsterDruide1
During script playback/recording, the user has to see what happens currently. For that, a new label has been added to the bottom-left corner, always displaying the current state of the TASing system.
2021-09-18settings: File selector & other settingsMonsterDruide1
First of all, TASing requires a script to play back. The user can select the parent directory at `System -> Filesystem`, next to an option to pause TAS during loads: This requires a "hacky" setup deeper in the code and will be added in the last commit. Also, Hotkeys are being introduced: CTRL+F5 for playback start/stop, CTRL+F6 for re-reading the script and CTRL+F7 for recording a new script.
2021-09-18input_common/tas: Base playback & recording systemMonsterDruide1
The base playback system supports up to 8 controllers (specified by `PLAYER_NUMBER` in `tas_input.h`), which all change their inputs simulataneously when `TAS::UpdateThread` is called. The recording system uses the controller debugger to read the state of the first controller and forwards that data to the TASing system for recording. Currently, this process sadly is not frame-perfect and pixel-accurate. Co-authored-by: Naii-the-Baf <sfabian200@gmail.com> Co-authored-by: Narr-the-Reg <juangerman-13@hotmail.com>
2021-09-17Merge pull request #6950 from german77/multiplaybunnei
input_common: Add advanced setting for 8 player support
2021-09-12main: Apply confirm exit setting in exit locked scenariosameerj
Some titles set an exit lock through HLE, which prompts an exit confirmation when stopping emulation if the system is locked. This change allows bypassing this confirmation if the setting to confirm exits has been disabled by the user.
2021-09-10input_common: Enable steam controllers and 8 player supportgerman77
2021-08-24logging: Fix log filter during initializationameerj
The log filter was being ignored on initialization due to the logging instance being initialized before the config instance, so the log filter was set to its default value. This fixes that oversight, along with using descriptive exceptions instead of abort() calls.
2021-08-13logging: Simplify and make thread-safeyzct12345
This simplifies the logging system. This also fixes some lost messages on startup. The simplification is simple. I removed unused functions and moved most things in the .h to the .cpp. I replaced the unnecessary linked list with its contents laid out as three member variables. Anything that went through the linked list now directly accesses the backends. Generic functions are replaced with those for each specific use case and there aren't many. This change increases coupling but we gain back more KISS and encapsulation. With those changes it was easy to make it thread-safe. I just removed the mutex and turned a boolean atomic. I was planning to use this thread-safety in my next PR about stacktraces. It was actually async-signal-safety at first but I ended up using a different approach. Anyway getting rid of the linked list is important for that because have the list of backends constantly changing complicates things.
2021-08-07main: Avoid stopping emulation when taking a screenshotgerman77
2021-07-28Merge pull request #6700 from lat9nq/fullscreen-enumbunnei
general: Implement FullscreenMode enumeration
2021-07-26Merge pull request #6696 from ameerj/speed-limit-renamebunnei
general: Rename "Frame Limit" references to "Speed Limit"
2021-07-25Merge pull request #6697 from ameerj/fps-capbunnei
config, nvflinger: Add FPS cap setting
2021-07-25Merge branch 'master' into fullscreen-enumlat9nq
2021-07-25Merge pull request #6575 from FernandoS27/new_settingsbunnei
Settings: Eliminate ASYNC & MULTICORE Toggles and add GPU Accuracy to status bar
2021-07-25Merge pull request #6709 from ameerj/screenshot-pathMorph
main: Fix screenshot filepath construction
2021-07-25main: Fix screenshot filepath constructionameerj
The screenshot directory path returned does not have a trailing directory separator character. This caused screenshots to be saved in the parent directory of the configured screenshot directory. This fixes that behavior
2021-07-23general: Rename "Frame Limit" references to "Speed Limit"ameerj
This setting is best referred to as a speed limit, as it involves the limits of all timing based aspects of the emulator, not only framerate. This allows us to differentiate it from the fps unlocker setting.
2021-07-23config, nvflinger: Add FPS cap settingameerj
Allows finer tuning of the FPS limit.
2021-07-23general: Implement FullscreenMode enumerationlat9nq
Prevents us from using an unclear 0 or 1 to describe the fullscreen mode.
2021-07-22main: Update Shader Cache menu optionsameerj
This change adds two new context menu items to remove either the OpenGL or the Vulkan shader caches individually, and the provides the option to remove all caches for the selected title. This also changes the behavior of the open shader cache option. Now it creates the shader cache directory for the title if it does not yet exist.
2021-07-22main: Fix Open Transferable Shader Cache context itemameerj
Opens the new shader cache directory location for the specified title, if it exists.
2021-07-22vk_pipeline_cache,shader_notify: Add shader notificationsReinUsesLisp
2021-07-20file_sys: Support load game collection (#6582)Feng Chen
Adds support for loading games with multiple programs embedded within such as the Dragon Quest 1+2+3 Collection
2021-07-14applets: Append qt_ prefix to Qt frontend appletsMorph
2021-07-12Merge pull request #6574 from lioncash/i18nbunnei
qt/main: Make title string more i18n-friendly
2021-07-10settings: Disable FPS unlimit setting between title launchesameerj
Some titles crash if the FPS limit is disabled when launching. This change ensures that titles launch with the limit in-place to avoid issues. In order to simplify the change, the UI toggle was removed as it will always be overridden at launch to be disabled. The setting can still be toggled during gameplay with the hotkey, and indicated by the fps label in the status bar.
2021-07-09Update src/yuzu/main.cppFernando S
Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
2021-07-09Settings: Eliminate ASYNC & MULTICORE Toggles and add GPU Accuracy Toggle.Fernando Sahmkow
2021-07-08qt/main: Make title string more i18n-friendlyLioncash
Currently, whether or not the title is 32-bit or 64-bit was being appended as a suffix to the title, which is fine for left-to-right languages, but may not always fly so smoothly with some right-to-left languages. We also weren't marking that portion of the string as translatable, which prevents translators from translating part of the title string.
2021-07-08Merge pull request #6539 from lat9nq/default-settingAmeer J
general: Move most settings' defaults and labels into their definition
2021-06-29Merge pull request #6471 from lat9nq/dump-as-modMorph
yuzu qt, core: Support LayeredFS mods from SDMC directory
2021-06-28yuzu qt: Make most UISettings a BasicSettinglat9nq
For simple primitive settings, moves their defaults and labels to definition time. Also fixes typo and clang-format yuzu qt: config: Fix rng_seed
2021-06-28general: Make most settings a BasicSettinglat9nq
Creates a new BasicSettings class in common/settings, and forces setting a default and label for each setting that uses it in common/settings. Moves defaults and labels from both frontends into common settings. Creates a helper function in each frontend to facillitate reading the settings now with the new default and label properties. Settings::Setting is also now a subclass of Settings::BasicSetting. Also adds documentation for both Setting and BasicSetting.
2021-06-28Merge pull request #6502 from ameerj/vendor-titleMorph
main: Add GPU Vendor name to running title bar
2021-06-28patch_manager: Do not apply LayeredFS mods when dumpingMorph
We should not apply any mods when dumping a game's RomFS.
2021-06-28yuzu qt: Add option to dump to SDMC directorylat9nq
Enables dumping the RomFS to SDMC directory, specifically '[yuzu data directory]/sdmc/atmosphere/contents/[title_id]/romfs'.
2021-06-28main: Display the instruction set of the running title in the window nameameerj
Displays whether the currently running title uses 64-bit instructions or only 32-bit instructions.