* Add configurable extra memory
* lowercase getter and setter
* Refactor memory setup to configure maximum memory limits at runtime
* sir clang offnir, the all-formatting
* Correctly update BackingSize on W*ndows too
* small format change
* remove total_memory_to_use from the header
* i have no idea how to name this commit
"addressing review comments" is a good name i guess
* Do not include extraDmem in the general config
* Add support for restarting the emulator with new configurations
- Implement `Restart` function in `Emulator` to enable process relaunch with updated parameters.
- Modify `sceSystemServiceLoadExec` to use the restart functionality.
* Add logging for emulator restart and system service load execution
* Add IPC emulator PID output command
Impl `PID` output command to return the emulator process ID
- required for launches supporting emulator restart
* Add log file append mode support (used after restarting to keep the same log file)
* Keep game root between restarts
* add --wait-for-debugger option flag
* add --wait-for-pid flag
used for sync between parent & child process during restart
* impl restart via ipc
* fix override game root
* add qt flags to allow restart
* Logic update, no QT ui
* Fixing errors
* Gui boxes
* fixes
* prevent device list refreshing too fast when game not running
* Removed duplicate Socket declarations in kernel/file_system.cpp and fs.h
* Fixed clang-format and micDevice errors
* Ran clang-format and fixed rebase compiler issues
* Settings dialog fix
* Addressed squidbus' concerns
* Update config.cpp to adhere to clang-format
* Removed a space causing clang-format to complain
* Addressed squidbus' concerns and added fallbacks
Concerns:
- Changed dev_name construct to remove unnecessary cast
- Added an invalid AudioDeviceID macro to replace magic number
---------
Co-authored-by: rainmakerv2 <30595646+rainmakerv3@users.noreply.github.com>
* Group game-specific and non-game-specific items in the same tabs
* Fix rebase
* Transfer default settings tab to general, rename some items
* Fix experimental tab contents not filling the tab
* prevent saving game specific value if no valid value provided
* Fix console language saving, add error message if trying to save nullopt
* vk_rasterizer: Reorder image query in fast clear elimination
Fixes missing clears when a texture is being cleared using this method but never actually used for rendering purposes by ensuring the texture cache has at least a chance to register cmask
* shader_recompiler: Partial support for ANCILLARY_ENA
* pixel_format: Add number conversion of BC6 srgb format
* texture_cache: Support aliases of 3D and 2D array images
Used be UE to render its post processing LUT
* pixel_format: Test BC6 srgb as unorm
Still not sure what is up with snorm/unorm can be useful to have both actions to compare for now
* video_core: Use attachment feedback layout instead of general if possible
UE games often do mipgen passes where the previous mip of the image being rendered to is bound for reading. This appears to cause corruption issues so use attachment feedback loop extension to ensure correct output
* renderer_vulkan: Improve feedback loop code
* Set proper usage flag for feedback loop usage
* Add dynamic state extension and enable it for color aspect when necessary
* Check if image is bound instead of force_general for better code consistency
* shader_recompiler: More proper depth export implementation
* shader_recompiler: Fix bug in output modifiers
* shader_recompiler: Fix sampling from MSAA images
This is not allowed by any graphics API but seems hardware supports it somehow and it can be encountered. To avoid glitched output translate to to a texelFetch call on sample 0
* clang format
* image: Add back missing code
* shader_recompiler: Better ancillary implementation
Now is implemented with a custom attribute that is constant propagated depending on which parts of it are extracted. It will assert if an unknown part is used or if the attribute itself is not removed by dead code elim
* copy_shader: Ignore not enabled export channels
* constant_propagation: Invalidate ancillary after successful elimination
* spirv: Fix f11/f10 conversion to f32
---------
Co-authored-by: georgemoralis <giorgosmrls@gmail.com>
* Open settings dialog from context menu
* initial version complete
* add context menu item to delete game config if it exists
* Create game config from base value instead of default value
* Require confirmation before deleting game configs with menu item
* fix rebase
* Reset game specific values when creating a new game config
* Add icon for entries with game config
* clang format
* Add submenu for game-specific settings
* Log if game-specific config exists, remove hidden tab from tab selection
* Add other experimental options to game-specific GUI
* clang format
* Add flag to specify if game-specific file needs creation
* refactor: remove additional arguments, reset game-specific status on save instead
* Fix return
* cleanup - remove unneeded load
* Set tab to general if hidden tab is set as default
* Cleanup variable names and strings, default tab fix, volumeslider fix
* cleanup: missed a couple of variables to standardize
* More readable way to reset volume slider
* poc
* Set up variable game specific variable copies
* Set up getters to return the game specific option if it exists
* Avoid exceptions if a value isn't in the config
* Make sure the custom configs folder exists
* Update + review comments + rewrite
* The loathsome clang-formatter
* Specify which getter/setter is used everywhere
* This works, but it's missing some hotkeys and the GUI isn't hooked up to anything now
* More hotkeys
* Remove debug log
* clang
* accidentally used the wrong value here
* gui changes for new backend (#10)
* gui changes for new backend
* fix lmeta
* don't erase non-hotkey lines
* do not erase hotkey configs in kbm or controller guis
* Fix repeated inputs
* Documentation
---------
Co-authored-by: rainmakerv2 <30595646+rainmakerv3@users.noreply.github.com>
* Qt: Add FSR settings to settings GUI
* Move FSR settings from Imgui.ini to main config
* move passing fsr settings to presenter constuctor
* cleanup: use struct instead of function call
* cleanup: make variable names consistent with others
* Update fsr settings real-time in qt, save button in Imgui
* Linux build fix, missing running game check
* syntax fix
* Change gamerunning checks to if (presenter)
* libSceVrTracker stubs, structs, enums, and errors
* sceVrTrackerQueryMemory
* Clang and slight struct cleanup
* Implement sceVrTrackerInit
* Store memory pointers and sizes
Mainly for future developers, since I doubt these memory areas will be particularly useful for these stubs.
* sceVrTrackerRegisterDevice
I haven't really identified the difference between the two register device functions, but I do know that they both internally call the internal function with slightly different parameters.
* sceVrTrackerUnregisterDevice
Also changes Hmd and Move handles to be values closer to what real hardware returns, since this function seemingly relies on handles being different for all these device types.
* sceVrTrackerTerm
* Additional error checks in sceVrTrackerRegisterDeviceInternal
* sceVrTrackerGetTime
* sceVrTrackerRecalibrate
Recalibration succeeds on real hardware (at least for some device types), so I've left the stub log intact.
* Update vr_tracker.cpp
* sceVrTrackerSetDurationUntilStatusNotTracking stub
Only handled the error checks, so I left the stub log intact.
* sceVrTrackerGpu* functions
Most of these can't succeed without a camera attached.
* Initial work
* More work
* More stuff
* Update hmd.cpp
* Separate Reprojection and Distortion functions
Mainly doing this to clean up the code, since these sub-libraries are fairly self-contained.
* Fix weird Git issue
* Improve error documentation
After thorough decompilation, it seems clear that Sony didn't really put much thought into how libSceHmd behaves with no headset connected.
* Fix sceHmdGet2DEyeOffset
* Update hmd.cpp
* Add sceHmdInternalGetDeviceInformation and sceHmdInternalGetDeviceInformationByHandle
Based entirely off decompilation, these two functions are internally the cause of much of my trouble with this library.
They're also called by libSceVrTracker, but I don't think we'll be LLE'ing that anytime soon.
* Cleanup
* sceHmdGetAssyError
Struct isn't fully decompiled, but since it goes entirely unused when PSVR is disconnected, it doesn't matter too much.
I'm pretty certain it's 4 floats though, based on what I've decompiled of this function.
* More organization and fixes
* sceHmdGetInertialSensorData
Behavior should be fully accurate, but I've left the stub log since I haven't decompiled the parameters properly.
Also gave NID aTg7K0466r8 a proper name, based on what I've seen while decompiling. It behaves identically to sceHmdGetInertialSensorData, but with a slight difference in the params used for an internal function call.
* Update hmd.cpp
* Revert name change
* Organizational changes
These two functions modify internal variables used exclusively by reprojection functions.
* Remove internal device information calls
* Log PSVR-related attributes from param.sfo
Would mainly be helpful for compatibility list moderation, since these notices will be much more reliable for games that crash instantly.
* Remove unnecessary includes
* select
* select for windows
* fixed windows only function
* windows error converts
* fixed up
* fixed compile
* another implementation for windows
* draft rewrite for windows
* implementation for windows
* added some debugging info
* more debugging
* extensive log
* Windows: Add device files to output fd_sets
Cyberpunk 2077 breaks without this.
Also added some formatting changes, to bring the implementation closer to our typical coding standards.
* Clang
* Formatting + cleanup
Removed some excessive logging used for debugging, and did some cleanup on the non-Windows implementation.
---------
Co-authored-by: georgemoralis <giorgosmrls@gmail.com>
Co-authored-by: Stephen Miller <millerste004@gmail.com>
* initial commit - not cleanup yet, not usable with imGUI
* Ugly solution to working with ImGUI
* Populate the default controller labels
* Add remove default button
* missing tr calls
* edit imgui flag after updating
* Refactor
* Update sirit
* Add readback and readback linear image toggles to the settings window
* reuse and crowdin
* clang-format... my worst enemy...
* Experimental group box (#3)
* New Groupbox
* adjustments
* revised warning on experimental group box
---------
Co-authored-by: rainmakerv2 <30595646+rainmakerv3@users.noreply.github.com>
* Config entry isConnectedToNetwork
* Respect Config::isConnectedToNetwork when returning connection state
* Return connection status in NetCtlGetInfo
* Print connection data in log
* Use a config version constant to check for config updates
Should address the largest issue with the prior update logic, where configs with removed/additional entries will no longer force config updates on every emulator boot.
This also makes it easier to add config entries, since you don't need to keep track of how many entries you add, or how many entries you removed.
* Use git revision hash instead of constant
In exchange for updating configs on every update, this removes the need for PR authors to manually change a constant when adding new settings.
* texture_cache: Async download of GPU modified linear images
* liverpool: Back to less submits
* texture_cache: Don't download depth images
* config: Add option for linear image readback
* Organize settings and fix defaults
setDefaultValues was missing several rather important config options, and some of the defaults were inaccurate.
* Set alternative settings based on defaults
Reduces how many times we redefine the defaults for each setting.
I avoided changing behavior for installDirs and installDirsEnabled because I don't want to introduce any changes I can't easily test.
* Run save after loading to fill in missing config entries
A fix for the growing complaints about config files not updating when new settings are added.
Thanks to the prior changes, default settings are new properly defined everywhere, so running save here will properly fill in missing values with their expected defaults instead of the weird settings load would sometimes use.
* Clang
* Only update config when necessary
Instead of updating the config on each emulator boot, calculate the number of entries stored in the config and compare to a hardcoded constant.
If the config doesn't have the right number of entries, then regenerate it.
* Clang
* Clang
* Bit array test
* Some corrections
* Fix AVX path on SetRange
* Finish bitArray
* Batched protect progress
* Inclusion fix
* Last logic fixes for BitArray
* Page manager: batch protect, masked ranges
* Page manager bitarray
* clang-format
* Fix out of bounds read
* clang
* clang
* Lock during callbacks
* Rename untracked to writeable
* Construct and mask in one step
* Sync on region mutex for thw whole protection
This is a temporary workarround until a fix is found for the page manager having issues when multiple threads update the same page at the same time.
* Bring back the gpu masking until properly handled
* Sync page manager protections
* clang-format
* Rename and fixups
* I fucked up clang-formatting one more time...
* kek
* added recentFiles save/load
* gui language
* fixups for language
* fixed language issue with savedata (it was saving based on gui language and not on console language)
* clang fix
* elf dirs added
* added theme
* Fix rename
We shouldn't be leaving a copy of the original filename laying around.
This fixes one of a few broken savedata checks in DRAGON BALL XENOVERSE (CUSA01341)
* sceKernelWrite hack
Seems like std::fwrite has some weird edge cases we aren't handling properly.
Until we get to the bottom of this issue, here's a hack that bypasses it.
This fixes saves in DRAGON BALL XENOVERSE (CUSA01341)
* hack fix
* Improved "hack"
* Fix rename for Windows users
Turns out, we're using copy instead of rename for a reason, and that same reason came up when adding the remove call.
Also adds a log for the sceKernelWrite issue, since that's definitely a hack that needs to be debugged.
* A real fix for the sceKernelWrite issue
Turns out, some data was just buffered.
Running Flush fixes that problem.
* Move fflush call to WriteRaw
To prevent future cases of this issue.