* renderer_vulkan: Microoptimizations from profiling
* buffer_cache: Only use streaming path on cpu modified memory
If the pages arent cpu modified, then a gpu buffer with valid data exists that can be used instead
* clang format
* fix max num_layers
* Early memory regions setup
Needed to enable flexible allocations before mapping the eboot
* Improved accuracy of module mappings
To keep our current logic intact, reserve the full memory space, then perform fixed mappings for trampoline and segments. Segment mappings use type flexible, so they properly count toward flexible usage, while trampoline mappings use type code to bypass this.
* Asserts for failed offset finding
Always check before you leap.
* Hex logging for segment sizes
* Only map game modules to flex mem.
* Revert "Asserts for failed offset finding"
This reverts commit 38083f8cbb.
* Revert "Early memory regions setup"
This reverts commit da1552d4ac.
* Initialize memory regions in MemoryManager constructor
Much simpler approach to enabling the necessary flexible mappings on startup.
* replace psn_signed_in settings with shad_net_enabled and added shadnet_server setting
* improved user manager to update new fields and add new variables
* clang
* better message :D
* Replace sdl mixer library with minimp3 header
* clang
* set spec before putting in audiostream
* respect main audio output device setting
* fixup
* replace file with submodule
* cleanup
* capitalize functions like the others
* move buffer to heap
* use vector for pcm buffer instead
* fixed Unsynchronized free_threads.size()` Read in ThreadState::Free
* fixed data race in posix_pthread_key_create , allocated and seqno are atomic now
* fixed playtime thread
* argv array size fix
* destroy mutex on object deletion with pthread_mutex_destroy
* fixed object_pool
* used atomics for thread safety
* equeue: Save filter/ident before std:move since we access them out of the locked loop
* fixed kqueues memory leak
* clean storage objects effectively
* fixed memory leak
* fix some races
* fixed race condition
* multiple controllers v2
* the c language formatter tool
* review comments (the easy ones)
* c++ copy semantics
* correct error return for remotes without the system user id
* update pad handle handling logic
* controller override colour
* using new emulator_settings
* the default user is now just player one
* transfer install, addon dirs
* fix load custom config issue
* initial openal backend
* linux fix?
* camera module updated
---------
Co-authored-by: kalaposfos13 <153381648+kalaposfos13@users.noreply.github.com>
* using new emulator_settings
* the default user is now just player one
* transfer install, addon dirs
* fix load custom config issue
* initial openal backend
* linux fix?
---------
Co-authored-by: kalaposfos13 <153381648+kalaposfos13@users.noreply.github.com>
* using new emulator_settings
* the default user is now just player one
* transfer install, addon dirs
* fix load custom config issue
---------
Co-authored-by: kalaposfos13 <153381648+kalaposfos13@users.noreply.github.com>
* Test
* More robust logic for storing and freeing dummy data
Anything heap allocated is invalidated when the function returns. Use malloc to allocate the string instead, and make sure to free those allocations in sceSslFreeCaCerts.
Now that dynamic HLE loads happen after the eboot loads, HLEs for most "preload" modules wouldn't detect if you didn't have libSceRtc dumped. This was because, while we stored all the new symbols from the HLE lib, we weren't relocating loaded modules to use these symbols.
* improve signal emulation
* make the sce function use the new posix ones
* ifdefing away the issues
* fix me being very tired yesterday night
* let macOS handle SIGRT signals with the native sigaction call instead of an early error return
* windows still has no clue what the fuck is going on
* the loathsome clang-formatter
* fix oact
* return the guest handler, not the host one
* Clear any existing signal mask for game threads.
* don't rely on implementation specific things
* Fix Windows support and sceKernelRaiseException bug
* Review suggestions
@kalaposfos13 suggested I push these.
---------
Co-authored-by: Stephen Miller <56742918+StevenMiller123@users.noreply.github.com>
* Replace sysmodule enums with table
Dumped this from the 12.52 module, using a script I created.
* Better documentation
* Separate from system libraries
That system folder is going to be getting quite large if I left all the sysmodule stuff in there.
* More arrays from library
* Found another preload list
Ghidra really hates decompiling libSceSysmodule, so I didn't notice this one at first.
Also documented specific versions tied to each preload list.
* Start work on implementation
* Some basic implementations
* Initial stub for module loading
Just enough to see if the logic functions appropriately.
* Clang
* sceSysmoduleLoadModule
Now I need to get sceSysmodulePreloadModuleForLibkernel done so that we don't have bugs from not loading internal LLEs.
* sceSysmoduleLoadModuleInternal
* sceSysmodulePreloadModuleForLibkernel
I have successfully broken quite literally everything.
I shall debug this tomorrow.
* Slight fix
* Maybe fix?
* Change log
Enjoy the log spam 😄
* Increased defined stub count
Now that libc and libSceLibcInternal loads later, all the auto stubs are getting consumed by it.
* sceSysmoduleUnloadModule stub
Also a couple fixes. Sysmodule does pass argc and argv to game modules, but only after loading them once to check binaries.
Shouldn't matter for the most part.
* Clang
* Less stubs
2 thousand is seemingly enough.
* sceSysmoduleLoadModuleInternalWithArg
Doesn't hurt to have, since Apex Legends calls it.
* Oops
* Oops 2
* Rename isModuleLoaded to getModuleHandle
Review comment
* Remove debug game module loads
These cases only trigger when specific sceRegMgr key values are set, and for our purposes, we can treat that case as false.
* Allow preloading to fail
For kalaposfos
* Clang