gitextract_k8dejx2r/ ├── .ci/ │ └── clang-format.sh ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── app-bug-report.yaml │ │ ├── config.yml │ │ ├── feature-request.yaml │ │ ├── game-bug-report.yaml │ │ └── rfc.yaml │ ├── linux-appimage-sdl.sh │ └── workflows/ │ └── build.yml ├── .gitignore ├── .gitmodules ├── CMakeDarwinPresets.json ├── CMakeLinuxPresets.json ├── CMakeLists.txt ├── CMakePresets.json ├── CMakeSettings.json ├── CMakeWindowsPresets.json ├── CONTRIBUTING.md ├── LICENSE ├── LICENSES/ │ ├── BSD-3-Clause.txt │ ├── BSL-1.0.txt │ ├── CC0-1.0.txt │ ├── GPL-2.0-or-later.txt │ ├── MIT.txt │ └── OFL-1.1.txt ├── README.md ├── REUSE.toml ├── cmake/ │ ├── CMakeRC.cmake │ ├── FindFFmpeg.cmake │ ├── FindRenderDoc.cmake │ ├── Findhalf.cmake │ ├── Findlibusb.cmake │ ├── Findstb.cmake │ └── FindxxHash.cmake ├── dist/ │ ├── MacOSBundleInfo.plist.in │ ├── net.shadps4.shadPS4.desktop │ ├── net.shadps4.shadPS4.metainfo.xml │ └── net.shadps4.shadPS4_metadata.pot ├── documents/ │ ├── Debugging/ │ │ └── Debugging.md │ ├── Docker Builder/ │ │ ├── .devcontainer/ │ │ │ └── devcontainer.json │ │ ├── .docker/ │ │ │ └── Dockerfile │ │ └── docker-compose.yml │ ├── building-docker.md │ ├── building-linux.md │ ├── building-macos.md │ ├── building-windows.md │ ├── changelog.md │ └── patching-shader.md ├── externals/ │ ├── CMakeLists.txt │ ├── aacdec/ │ │ └── CMakeLists.txt │ ├── cmake-modules/ │ │ ├── GetGitRevisionDescription.cmake │ │ └── GetGitRevisionDescription.cmake.in │ ├── gcn/ │ │ ├── CMakeLists.txt │ │ └── include/ │ │ └── gcn/ │ │ ├── si_ci_vi_merged_offset.h │ │ └── si_ci_vi_merged_pm4_it_opcodes.h │ ├── renderdoc/ │ │ └── renderdoc_app.h │ └── stb/ │ └── stb_image.h ├── scripts/ │ ├── aerolib.inl │ ├── file_formats/ │ │ └── sfo.hexpat │ ├── ps4_names.txt │ └── ps4_names2stubs.py ├── shell.nix └── src/ ├── .clang-format ├── common/ │ ├── adaptive_mutex.h │ ├── aes.h │ ├── alignment.h │ ├── arch.h │ ├── assert.cpp │ ├── assert.h │ ├── bit_array.h │ ├── bit_field.h │ ├── bounded_threadsafe_queue.h │ ├── concepts.h │ ├── config.cpp │ ├── config.h │ ├── cstring.h │ ├── debug.h │ ├── decoder.cpp │ ├── decoder.h │ ├── discord_rpc_handler.cpp │ ├── discord_rpc_handler.h │ ├── div_ceil.h │ ├── elf_info.h │ ├── endian.h │ ├── enum.h │ ├── error.cpp │ ├── error.h │ ├── fixed_value.h │ ├── func_traits.h │ ├── hash.h │ ├── io_file.cpp │ ├── io_file.h │ ├── key_manager.cpp │ ├── key_manager.h │ ├── logging/ │ │ ├── backend.cpp │ │ ├── backend.h │ │ ├── filter.cpp │ │ ├── filter.h │ │ ├── formatter.h │ │ ├── log.h │ │ ├── log_entry.h │ │ ├── text_formatter.cpp │ │ ├── text_formatter.h │ │ └── types.h │ ├── lru_cache.h │ ├── memory_patcher.cpp │ ├── memory_patcher.h │ ├── native_clock.cpp │ ├── native_clock.h │ ├── ntapi.cpp │ ├── ntapi.h │ ├── number_utils.cpp │ ├── number_utils.h │ ├── object_pool.h │ ├── path_util.cpp │ ├── path_util.h │ ├── polyfill_thread.h │ ├── range_lock.h │ ├── rdtsc.cpp │ ├── rdtsc.h │ ├── recursive_lock.cpp │ ├── recursive_lock.h │ ├── scm_rev.cpp.in │ ├── scm_rev.h │ ├── scope_exit.h │ ├── serdes.h │ ├── sha1.h │ ├── shared_first_mutex.h │ ├── signal_context.cpp │ ├── signal_context.h │ ├── singleton.h │ ├── slab_heap.h │ ├── slot_array.h │ ├── slot_vector.h │ ├── spin_lock.cpp │ ├── spin_lock.h │ ├── stb.cpp │ ├── stb.h │ ├── string_literal.h │ ├── string_util.cpp │ ├── string_util.h │ ├── support/ │ │ └── avdec.h │ ├── thread.cpp │ ├── thread.h │ ├── types.h │ ├── uint128.h │ ├── unique_function.h │ └── va_ctx.h ├── core/ │ ├── address_space.cpp │ ├── address_space.h │ ├── aerolib/ │ │ ├── aerolib.cpp │ │ ├── aerolib.h │ │ ├── aerolib.inl │ │ ├── stubs.cpp │ │ └── stubs.h │ ├── cpu_patches.cpp │ ├── cpu_patches.h │ ├── debug_state.cpp │ ├── debug_state.h │ ├── debugger.cpp │ ├── debugger.h │ ├── devtools/ │ │ ├── gcn/ │ │ │ ├── gcn_context_regs.cpp │ │ │ ├── gcn_op_names.cpp │ │ │ └── gcn_shader_regs.cpp │ │ ├── help.txt │ │ ├── layer.cpp │ │ ├── layer.h │ │ ├── layer_extra.cpp │ │ ├── options.cpp │ │ ├── options.h │ │ └── widget/ │ │ ├── cmd_list.cpp │ │ ├── cmd_list.h │ │ ├── common.h │ │ ├── frame_dump.cpp │ │ ├── frame_dump.h │ │ ├── frame_graph.cpp │ │ ├── frame_graph.h │ │ ├── imgui_memory_editor.h │ │ ├── memory_map.cpp │ │ ├── memory_map.h │ │ ├── module_list.cpp │ │ ├── module_list.h │ │ ├── reg_popup.cpp │ │ ├── reg_popup.h │ │ ├── reg_view.cpp │ │ ├── reg_view.h │ │ ├── shader_list.cpp │ │ ├── shader_list.h │ │ ├── text_editor.cpp │ │ └── text_editor.h │ ├── emulator_state.cpp │ ├── emulator_state.h │ ├── file_format/ │ │ ├── npbind.cpp │ │ ├── npbind.h │ │ ├── pfs.h │ │ ├── playgo_chunk.cpp │ │ ├── playgo_chunk.h │ │ ├── psf.cpp │ │ ├── psf.h │ │ ├── trp.cpp │ │ └── trp.h │ ├── file_sys/ │ │ ├── devices/ │ │ │ ├── base_device.cpp │ │ │ ├── base_device.h │ │ │ ├── console_device.cpp │ │ │ ├── console_device.h │ │ │ ├── deci_tty6_device.cpp │ │ │ ├── deci_tty6_device.h │ │ │ ├── ioccom.h │ │ │ ├── logger.cpp │ │ │ ├── logger.h │ │ │ ├── nop_device.h │ │ │ ├── random_device.cpp │ │ │ ├── random_device.h │ │ │ ├── rng_device.cpp │ │ │ ├── rng_device.h │ │ │ ├── srandom_device.cpp │ │ │ ├── srandom_device.h │ │ │ ├── urandom_device.cpp │ │ │ └── urandom_device.h │ │ ├── directories/ │ │ │ ├── base_directory.cpp │ │ │ ├── base_directory.h │ │ │ ├── normal_directory.cpp │ │ │ ├── normal_directory.h │ │ │ ├── pfs_directory.cpp │ │ │ └── pfs_directory.h │ │ ├── file.cpp │ │ ├── fs.cpp │ │ └── fs.h │ ├── ipc/ │ │ ├── ipc.cpp │ │ └── ipc.h │ ├── libraries/ │ │ ├── ajm/ │ │ │ ├── ajm.cpp │ │ │ ├── ajm.h │ │ │ ├── ajm_aac.cpp │ │ │ ├── ajm_aac.h │ │ │ ├── ajm_at9.cpp │ │ │ ├── ajm_at9.h │ │ │ ├── ajm_batch.cpp │ │ │ ├── ajm_batch.h │ │ │ ├── ajm_context.cpp │ │ │ ├── ajm_context.h │ │ │ ├── ajm_error.h │ │ │ ├── ajm_instance.cpp │ │ │ ├── ajm_instance.h │ │ │ ├── ajm_instance_statistics.cpp │ │ │ ├── ajm_instance_statistics.h │ │ │ ├── ajm_mp3.cpp │ │ │ ├── ajm_mp3.h │ │ │ └── ajm_result.h │ │ ├── app_content/ │ │ │ ├── app_content.cpp │ │ │ ├── app_content.h │ │ │ └── app_content_error.h │ │ ├── audio/ │ │ │ ├── audioin.cpp │ │ │ ├── audioin.h │ │ │ ├── audioin_backend.h │ │ │ ├── audioin_error.h │ │ │ ├── audioout.cpp │ │ │ ├── audioout.h │ │ │ ├── audioout_backend.h │ │ │ ├── audioout_error.h │ │ │ ├── sdl_audio_in.cpp │ │ │ └── sdl_audio_out.cpp │ │ ├── audio3d/ │ │ │ ├── audio3d.cpp │ │ │ ├── audio3d.h │ │ │ └── audio3d_error.h │ │ ├── avplayer/ │ │ │ ├── avplayer.cpp │ │ │ ├── avplayer.h │ │ │ ├── avplayer_common.cpp │ │ │ ├── avplayer_common.h │ │ │ ├── avplayer_data_streamer.h │ │ │ ├── avplayer_error.h │ │ │ ├── avplayer_file_streamer.cpp │ │ │ ├── avplayer_file_streamer.h │ │ │ ├── avplayer_impl.cpp │ │ │ ├── avplayer_impl.h │ │ │ ├── avplayer_source.cpp │ │ │ ├── avplayer_source.h │ │ │ ├── avplayer_state.cpp │ │ │ └── avplayer_state.h │ │ ├── camera/ │ │ │ ├── camera.cpp │ │ │ ├── camera.h │ │ │ └── camera_error.h │ │ ├── companion/ │ │ │ ├── companion_error.h │ │ │ ├── companion_httpd.cpp │ │ │ ├── companion_httpd.h │ │ │ ├── companion_util.cpp │ │ │ └── companion_util.h │ │ ├── disc_map/ │ │ │ ├── disc_map.cpp │ │ │ ├── disc_map.h │ │ │ └── disc_map_codes.h │ │ ├── error_codes.h │ │ ├── fiber/ │ │ │ ├── fiber.cpp │ │ │ ├── fiber.h │ │ │ ├── fiber_context.s │ │ │ └── fiber_error.h │ │ ├── font/ │ │ │ ├── font.cpp │ │ │ ├── font.h │ │ │ ├── font_error.h │ │ │ ├── fontft.cpp │ │ │ └── fontft.h │ │ ├── game_live_streaming/ │ │ │ ├── gamelivestreaming.cpp │ │ │ └── gamelivestreaming.h │ │ ├── gnmdriver/ │ │ │ ├── gnm_error.h │ │ │ ├── gnmdriver.cpp │ │ │ ├── gnmdriver.h │ │ │ └── gnmdriver_init.h │ │ ├── hmd/ │ │ │ ├── hmd.cpp │ │ │ ├── hmd.h │ │ │ ├── hmd_distortion.cpp │ │ │ ├── hmd_error.h │ │ │ ├── hmd_reprojection.cpp │ │ │ ├── hmd_setup_dialog.cpp │ │ │ └── hmd_setup_dialog.h │ │ ├── ime/ │ │ │ ├── error_dialog.cpp │ │ │ ├── error_dialog.h │ │ │ ├── ime.cpp │ │ │ ├── ime.h │ │ │ ├── ime_common.h │ │ │ ├── ime_dialog.cpp │ │ │ ├── ime_dialog.h │ │ │ ├── ime_dialog_ui.cpp │ │ │ ├── ime_dialog_ui.h │ │ │ ├── ime_error.h │ │ │ ├── ime_ui.cpp │ │ │ └── ime_ui.h │ │ ├── jpeg/ │ │ │ ├── jpeg_error.h │ │ │ ├── jpegenc.cpp │ │ │ └── jpegenc.h │ │ ├── kernel/ │ │ │ ├── aio.cpp │ │ │ ├── aio.h │ │ │ ├── debug.cpp │ │ │ ├── debug.h │ │ │ ├── equeue.cpp │ │ │ ├── equeue.h │ │ │ ├── file_system.cpp │ │ │ ├── file_system.h │ │ │ ├── kernel.cpp │ │ │ ├── kernel.h │ │ │ ├── memory.cpp │ │ │ ├── memory.h │ │ │ ├── orbis_error.h │ │ │ ├── posix_error.h │ │ │ ├── process.cpp │ │ │ ├── process.h │ │ │ ├── sync/ │ │ │ │ ├── mutex.cpp │ │ │ │ ├── mutex.h │ │ │ │ └── semaphore.h │ │ │ ├── threads/ │ │ │ │ ├── condvar.cpp │ │ │ │ ├── event_flag.cpp │ │ │ │ ├── exception.cpp │ │ │ │ ├── exception.h │ │ │ │ ├── mutex.cpp │ │ │ │ ├── pthread.cpp │ │ │ │ ├── pthread.h │ │ │ │ ├── pthread_attr.cpp │ │ │ │ ├── pthread_clean.cpp │ │ │ │ ├── pthread_spec.cpp │ │ │ │ ├── rwlock.cpp │ │ │ │ ├── semaphore.cpp │ │ │ │ ├── sleepq.cpp │ │ │ │ ├── sleepq.h │ │ │ │ ├── stack.cpp │ │ │ │ ├── tcb.cpp │ │ │ │ ├── thread_state.cpp │ │ │ │ └── thread_state.h │ │ │ ├── threads.cpp │ │ │ ├── threads.h │ │ │ ├── time.cpp │ │ │ └── time.h │ │ ├── libc_internal/ │ │ │ ├── libc_internal.cpp │ │ │ ├── libc_internal.h │ │ │ ├── libc_internal_io.cpp │ │ │ ├── libc_internal_io.h │ │ │ ├── libc_internal_math.cpp │ │ │ ├── libc_internal_math.h │ │ │ ├── libc_internal_memory.cpp │ │ │ ├── libc_internal_memory.h │ │ │ ├── libc_internal_str.cpp │ │ │ ├── libc_internal_str.h │ │ │ ├── libc_internal_threads.cpp │ │ │ ├── libc_internal_threads.h │ │ │ └── printf.h │ │ ├── libpng/ │ │ │ ├── pngdec.cpp │ │ │ ├── pngdec.h │ │ │ ├── pngdec_error.h │ │ │ ├── pngenc.cpp │ │ │ ├── pngenc.h │ │ │ └── pngenc_error.h │ │ ├── libs.cpp │ │ ├── libs.h │ │ ├── mouse/ │ │ │ ├── mouse.cpp │ │ │ └── mouse.h │ │ ├── move/ │ │ │ ├── move.cpp │ │ │ ├── move.h │ │ │ └── move_error.h │ │ ├── network/ │ │ │ ├── http.cpp │ │ │ ├── http.h │ │ │ ├── http2.cpp │ │ │ ├── http2.h │ │ │ ├── http_error.h │ │ │ ├── net.cpp │ │ │ ├── net.h │ │ │ ├── net_ctl_codes.h │ │ │ ├── net_ctl_obj.cpp │ │ │ ├── net_ctl_obj.h │ │ │ ├── net_epoll.cpp │ │ │ ├── net_epoll.h │ │ │ ├── net_error.h │ │ │ ├── net_obj.cpp │ │ │ ├── net_obj.h │ │ │ ├── net_resolver.cpp │ │ │ ├── net_resolver.h │ │ │ ├── net_util.cpp │ │ │ ├── net_util.h │ │ │ ├── netctl.cpp │ │ │ ├── netctl.h │ │ │ ├── p2p_sockets.cpp │ │ │ ├── posix_sockets.cpp │ │ │ ├── sockets.h │ │ │ ├── ssl.cpp │ │ │ ├── ssl.h │ │ │ ├── ssl2.cpp │ │ │ ├── ssl2.h │ │ │ ├── ssl2_error.h │ │ │ ├── sys_net.cpp │ │ │ ├── sys_net.h │ │ │ └── unix_sockets.cpp │ │ ├── ngs2/ │ │ │ ├── ngs2.cpp │ │ │ ├── ngs2.h │ │ │ ├── ngs2_custom.cpp │ │ │ ├── ngs2_custom.h │ │ │ ├── ngs2_eq.cpp │ │ │ ├── ngs2_eq.h │ │ │ ├── ngs2_error.h │ │ │ ├── ngs2_geom.cpp │ │ │ ├── ngs2_geom.h │ │ │ ├── ngs2_impl.cpp │ │ │ ├── ngs2_impl.h │ │ │ ├── ngs2_mastering.cpp │ │ │ ├── ngs2_mastering.h │ │ │ ├── ngs2_pan.cpp │ │ │ ├── ngs2_pan.h │ │ │ ├── ngs2_report.cpp │ │ │ ├── ngs2_report.h │ │ │ ├── ngs2_reverb.cpp │ │ │ ├── ngs2_reverb.h │ │ │ ├── ngs2_sampler.cpp │ │ │ ├── ngs2_sampler.h │ │ │ ├── ngs2_submixer.cpp │ │ │ └── ngs2_submixer.h │ │ ├── np/ │ │ │ ├── np_auth.cpp │ │ │ ├── np_auth.h │ │ │ ├── np_auth_error.h │ │ │ ├── np_commerce.cpp │ │ │ ├── np_commerce.h │ │ │ ├── np_common.cpp │ │ │ ├── np_common.h │ │ │ ├── np_common_error.h │ │ │ ├── np_error.h │ │ │ ├── np_manager.cpp │ │ │ ├── np_manager.h │ │ │ ├── np_matching2.cpp │ │ │ ├── np_matching2.h │ │ │ ├── np_partner.cpp │ │ │ ├── np_partner.h │ │ │ ├── np_partner_error.h │ │ │ ├── np_party.cpp │ │ │ ├── np_party.h │ │ │ ├── np_party_error.h │ │ │ ├── np_profile_dialog.cpp │ │ │ ├── np_profile_dialog.h │ │ │ ├── np_score.cpp │ │ │ ├── np_score.h │ │ │ ├── np_sns_facebook_dialog.cpp │ │ │ ├── np_sns_facebook_dialog.h │ │ │ ├── np_trophy.cpp │ │ │ ├── np_trophy.h │ │ │ ├── np_trophy_error.h │ │ │ ├── np_tus.cpp │ │ │ ├── np_tus.h │ │ │ ├── np_types.h │ │ │ ├── np_web_api.cpp │ │ │ ├── np_web_api.h │ │ │ ├── np_web_api2.cpp │ │ │ ├── np_web_api2.h │ │ │ ├── np_web_api2_error.h │ │ │ ├── np_web_api_error.h │ │ │ ├── np_web_api_internal.cpp │ │ │ ├── np_web_api_internal.h │ │ │ ├── object_manager.h │ │ │ ├── trophy_ui.cpp │ │ │ └── trophy_ui.h │ │ ├── pad/ │ │ │ ├── pad.cpp │ │ │ ├── pad.h │ │ │ └── pad_errors.h │ │ ├── playgo/ │ │ │ ├── playgo.cpp │ │ │ ├── playgo.h │ │ │ ├── playgo_dialog.cpp │ │ │ ├── playgo_dialog.h │ │ │ └── playgo_types.h │ │ ├── random/ │ │ │ ├── random.cpp │ │ │ ├── random.h │ │ │ └── random_error.h │ │ ├── razor_cpu/ │ │ │ ├── razor_cpu.cpp │ │ │ └── razor_cpu.h │ │ ├── remote_play/ │ │ │ ├── remoteplay.cpp │ │ │ └── remoteplay.h │ │ ├── rtc/ │ │ │ ├── rtc.cpp │ │ │ ├── rtc.h │ │ │ └── rtc_error.h │ │ ├── rudp/ │ │ │ ├── rudp.cpp │ │ │ └── rudp.h │ │ ├── save_data/ │ │ │ ├── dialog/ │ │ │ │ ├── savedatadialog.cpp │ │ │ │ ├── savedatadialog.h │ │ │ │ ├── savedatadialog_ui.cpp │ │ │ │ └── savedatadialog_ui.h │ │ │ ├── save_backup.cpp │ │ │ ├── save_backup.h │ │ │ ├── save_instance.cpp │ │ │ ├── save_instance.h │ │ │ ├── save_memory.cpp │ │ │ ├── save_memory.h │ │ │ ├── savedata.cpp │ │ │ ├── savedata.h │ │ │ └── savedata_error.h │ │ ├── screenshot/ │ │ │ ├── screenshot.cpp │ │ │ └── screenshot.h │ │ ├── share_play/ │ │ │ ├── shareplay.cpp │ │ │ └── shareplay.h │ │ ├── signin_dialog/ │ │ │ ├── signindialog.cpp │ │ │ └── signindialog.h │ │ ├── sysmodule/ │ │ │ ├── sysmodule.cpp │ │ │ ├── sysmodule.h │ │ │ ├── sysmodule_error.h │ │ │ ├── sysmodule_internal.cpp │ │ │ ├── sysmodule_internal.h │ │ │ └── sysmodule_table.h │ │ ├── system/ │ │ │ ├── commondialog.cpp │ │ │ ├── commondialog.h │ │ │ ├── msgdialog.cpp │ │ │ ├── msgdialog.h │ │ │ ├── msgdialog_ui.cpp │ │ │ ├── msgdialog_ui.h │ │ │ ├── posix.cpp │ │ │ ├── posix.h │ │ │ ├── systemservice.cpp │ │ │ ├── systemservice.h │ │ │ ├── systemservice_error.h │ │ │ ├── userservice.cpp │ │ │ ├── userservice.h │ │ │ └── userservice_error.h │ │ ├── system_gesture/ │ │ │ ├── system_gesture.cpp │ │ │ └── system_gesture.h │ │ ├── ulobjmgr/ │ │ │ ├── ulobjmgr.cpp │ │ │ └── ulobjmgr.h │ │ ├── usbd/ │ │ │ ├── emulated/ │ │ │ │ ├── dimensions.cpp │ │ │ │ ├── dimensions.h │ │ │ │ ├── infinity.cpp │ │ │ │ ├── infinity.h │ │ │ │ ├── skylander.cpp │ │ │ │ └── skylander.h │ │ │ ├── usb_backend.h │ │ │ ├── usbd.cpp │ │ │ └── usbd.h │ │ ├── videodec/ │ │ │ ├── videodec.cpp │ │ │ ├── videodec.h │ │ │ ├── videodec2.cpp │ │ │ ├── videodec2.h │ │ │ ├── videodec2_avc.h │ │ │ ├── videodec2_impl.cpp │ │ │ ├── videodec2_impl.h │ │ │ ├── videodec_error.h │ │ │ ├── videodec_impl.cpp │ │ │ └── videodec_impl.h │ │ ├── videoout/ │ │ │ ├── buffer.h │ │ │ ├── driver.cpp │ │ │ ├── driver.h │ │ │ ├── video_out.cpp │ │ │ ├── video_out.h │ │ │ └── videoout_error.h │ │ ├── voice/ │ │ │ ├── voice.cpp │ │ │ └── voice.h │ │ ├── vr_tracker/ │ │ │ ├── vr_tracker.cpp │ │ │ ├── vr_tracker.h │ │ │ └── vr_tracker_error.h │ │ ├── web_browser_dialog/ │ │ │ ├── webbrowserdialog.cpp │ │ │ └── webbrowserdialog.h │ │ └── zlib/ │ │ ├── zlib.cpp │ │ ├── zlib_error.h │ │ └── zlib_sce.h │ ├── linker.cpp │ ├── linker.h │ ├── loader/ │ │ ├── dwarf.cpp │ │ ├── dwarf.h │ │ ├── elf.cpp │ │ ├── elf.h │ │ ├── symbols_resolver.cpp │ │ └── symbols_resolver.h │ ├── memory.cpp │ ├── memory.h │ ├── module.cpp │ ├── module.h │ ├── platform.h │ ├── signals.cpp │ ├── signals.h │ ├── thread.cpp │ ├── thread.h │ ├── tls.cpp │ └── tls.h ├── emulator.cpp ├── emulator.h ├── images/ │ └── shadPS4.icns ├── imgui/ │ ├── imgui_config.h │ ├── imgui_layer.h │ ├── imgui_std.h │ ├── imgui_texture.h │ └── renderer/ │ ├── CMakeLists.txt │ ├── imgui_core.cpp │ ├── imgui_core.h │ ├── imgui_impl_sdl3.cpp │ ├── imgui_impl_sdl3.h │ ├── imgui_impl_vulkan.cpp │ ├── imgui_impl_vulkan.h │ ├── texture_manager.cpp │ └── texture_manager.h ├── input/ │ ├── controller.cpp │ ├── controller.h │ ├── input_handler.cpp │ ├── input_handler.h │ ├── input_mouse.cpp │ └── input_mouse.h ├── main.cpp ├── sdl_window.cpp ├── sdl_window.h ├── shader_recompiler/ │ ├── backend/ │ │ ├── bindings.h │ │ └── spirv/ │ │ ├── emit_spirv.cpp │ │ ├── emit_spirv.h │ │ ├── emit_spirv_atomic.cpp │ │ ├── emit_spirv_barriers.cpp │ │ ├── emit_spirv_bitwise_conversion.cpp │ │ ├── emit_spirv_bounds.h │ │ ├── emit_spirv_composite.cpp │ │ ├── emit_spirv_context_get_set.cpp │ │ ├── emit_spirv_convert.cpp │ │ ├── emit_spirv_floating_point.cpp │ │ ├── emit_spirv_image.cpp │ │ ├── emit_spirv_instructions.h │ │ ├── emit_spirv_integer.cpp │ │ ├── emit_spirv_logical.cpp │ │ ├── emit_spirv_quad_rect.cpp │ │ ├── emit_spirv_quad_rect.h │ │ ├── emit_spirv_select.cpp │ │ ├── emit_spirv_shared_memory.cpp │ │ ├── emit_spirv_special.cpp │ │ ├── emit_spirv_undefined.cpp │ │ ├── emit_spirv_warp.cpp │ │ ├── spirv_emit_context.cpp │ │ └── spirv_emit_context.h │ ├── frontend/ │ │ ├── control_flow_graph.cpp │ │ ├── control_flow_graph.h │ │ ├── copy_shader.cpp │ │ ├── copy_shader.h │ │ ├── decode.cpp │ │ ├── decode.h │ │ ├── fetch_shader.cpp │ │ ├── fetch_shader.h │ │ ├── format.cpp │ │ ├── instruction.cpp │ │ ├── instruction.h │ │ ├── opcodes.h │ │ ├── structured_control_flow.cpp │ │ ├── structured_control_flow.h │ │ ├── tessellation.h │ │ └── translate/ │ │ ├── data_share.cpp │ │ ├── export.cpp │ │ ├── scalar_alu.cpp │ │ ├── scalar_flow.cpp │ │ ├── scalar_memory.cpp │ │ ├── translate.cpp │ │ ├── translate.h │ │ ├── vector_alu.cpp │ │ ├── vector_interpolation.cpp │ │ └── vector_memory.cpp │ ├── info.h │ ├── ir/ │ │ ├── abstract_syntax_list.cpp │ │ ├── abstract_syntax_list.h │ │ ├── attribute.cpp │ │ ├── attribute.h │ │ ├── basic_block.cpp │ │ ├── basic_block.h │ │ ├── breadth_first_search.h │ │ ├── condition.h │ │ ├── debug_print.h │ │ ├── ir_emitter.cpp │ │ ├── ir_emitter.h │ │ ├── microinstruction.cpp │ │ ├── opcodes.cpp │ │ ├── opcodes.h │ │ ├── opcodes.inc │ │ ├── operand_helper.h │ │ ├── passes/ │ │ │ ├── constant_propagation_pass.cpp │ │ │ ├── constant_propogation.h │ │ │ ├── dead_code_elimination_pass.cpp │ │ │ ├── flatten_extended_userdata_pass.cpp │ │ │ ├── hull_shader_transform.cpp │ │ │ ├── identity_removal_pass.cpp │ │ │ ├── inject_clip_distance_attributes.cpp │ │ │ ├── ir_passes.h │ │ │ ├── lower_buffer_format_to_raw.cpp │ │ │ ├── lower_fp64_to_fp32.cpp │ │ │ ├── readlane_elimination_pass.cpp │ │ │ ├── resource_tracking_pass.cpp │ │ │ ├── ring_access_elimination.cpp │ │ │ ├── shader_info_collection_pass.cpp │ │ │ ├── shared_memory_barrier_pass.cpp │ │ │ ├── shared_memory_simplify_pass.cpp │ │ │ ├── shared_memory_to_storage_pass.cpp │ │ │ ├── srt.h │ │ │ └── ssa_rewrite_pass.cpp │ │ ├── patch.cpp │ │ ├── patch.h │ │ ├── pattern_matching.h │ │ ├── position.h │ │ ├── post_order.cpp │ │ ├── post_order.h │ │ ├── program.cpp │ │ ├── program.h │ │ ├── reg.h │ │ ├── reinterpret.h │ │ ├── srt_gvn_table.h │ │ ├── type.cpp │ │ ├── type.h │ │ ├── value.cpp │ │ └── value.h │ ├── params.h │ ├── profile.h │ ├── recompiler.cpp │ ├── recompiler.h │ ├── resource.h │ ├── runtime_info.h │ └── specialization.h ├── shadps4.rc └── video_core/ ├── amdgpu/ │ ├── cb_db_extent.h │ ├── liverpool.cpp │ ├── liverpool.h │ ├── pixel_format.cpp │ ├── pixel_format.h │ ├── pm4_cmds.h │ ├── pm4_opcodes.h │ ├── regs.cpp │ ├── regs.h │ ├── regs_color.h │ ├── regs_depth.h │ ├── regs_primitive.h │ ├── regs_shader.h │ ├── regs_texture.h │ ├── regs_vertex.h │ ├── resource.h │ ├── tiling.cpp │ └── tiling.h ├── buffer_cache/ │ ├── buffer.cpp │ ├── buffer.h │ ├── buffer_cache.cpp │ ├── buffer_cache.h │ ├── fault_manager.cpp │ ├── fault_manager.h │ ├── memory_tracker.h │ ├── range_set.h │ ├── region_definitions.h │ └── region_manager.h ├── cache_storage.cpp ├── cache_storage.h ├── host_shaders/ │ ├── CMakeLists.txt │ ├── StringShaderHeader.cmake │ ├── color_to_ms_depth.frag │ ├── detilers/ │ │ ├── display_micro_64bpp.comp │ │ ├── macro_32bpp.comp │ │ ├── macro_64bpp.comp │ │ ├── macro_8bpp.comp │ │ ├── micro_128bpp.comp │ │ ├── micro_16bpp.comp │ │ ├── micro_32bpp.comp │ │ ├── micro_64bpp.comp │ │ └── micro_8bpp.comp │ ├── fault_buffer_process.comp │ ├── fs_tri.vert │ ├── fsr/ │ │ ├── ffx_a.h │ │ └── ffx_fsr1.h │ ├── fsr.comp │ ├── ms_image_blit.frag │ ├── post_process.frag │ ├── source_shader.h.in │ └── tiling.comp ├── multi_level_page_table.h ├── page_manager.cpp ├── page_manager.h ├── renderdoc.cpp ├── renderdoc.h ├── renderer_vulkan/ │ ├── host_passes/ │ │ ├── fsr_pass.cpp │ │ ├── fsr_pass.h │ │ ├── pp_pass.cpp │ │ └── pp_pass.h │ ├── liverpool_to_vk.cpp │ ├── liverpool_to_vk.h │ ├── vk_common.cpp │ ├── vk_common.h │ ├── vk_compute_pipeline.cpp │ ├── vk_compute_pipeline.h │ ├── vk_graphics_pipeline.cpp │ ├── vk_graphics_pipeline.h │ ├── vk_instance.cpp │ ├── vk_instance.h │ ├── vk_master_semaphore.cpp │ ├── vk_master_semaphore.h │ ├── vk_pipeline_cache.cpp │ ├── vk_pipeline_cache.h │ ├── vk_pipeline_common.cpp │ ├── vk_pipeline_common.h │ ├── vk_pipeline_serialization.cpp │ ├── vk_pipeline_serialization.h │ ├── vk_platform.cpp │ ├── vk_platform.h │ ├── vk_presenter.cpp │ ├── vk_presenter.h │ ├── vk_rasterizer.cpp │ ├── vk_rasterizer.h │ ├── vk_resource_pool.cpp │ ├── vk_resource_pool.h │ ├── vk_scheduler.cpp │ ├── vk_scheduler.h │ ├── vk_shader_hle.cpp │ ├── vk_shader_hle.h │ ├── vk_shader_util.cpp │ ├── vk_shader_util.h │ ├── vk_swapchain.cpp │ └── vk_swapchain.h └── texture_cache/ ├── blit_helper.cpp ├── blit_helper.h ├── host_compatibility.cpp ├── host_compatibility.h ├── image.cpp ├── image.h ├── image_info.cpp ├── image_info.h ├── image_view.cpp ├── image_view.h ├── sampler.cpp ├── sampler.h ├── texture_cache.cpp ├── texture_cache.h ├── tile.h ├── tile_manager.cpp ├── tile_manager.h └── types.h