Copy disabled (too large)
Download .txt
Showing preview only (19,814K chars total). Download the full file to get everything.
Repository: cemu-project/Cemu
Branch: main
Commit: 6312fb936cbe
Files: 1285
Total size: 18.7 MB
Directory structure:
gitextract__32_xijf/
├── .clang-format
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── config.yml
│ │ ├── emulation_bug_report.yaml
│ │ └── feature_report.yaml
│ └── workflows/
│ ├── build.yml
│ ├── build_check.yml
│ ├── deploy_release.yml
│ ├── determine_release_version.yml
│ └── generate_pot.yml
├── .gitignore
├── .gitmodules
├── BUILD.md
├── CMakeLists.txt
├── CMakeSettings.json
├── CODING_STYLE.md
├── LICENSE.txt
├── README.md
├── bin/
│ └── resources/
│ ├── ar/
│ │ └── cemu.mo
│ ├── ca/
│ │ └── cemu.mo
│ ├── de/
│ │ └── cemu.mo
│ ├── es/
│ │ └── cemu.mo
│ ├── fr/
│ │ └── cemu.mo
│ ├── he/
│ │ └── cemu.mo
│ ├── hu/
│ │ └── cemu.mo
│ ├── it/
│ │ └── cemu.mo
│ ├── ja/
│ │ └── cemu.mo
│ ├── ko/
│ │ └── cemu.mo
│ ├── nb/
│ │ └── cemu.mo
│ ├── nl/
│ │ └── cemu.mo
│ ├── pl/
│ │ └── cemu.mo
│ ├── pt/
│ │ └── cemu.mo
│ ├── ru/
│ │ └── cemu.mo
│ ├── sv/
│ │ └── cemu.mo
│ ├── tr/
│ │ └── cemu.mo
│ ├── uk/
│ │ └── cemu.mo
│ └── zh/
│ └── cemu.mo
├── boost.natvis
├── cmake/
│ ├── ECMFindModuleHelpers.cmake
│ ├── ECMFindModuleHelpersStub.cmake
│ ├── FindGTK3.cmake
│ ├── FindWayland.cmake
│ ├── FindWaylandProtocols.cmake
│ ├── FindWaylandScanner.cmake
│ ├── FindZArchive.cmake
│ ├── Findbluez.cmake
│ ├── Findimgui.cmake
│ ├── Findlibusb.cmake
│ ├── FindwxWidgets.cmake
│ └── Findzstd.cmake
├── dependencies/
│ ├── DirectX_2010/
│ │ ├── XAudio2.h
│ │ ├── audiodefs.h
│ │ ├── comdecl.h
│ │ └── xma2defs.h
│ ├── gamemode/
│ │ ├── CMakeLists.txt
│ │ └── lib/
│ │ ├── client_loader.c
│ │ └── gamemode_client.h
│ ├── ih264d/
│ │ ├── CHANGES
│ │ ├── CMakeLists.txt
│ │ ├── CMakeSettings.json
│ │ ├── NOTICE
│ │ ├── common/
│ │ │ ├── arm/
│ │ │ │ ├── ih264_arm_memory_barrier.s
│ │ │ │ ├── ih264_deblk_chroma_a9.s
│ │ │ │ ├── ih264_deblk_luma_a9.s
│ │ │ │ ├── ih264_default_weighted_pred_a9q.s
│ │ │ │ ├── ih264_ihadamard_scaling_a9.s
│ │ │ │ ├── ih264_inter_pred_chroma_a9q.s
│ │ │ │ ├── ih264_inter_pred_filters_luma_horz_a9q.s
│ │ │ │ ├── ih264_inter_pred_filters_luma_vert_a9q.s
│ │ │ │ ├── ih264_inter_pred_luma_bilinear_a9q.s
│ │ │ │ ├── ih264_inter_pred_luma_copy_a9q.s
│ │ │ │ ├── ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q.s
│ │ │ │ ├── ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q.s
│ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_a9q.s
│ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q.s
│ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q.s
│ │ │ │ ├── ih264_inter_pred_luma_vert_qpel_a9q.s
│ │ │ │ ├── ih264_intra_pred_chroma_a9q.s
│ │ │ │ ├── ih264_intra_pred_luma_16x16_a9q.s
│ │ │ │ ├── ih264_intra_pred_luma_4x4_a9q.s
│ │ │ │ ├── ih264_intra_pred_luma_8x8_a9q.s
│ │ │ │ ├── ih264_iquant_itrans_recon_a9.s
│ │ │ │ ├── ih264_iquant_itrans_recon_dc_a9.s
│ │ │ │ ├── ih264_mem_fns_neon.s
│ │ │ │ ├── ih264_padding_neon.s
│ │ │ │ ├── ih264_platform_macros.h
│ │ │ │ ├── ih264_resi_trans_quant_a9.s
│ │ │ │ ├── ih264_weighted_bi_pred_a9q.s
│ │ │ │ └── ih264_weighted_pred_a9q.s
│ │ │ ├── armv8/
│ │ │ │ ├── ih264_deblk_chroma_av8.s
│ │ │ │ ├── ih264_deblk_luma_av8.s
│ │ │ │ ├── ih264_default_weighted_pred_av8.s
│ │ │ │ ├── ih264_ihadamard_scaling_av8.s
│ │ │ │ ├── ih264_inter_pred_chroma_av8.s
│ │ │ │ ├── ih264_inter_pred_filters_luma_horz_av8.s
│ │ │ │ ├── ih264_inter_pred_filters_luma_vert_av8.s
│ │ │ │ ├── ih264_inter_pred_luma_copy_av8.s
│ │ │ │ ├── ih264_inter_pred_luma_horz_hpel_vert_hpel_av8.s
│ │ │ │ ├── ih264_inter_pred_luma_horz_hpel_vert_qpel_av8.s
│ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_av8.s
│ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_vert_hpel_av8.s
│ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_vert_qpel_av8.s
│ │ │ │ ├── ih264_inter_pred_luma_vert_qpel_av8.s
│ │ │ │ ├── ih264_intra_pred_chroma_av8.s
│ │ │ │ ├── ih264_intra_pred_luma_16x16_av8.s
│ │ │ │ ├── ih264_intra_pred_luma_4x4_av8.s
│ │ │ │ ├── ih264_intra_pred_luma_8x8_av8.s
│ │ │ │ ├── ih264_iquant_itrans_recon_av8.s
│ │ │ │ ├── ih264_iquant_itrans_recon_dc_av8.s
│ │ │ │ ├── ih264_mem_fns_neon_av8.s
│ │ │ │ ├── ih264_neon_macros.s
│ │ │ │ ├── ih264_padding_neon_av8.s
│ │ │ │ ├── ih264_platform_macros.h
│ │ │ │ ├── ih264_resi_trans_quant_av8.s
│ │ │ │ ├── ih264_weighted_bi_pred_av8.s
│ │ │ │ ├── ih264_weighted_pred_av8.s
│ │ │ │ └── macos_arm_symbol_aliases.s
│ │ │ ├── ih264_buf_mgr.c
│ │ │ ├── ih264_buf_mgr.h
│ │ │ ├── ih264_cabac_tables.c
│ │ │ ├── ih264_cabac_tables.h
│ │ │ ├── ih264_cavlc_tables.c
│ │ │ ├── ih264_cavlc_tables.h
│ │ │ ├── ih264_chroma_intra_pred_filters.c
│ │ │ ├── ih264_common_tables.c
│ │ │ ├── ih264_common_tables.h
│ │ │ ├── ih264_deblk_edge_filters.c
│ │ │ ├── ih264_deblk_edge_filters.h
│ │ │ ├── ih264_deblk_tables.c
│ │ │ ├── ih264_deblk_tables.h
│ │ │ ├── ih264_debug.h
│ │ │ ├── ih264_defs.h
│ │ │ ├── ih264_disp_mgr.c
│ │ │ ├── ih264_disp_mgr.h
│ │ │ ├── ih264_dpb_mgr.c
│ │ │ ├── ih264_dpb_mgr.h
│ │ │ ├── ih264_error.h
│ │ │ ├── ih264_ihadamard_scaling.c
│ │ │ ├── ih264_inter_pred_filters.c
│ │ │ ├── ih264_inter_pred_filters.h
│ │ │ ├── ih264_intra_pred_filters.h
│ │ │ ├── ih264_iquant_itrans_recon.c
│ │ │ ├── ih264_list.c
│ │ │ ├── ih264_list.h
│ │ │ ├── ih264_luma_intra_pred_filters.c
│ │ │ ├── ih264_macros.h
│ │ │ ├── ih264_mem_fns.c
│ │ │ ├── ih264_mem_fns.h
│ │ │ ├── ih264_padding.c
│ │ │ ├── ih264_padding.h
│ │ │ ├── ih264_resi_trans.h
│ │ │ ├── ih264_resi_trans_quant.c
│ │ │ ├── ih264_size_defs.h
│ │ │ ├── ih264_structs.h
│ │ │ ├── ih264_trans_data.c
│ │ │ ├── ih264_trans_data.h
│ │ │ ├── ih264_trans_macros.h
│ │ │ ├── ih264_trans_quant_itrans_iquant.h
│ │ │ ├── ih264_typedefs.h
│ │ │ ├── ih264_weighted_pred.c
│ │ │ ├── ih264_weighted_pred.h
│ │ │ ├── ithread.c
│ │ │ ├── ithread.h
│ │ │ ├── mips/
│ │ │ │ └── ih264_platform_macros.h
│ │ │ └── x86/
│ │ │ ├── ih264_chroma_intra_pred_filters_ssse3.c
│ │ │ ├── ih264_deblk_chroma_ssse3.c
│ │ │ ├── ih264_deblk_luma_ssse3.c
│ │ │ ├── ih264_ihadamard_scaling_sse42.c
│ │ │ ├── ih264_ihadamard_scaling_ssse3.c
│ │ │ ├── ih264_inter_pred_filters_ssse3.c
│ │ │ ├── ih264_iquant_itrans_recon_dc_ssse3.c
│ │ │ ├── ih264_iquant_itrans_recon_sse42.c
│ │ │ ├── ih264_iquant_itrans_recon_ssse3.c
│ │ │ ├── ih264_luma_intra_pred_filters_ssse3.c
│ │ │ ├── ih264_mem_fns_ssse3.c
│ │ │ ├── ih264_padding_ssse3.c
│ │ │ ├── ih264_platform_macros.h
│ │ │ ├── ih264_resi_trans_quant_sse42.c
│ │ │ └── ih264_weighted_pred_sse42.c
│ │ └── decoder/
│ │ ├── arm/
│ │ │ ├── ih264d_function_selector.c
│ │ │ ├── ih264d_function_selector_a9q.c
│ │ │ └── ih264d_function_selector_av8.c
│ │ ├── ih264d.h
│ │ ├── ih264d_api.c
│ │ ├── ih264d_bitstrm.c
│ │ ├── ih264d_bitstrm.h
│ │ ├── ih264d_cabac.c
│ │ ├── ih264d_cabac.h
│ │ ├── ih264d_cabac_init_tables.c
│ │ ├── ih264d_compute_bs.c
│ │ ├── ih264d_deblocking.c
│ │ ├── ih264d_deblocking.h
│ │ ├── ih264d_debug.h
│ │ ├── ih264d_defs.h
│ │ ├── ih264d_dpb_manager.h
│ │ ├── ih264d_dpb_mgr.c
│ │ ├── ih264d_error_handler.h
│ │ ├── ih264d_format_conv.c
│ │ ├── ih264d_format_conv.h
│ │ ├── ih264d_function_selector.h
│ │ ├── ih264d_function_selector_generic.c
│ │ ├── ih264d_inter_pred.c
│ │ ├── ih264d_inter_pred.h
│ │ ├── ih264d_mb_utils.c
│ │ ├── ih264d_mb_utils.h
│ │ ├── ih264d_mem_request.h
│ │ ├── ih264d_mvpred.c
│ │ ├── ih264d_mvpred.h
│ │ ├── ih264d_nal.c
│ │ ├── ih264d_nal.h
│ │ ├── ih264d_parse_bslice.c
│ │ ├── ih264d_parse_cabac.c
│ │ ├── ih264d_parse_cabac.h
│ │ ├── ih264d_parse_cavlc.c
│ │ ├── ih264d_parse_cavlc.h
│ │ ├── ih264d_parse_headers.c
│ │ ├── ih264d_parse_headers.h
│ │ ├── ih264d_parse_islice.c
│ │ ├── ih264d_parse_islice.h
│ │ ├── ih264d_parse_mb_header.c
│ │ ├── ih264d_parse_mb_header.h
│ │ ├── ih264d_parse_pslice.c
│ │ ├── ih264d_parse_slice.c
│ │ ├── ih264d_parse_slice.h
│ │ ├── ih264d_process_bslice.c
│ │ ├── ih264d_process_bslice.h
│ │ ├── ih264d_process_intra_mb.c
│ │ ├── ih264d_process_intra_mb.h
│ │ ├── ih264d_process_pslice.c
│ │ ├── ih264d_process_pslice.h
│ │ ├── ih264d_quant_scaling.c
│ │ ├── ih264d_quant_scaling.h
│ │ ├── ih264d_sei.c
│ │ ├── ih264d_sei.h
│ │ ├── ih264d_structs.h
│ │ ├── ih264d_tables.c
│ │ ├── ih264d_tables.h
│ │ ├── ih264d_thread_compute_bs.c
│ │ ├── ih264d_thread_compute_bs.h
│ │ ├── ih264d_thread_parse_decode.c
│ │ ├── ih264d_thread_parse_decode.h
│ │ ├── ih264d_transfer_address.h
│ │ ├── ih264d_utils.c
│ │ ├── ih264d_utils.h
│ │ ├── ih264d_vui.c
│ │ ├── ih264d_vui.h
│ │ ├── iv.h
│ │ ├── ivd.h
│ │ ├── mips/
│ │ │ └── ih264d_function_selector.c
│ │ └── x86/
│ │ ├── ih264d_function_selector.c
│ │ ├── ih264d_function_selector_sse42.c
│ │ └── ih264d_function_selector_ssse3.c
│ ├── vcpkg_overlay_ports/
│ │ ├── .gitkeep
│ │ └── wxwidgets/
│ │ ├── example/
│ │ │ └── CMakeLists.txt
│ │ ├── fix-libs-export.patch
│ │ ├── fix-listctrl-layout.patch
│ │ ├── fix-pcre2.patch
│ │ ├── gtk3-link-libraries.patch
│ │ ├── install-layout.patch
│ │ ├── nanosvg-ext-depend.patch
│ │ ├── portfile.cmake
│ │ ├── relocatable-wx-config.patch
│ │ ├── sdl2.patch
│ │ ├── setup.h.in
│ │ ├── usage
│ │ ├── vcpkg-cmake-wrapper.cmake
│ │ └── vcpkg.json
│ ├── vcpkg_overlay_ports_linux/
│ │ ├── .gitkeep
│ │ ├── cairo/
│ │ │ ├── portfile.cmake
│ │ │ └── vcpkg.json
│ │ ├── glm/
│ │ │ ├── portfile.cmake
│ │ │ └── vcpkg.json
│ │ ├── gtk3/
│ │ │ ├── portfile.cmake
│ │ │ └── vcpkg.json
│ │ └── libpng/
│ │ ├── portfile.cmake
│ │ └── vcpkg.json
│ ├── vcpkg_overlay_ports_mac/
│ │ ├── .gitkeep
│ │ └── libusb/
│ │ ├── portfile.cmake
│ │ ├── usage
│ │ └── vcpkg.json
│ └── vcpkg_overlay_ports_win/
│ └── .gitkeep
├── dist/
│ ├── linux/
│ │ ├── appimage.sh
│ │ ├── info.cemu.Cemu.desktop
│ │ └── info.cemu.Cemu.metainfo.xml
│ ├── network_services.xml
│ └── windows/
│ └── Cemu.manifest
├── src/
│ ├── CMakeLists.txt
│ ├── Cafe/
│ │ ├── Account/
│ │ │ ├── Account.cpp
│ │ │ ├── Account.h
│ │ │ └── AccountError.h
│ │ ├── CMakeLists.txt
│ │ ├── CafeSystem.cpp
│ │ ├── CafeSystem.h
│ │ ├── Filesystem/
│ │ │ ├── FST/
│ │ │ │ ├── FST.cpp
│ │ │ │ ├── FST.h
│ │ │ │ ├── KeyCache.cpp
│ │ │ │ ├── KeyCache.h
│ │ │ │ └── fstUtil.h
│ │ │ ├── WUD/
│ │ │ │ ├── wud.cpp
│ │ │ │ └── wud.h
│ │ │ ├── WUHB/
│ │ │ │ ├── RomFSStructs.h
│ │ │ │ ├── WUHBReader.cpp
│ │ │ │ └── WUHBReader.h
│ │ │ ├── fsc.cpp
│ │ │ ├── fsc.h
│ │ │ ├── fscDeviceHostFS.cpp
│ │ │ ├── fscDeviceHostFS.h
│ │ │ ├── fscDeviceRedirect.cpp
│ │ │ ├── fscDeviceWua.cpp
│ │ │ ├── fscDeviceWud.cpp
│ │ │ └── fscDeviceWuhb.cpp
│ │ ├── GamePatch.cpp
│ │ ├── GamePatch.h
│ │ ├── GameProfile/
│ │ │ ├── GameProfile.cpp
│ │ │ └── GameProfile.h
│ │ ├── GraphicPack/
│ │ │ ├── GraphicPack2.cpp
│ │ │ ├── GraphicPack2.h
│ │ │ ├── GraphicPack2Patches.cpp
│ │ │ ├── GraphicPack2Patches.h
│ │ │ ├── GraphicPack2PatchesApply.cpp
│ │ │ ├── GraphicPack2PatchesParser.cpp
│ │ │ └── GraphicPackError.h
│ │ ├── HW/
│ │ │ ├── ACR/
│ │ │ │ └── ACR.cpp
│ │ │ ├── AI/
│ │ │ │ ├── AI.cpp
│ │ │ │ └── AI.h
│ │ │ ├── Common/
│ │ │ │ └── HwReg.h
│ │ │ ├── Espresso/
│ │ │ │ ├── Const.h
│ │ │ │ ├── Debugger/
│ │ │ │ │ ├── DebugSymbolStorage.cpp
│ │ │ │ │ ├── DebugSymbolStorage.h
│ │ │ │ │ ├── Debugger.cpp
│ │ │ │ │ ├── Debugger.h
│ │ │ │ │ ├── GDBBreakpoints.cpp
│ │ │ │ │ ├── GDBBreakpoints.h
│ │ │ │ │ ├── GDBStub.cpp
│ │ │ │ │ └── GDBStub.h
│ │ │ │ ├── EspressoISA.h
│ │ │ │ ├── Interpreter/
│ │ │ │ │ ├── PPCInterpreterALU.hpp
│ │ │ │ │ ├── PPCInterpreterFPU.cpp
│ │ │ │ │ ├── PPCInterpreterHLE.cpp
│ │ │ │ │ ├── PPCInterpreterHelper.h
│ │ │ │ │ ├── PPCInterpreterImpl.cpp
│ │ │ │ │ ├── PPCInterpreterInternal.h
│ │ │ │ │ ├── PPCInterpreterLoadStore.hpp
│ │ │ │ │ ├── PPCInterpreterMain.cpp
│ │ │ │ │ ├── PPCInterpreterOPC.cpp
│ │ │ │ │ ├── PPCInterpreterOPC.hpp
│ │ │ │ │ ├── PPCInterpreterPS.cpp
│ │ │ │ │ └── PPCInterpreterSPR.hpp
│ │ │ │ ├── PPCCallback.h
│ │ │ │ ├── PPCScheduler.cpp
│ │ │ │ ├── PPCSchedulerLLE.cpp
│ │ │ │ ├── PPCState.h
│ │ │ │ ├── PPCTimer.cpp
│ │ │ │ └── Recompiler/
│ │ │ │ ├── BackendAArch64/
│ │ │ │ │ ├── BackendAArch64.cpp
│ │ │ │ │ └── BackendAArch64.h
│ │ │ │ ├── BackendX64/
│ │ │ │ │ ├── BackendX64.cpp
│ │ │ │ │ ├── BackendX64.h
│ │ │ │ │ ├── BackendX64AVX.cpp
│ │ │ │ │ ├── BackendX64BMI.cpp
│ │ │ │ │ ├── BackendX64FPU.cpp
│ │ │ │ │ ├── BackendX64Gen.cpp
│ │ │ │ │ ├── BackendX64GenFPU.cpp
│ │ │ │ │ ├── X64Emit.hpp
│ │ │ │ │ └── x86Emitter.h
│ │ │ │ ├── IML/
│ │ │ │ │ ├── IML.h
│ │ │ │ │ ├── IMLAnalyzer.cpp
│ │ │ │ │ ├── IMLDebug.cpp
│ │ │ │ │ ├── IMLInstruction.cpp
│ │ │ │ │ ├── IMLInstruction.h
│ │ │ │ │ ├── IMLOptimizer.cpp
│ │ │ │ │ ├── IMLRegisterAllocator.cpp
│ │ │ │ │ ├── IMLRegisterAllocator.h
│ │ │ │ │ ├── IMLRegisterAllocatorRanges.cpp
│ │ │ │ │ ├── IMLRegisterAllocatorRanges.h
│ │ │ │ │ ├── IMLSegment.cpp
│ │ │ │ │ └── IMLSegment.h
│ │ │ │ ├── PPCFunctionBoundaryTracker.h
│ │ │ │ ├── PPCRecompiler.cpp
│ │ │ │ ├── PPCRecompiler.h
│ │ │ │ ├── PPCRecompilerIml.h
│ │ │ │ ├── PPCRecompilerImlGen.cpp
│ │ │ │ ├── PPCRecompilerImlGenFPU.cpp
│ │ │ │ └── PPCRecompilerIntermediate.cpp
│ │ │ ├── Latte/
│ │ │ │ ├── Common/
│ │ │ │ │ ├── RegisterSerializer.cpp
│ │ │ │ │ ├── RegisterSerializer.h
│ │ │ │ │ ├── ShaderSerializer.cpp
│ │ │ │ │ └── ShaderSerializer.h
│ │ │ │ ├── Core/
│ │ │ │ │ ├── FetchShader.cpp
│ │ │ │ │ ├── FetchShader.h
│ │ │ │ │ ├── Latte.h
│ │ │ │ │ ├── LatteAsyncCommands.cpp
│ │ │ │ │ ├── LatteAsyncCommands.h
│ │ │ │ │ ├── LatteBufferCache.cpp
│ │ │ │ │ ├── LatteBufferCache.h
│ │ │ │ │ ├── LatteBufferData.cpp
│ │ │ │ │ ├── LatteCachedFBO.h
│ │ │ │ │ ├── LatteCommandProcessor.cpp
│ │ │ │ │ ├── LatteConst.h
│ │ │ │ │ ├── LatteDefaultShaders.cpp
│ │ │ │ │ ├── LatteDefaultShaders.h
│ │ │ │ │ ├── LatteDraw.h
│ │ │ │ │ ├── LatteGSCopyShaderParser.cpp
│ │ │ │ │ ├── LatteIndices.cpp
│ │ │ │ │ ├── LatteIndices.h
│ │ │ │ │ ├── LatteOverlay.cpp
│ │ │ │ │ ├── LatteOverlay.h
│ │ │ │ │ ├── LattePM4.h
│ │ │ │ │ ├── LattePerformanceMonitor.cpp
│ │ │ │ │ ├── LattePerformanceMonitor.h
│ │ │ │ │ ├── LatteQuery.cpp
│ │ │ │ │ ├── LatteQueryObject.h
│ │ │ │ │ ├── LatteRenderTarget.cpp
│ │ │ │ │ ├── LatteRingBuffer.cpp
│ │ │ │ │ ├── LatteRingBuffer.h
│ │ │ │ │ ├── LatteShader.cpp
│ │ │ │ │ ├── LatteShader.h
│ │ │ │ │ ├── LatteShaderAssembly.h
│ │ │ │ │ ├── LatteShaderCache.cpp
│ │ │ │ │ ├── LatteShaderCache.h
│ │ │ │ │ ├── LatteShaderGL.cpp
│ │ │ │ │ ├── LatteSoftware.cpp
│ │ │ │ │ ├── LatteSoftware.h
│ │ │ │ │ ├── LatteStreamoutGPU.cpp
│ │ │ │ │ ├── LatteSurfaceCopy.cpp
│ │ │ │ │ ├── LatteTexture.cpp
│ │ │ │ │ ├── LatteTexture.h
│ │ │ │ │ ├── LatteTextureCache.cpp
│ │ │ │ │ ├── LatteTextureLegacy.cpp
│ │ │ │ │ ├── LatteTextureLoader.cpp
│ │ │ │ │ ├── LatteTextureLoader.h
│ │ │ │ │ ├── LatteTextureReadback.cpp
│ │ │ │ │ ├── LatteTextureReadbackInfo.h
│ │ │ │ │ ├── LatteTextureView.cpp
│ │ │ │ │ ├── LatteTextureView.h
│ │ │ │ │ ├── LatteThread.cpp
│ │ │ │ │ ├── LatteTiming.cpp
│ │ │ │ │ └── LatteTiming.h
│ │ │ │ ├── ISA/
│ │ │ │ │ ├── LatteInstructions.h
│ │ │ │ │ ├── LatteReg.h
│ │ │ │ │ └── RegDefines.h
│ │ │ │ ├── LatteAddrLib/
│ │ │ │ │ ├── AddrLibFastDecode.h
│ │ │ │ │ ├── LatteAddrLib.cpp
│ │ │ │ │ ├── LatteAddrLib.h
│ │ │ │ │ └── LatteAddrLib_Coord.cpp
│ │ │ │ ├── LegacyShaderDecompiler/
│ │ │ │ │ ├── LatteDecompiler.cpp
│ │ │ │ │ ├── LatteDecompiler.h
│ │ │ │ │ ├── LatteDecompilerAnalyzer.cpp
│ │ │ │ │ ├── LatteDecompilerEmitGLSL.cpp
│ │ │ │ │ ├── LatteDecompilerEmitGLSLAttrDecoder.cpp
│ │ │ │ │ ├── LatteDecompilerEmitGLSLHeader.hpp
│ │ │ │ │ ├── LatteDecompilerEmitMSL.cpp
│ │ │ │ │ ├── LatteDecompilerEmitMSLAttrDecoder.cpp
│ │ │ │ │ ├── LatteDecompilerEmitMSLHeader.hpp
│ │ │ │ │ ├── LatteDecompilerInstructions.h
│ │ │ │ │ ├── LatteDecompilerInternal.h
│ │ │ │ │ └── LatteDecompilerRegisterDataTypeTracker.cpp
│ │ │ │ ├── Renderer/
│ │ │ │ │ ├── Metal/
│ │ │ │ │ │ ├── CachedFBOMtl.cpp
│ │ │ │ │ │ ├── CachedFBOMtl.h
│ │ │ │ │ │ ├── LatteTextureMtl.cpp
│ │ │ │ │ │ ├── LatteTextureMtl.h
│ │ │ │ │ │ ├── LatteTextureReadbackMtl.cpp
│ │ │ │ │ │ ├── LatteTextureReadbackMtl.h
│ │ │ │ │ │ ├── LatteTextureViewMtl.cpp
│ │ │ │ │ │ ├── LatteTextureViewMtl.h
│ │ │ │ │ │ ├── LatteToMtl.cpp
│ │ │ │ │ │ ├── LatteToMtl.h
│ │ │ │ │ │ ├── MetalAttachmentsInfo.cpp
│ │ │ │ │ │ ├── MetalAttachmentsInfo.h
│ │ │ │ │ │ ├── MetalBufferAllocator.cpp
│ │ │ │ │ │ ├── MetalBufferAllocator.h
│ │ │ │ │ │ ├── MetalCommon.h
│ │ │ │ │ │ ├── MetalCppImpl.cpp
│ │ │ │ │ │ ├── MetalDepthStencilCache.cpp
│ │ │ │ │ │ ├── MetalDepthStencilCache.h
│ │ │ │ │ │ ├── MetalLayer.h
│ │ │ │ │ │ ├── MetalLayer.mm
│ │ │ │ │ │ ├── MetalLayerHandle.cpp
│ │ │ │ │ │ ├── MetalLayerHandle.h
│ │ │ │ │ │ ├── MetalMemoryManager.cpp
│ │ │ │ │ │ ├── MetalMemoryManager.h
│ │ │ │ │ │ ├── MetalOutputShaderCache.cpp
│ │ │ │ │ │ ├── MetalOutputShaderCache.h
│ │ │ │ │ │ ├── MetalPerformanceMonitor.h
│ │ │ │ │ │ ├── MetalPipelineCache.cpp
│ │ │ │ │ │ ├── MetalPipelineCache.h
│ │ │ │ │ │ ├── MetalPipelineCompiler.cpp
│ │ │ │ │ │ ├── MetalPipelineCompiler.h
│ │ │ │ │ │ ├── MetalQuery.cpp
│ │ │ │ │ │ ├── MetalQuery.h
│ │ │ │ │ │ ├── MetalRenderer.cpp
│ │ │ │ │ │ ├── MetalRenderer.h
│ │ │ │ │ │ ├── MetalSamplerCache.cpp
│ │ │ │ │ │ ├── MetalSamplerCache.h
│ │ │ │ │ │ ├── MetalVoidVertexPipeline.cpp
│ │ │ │ │ │ ├── MetalVoidVertexPipeline.h
│ │ │ │ │ │ ├── RendererShaderMtl.cpp
│ │ │ │ │ │ ├── RendererShaderMtl.h
│ │ │ │ │ │ └── UtilityShaderSource.h
│ │ │ │ │ ├── MetalView.h
│ │ │ │ │ ├── MetalView.mm
│ │ │ │ │ ├── OpenGL/
│ │ │ │ │ │ ├── CachedFBOGL.h
│ │ │ │ │ │ ├── LatteTextureGL.cpp
│ │ │ │ │ │ ├── LatteTextureGL.h
│ │ │ │ │ │ ├── LatteTextureViewGL.cpp
│ │ │ │ │ │ ├── LatteTextureViewGL.h
│ │ │ │ │ │ ├── OpenGLQuery.cpp
│ │ │ │ │ │ ├── OpenGLRenderer.cpp
│ │ │ │ │ │ ├── OpenGLRenderer.h
│ │ │ │ │ │ ├── OpenGLRendererCore.cpp
│ │ │ │ │ │ ├── OpenGLRendererStreamout.cpp
│ │ │ │ │ │ ├── OpenGLRendererUniformData.cpp
│ │ │ │ │ │ ├── OpenGLSurfaceCopy.cpp
│ │ │ │ │ │ ├── OpenGLTextureReadback.h
│ │ │ │ │ │ ├── RendererShaderGL.cpp
│ │ │ │ │ │ ├── RendererShaderGL.h
│ │ │ │ │ │ └── TextureReadbackGL.cpp
│ │ │ │ │ ├── Renderer.cpp
│ │ │ │ │ ├── Renderer.h
│ │ │ │ │ ├── RendererOuputShader.cpp
│ │ │ │ │ ├── RendererOuputShader.h
│ │ │ │ │ ├── RendererShader.cpp
│ │ │ │ │ ├── RendererShader.h
│ │ │ │ │ └── Vulkan/
│ │ │ │ │ ├── CachedFBOVk.cpp
│ │ │ │ │ ├── CachedFBOVk.h
│ │ │ │ │ ├── CocoaSurface.h
│ │ │ │ │ ├── CocoaSurface.mm
│ │ │ │ │ ├── LatteTextureViewVk.cpp
│ │ │ │ │ ├── LatteTextureViewVk.h
│ │ │ │ │ ├── LatteTextureVk.cpp
│ │ │ │ │ ├── LatteTextureVk.h
│ │ │ │ │ ├── RendererShaderVk.cpp
│ │ │ │ │ ├── RendererShaderVk.h
│ │ │ │ │ ├── SwapchainInfoVk.cpp
│ │ │ │ │ ├── SwapchainInfoVk.h
│ │ │ │ │ ├── TextureReadbackVk.cpp
│ │ │ │ │ ├── VKRBase.h
│ │ │ │ │ ├── VKRMemoryManager.cpp
│ │ │ │ │ ├── VKRMemoryManager.h
│ │ │ │ │ ├── VKRPipelineInfo.cpp
│ │ │ │ │ ├── VsyncDriver.cpp
│ │ │ │ │ ├── VsyncDriver.h
│ │ │ │ │ ├── VulkanAPI.cpp
│ │ │ │ │ ├── VulkanAPI.h
│ │ │ │ │ ├── VulkanPipelineCompiler.cpp
│ │ │ │ │ ├── VulkanPipelineCompiler.h
│ │ │ │ │ ├── VulkanPipelineStableCache.cpp
│ │ │ │ │ ├── VulkanPipelineStableCache.h
│ │ │ │ │ ├── VulkanQuery.cpp
│ │ │ │ │ ├── VulkanRenderer.cpp
│ │ │ │ │ ├── VulkanRenderer.h
│ │ │ │ │ ├── VulkanRendererCore.cpp
│ │ │ │ │ ├── VulkanSurfaceCopy.cpp
│ │ │ │ │ └── VulkanTextureReadback.h
│ │ │ │ ├── ShaderInfo/
│ │ │ │ │ ├── ShaderDescription.cpp
│ │ │ │ │ ├── ShaderInfo.h
│ │ │ │ │ └── ShaderInstanceInfo.cpp
│ │ │ │ └── Transcompiler/
│ │ │ │ ├── LatteTC.cpp
│ │ │ │ ├── LatteTC.h
│ │ │ │ └── LatteTCGenIR.cpp
│ │ │ ├── MMU/
│ │ │ │ ├── MMU.cpp
│ │ │ │ └── MMU.h
│ │ │ ├── SI/
│ │ │ │ ├── SI.cpp
│ │ │ │ └── si.h
│ │ │ └── VI/
│ │ │ └── VI.cpp
│ │ ├── IOSU/
│ │ │ ├── ODM/
│ │ │ │ ├── iosu_odm.cpp
│ │ │ │ └── iosu_odm.h
│ │ │ ├── PDM/
│ │ │ │ ├── iosu_pdm.cpp
│ │ │ │ └── iosu_pdm.h
│ │ │ ├── ccr_nfc/
│ │ │ │ ├── iosu_ccr_nfc.cpp
│ │ │ │ └── iosu_ccr_nfc.h
│ │ │ ├── fsa/
│ │ │ │ ├── fsa_types.h
│ │ │ │ ├── iosu_fsa.cpp
│ │ │ │ └── iosu_fsa.h
│ │ │ ├── iosu_ipc_common.h
│ │ │ ├── iosu_types_common.h
│ │ │ ├── kernel/
│ │ │ │ ├── iosu_kernel.cpp
│ │ │ │ └── iosu_kernel.h
│ │ │ ├── legacy/
│ │ │ │ ├── iosu_acp.cpp
│ │ │ │ ├── iosu_acp.h
│ │ │ │ ├── iosu_act.cpp
│ │ │ │ ├── iosu_act.h
│ │ │ │ ├── iosu_crypto.cpp
│ │ │ │ ├── iosu_crypto.h
│ │ │ │ ├── iosu_fpd.cpp
│ │ │ │ ├── iosu_fpd.h
│ │ │ │ ├── iosu_ioctl.cpp
│ │ │ │ ├── iosu_ioctl.h
│ │ │ │ ├── iosu_mcp.cpp
│ │ │ │ ├── iosu_mcp.h
│ │ │ │ ├── iosu_nim.cpp
│ │ │ │ └── iosu_nim.h
│ │ │ └── nn/
│ │ │ ├── boss/
│ │ │ │ ├── boss_common.cpp
│ │ │ │ ├── boss_common.h
│ │ │ │ ├── boss_service.cpp
│ │ │ │ └── boss_service.h
│ │ │ ├── iosu_nn_service.cpp
│ │ │ └── iosu_nn_service.h
│ │ ├── OS/
│ │ │ ├── RPL/
│ │ │ │ ├── COSModule.cpp
│ │ │ │ ├── COSModule.h
│ │ │ │ ├── elf.cpp
│ │ │ │ ├── rpl.cpp
│ │ │ │ ├── rpl.h
│ │ │ │ ├── rpl_debug_symbols.cpp
│ │ │ │ ├── rpl_debug_symbols.h
│ │ │ │ ├── rpl_structs.h
│ │ │ │ ├── rpl_symbol_storage.cpp
│ │ │ │ └── rpl_symbol_storage.h
│ │ │ ├── common/
│ │ │ │ ├── OSCommon.cpp
│ │ │ │ ├── OSCommon.h
│ │ │ │ ├── OSUtil.h
│ │ │ │ └── PPCConcurrentQueue.h
│ │ │ └── libs/
│ │ │ ├── TCL/
│ │ │ │ ├── TCL.cpp
│ │ │ │ └── TCL.h
│ │ │ ├── avm/
│ │ │ │ ├── avm.cpp
│ │ │ │ └── avm.h
│ │ │ ├── camera/
│ │ │ │ ├── camera.cpp
│ │ │ │ └── camera.h
│ │ │ ├── coreinit/
│ │ │ │ ├── coreinit.cpp
│ │ │ │ ├── coreinit.h
│ │ │ │ ├── coreinit_Alarm.cpp
│ │ │ │ ├── coreinit_Alarm.h
│ │ │ │ ├── coreinit_Atomic.cpp
│ │ │ │ ├── coreinit_Atomic.h
│ │ │ │ ├── coreinit_BSP.cpp
│ │ │ │ ├── coreinit_BSP.h
│ │ │ │ ├── coreinit_Callbacks.cpp
│ │ │ │ ├── coreinit_CodeGen.cpp
│ │ │ │ ├── coreinit_CodeGen.h
│ │ │ │ ├── coreinit_Coroutine.cpp
│ │ │ │ ├── coreinit_Coroutine.h
│ │ │ │ ├── coreinit_DynLoad.cpp
│ │ │ │ ├── coreinit_DynLoad.h
│ │ │ │ ├── coreinit_FG.cpp
│ │ │ │ ├── coreinit_FG.h
│ │ │ │ ├── coreinit_FS.cpp
│ │ │ │ ├── coreinit_FS.h
│ │ │ │ ├── coreinit_GHS.cpp
│ │ │ │ ├── coreinit_GHS.h
│ │ │ │ ├── coreinit_HWInterface.cpp
│ │ │ │ ├── coreinit_HWInterface.h
│ │ │ │ ├── coreinit_IM.cpp
│ │ │ │ ├── coreinit_IM.h
│ │ │ │ ├── coreinit_IOS.cpp
│ │ │ │ ├── coreinit_IOS.h
│ │ │ │ ├── coreinit_IPC.cpp
│ │ │ │ ├── coreinit_IPC.h
│ │ │ │ ├── coreinit_IPCBuf.cpp
│ │ │ │ ├── coreinit_IPCBuf.h
│ │ │ │ ├── coreinit_Init.cpp
│ │ │ │ ├── coreinit_LockedCache.cpp
│ │ │ │ ├── coreinit_LockedCache.h
│ │ │ │ ├── coreinit_MCP.cpp
│ │ │ │ ├── coreinit_MCP.h
│ │ │ │ ├── coreinit_MEM.cpp
│ │ │ │ ├── coreinit_MEM.h
│ │ │ │ ├── coreinit_MEM_BlockHeap.cpp
│ │ │ │ ├── coreinit_MEM_BlockHeap.h
│ │ │ │ ├── coreinit_MEM_ExpHeap.cpp
│ │ │ │ ├── coreinit_MEM_ExpHeap.h
│ │ │ │ ├── coreinit_MEM_FrmHeap.cpp
│ │ │ │ ├── coreinit_MEM_FrmHeap.h
│ │ │ │ ├── coreinit_MEM_UnitHeap.cpp
│ │ │ │ ├── coreinit_MEM_UnitHeap.h
│ │ │ │ ├── coreinit_MPQueue.cpp
│ │ │ │ ├── coreinit_MPQueue.h
│ │ │ │ ├── coreinit_Memory.cpp
│ │ │ │ ├── coreinit_Memory.h
│ │ │ │ ├── coreinit_MemoryMapping.cpp
│ │ │ │ ├── coreinit_MemoryMapping.h
│ │ │ │ ├── coreinit_MessageQueue.cpp
│ │ │ │ ├── coreinit_MessageQueue.h
│ │ │ │ ├── coreinit_Misc.cpp
│ │ │ │ ├── coreinit_Misc.h
│ │ │ │ ├── coreinit_OSScreen.cpp
│ │ │ │ ├── coreinit_OSScreen.h
│ │ │ │ ├── coreinit_OSScreen_font.h
│ │ │ │ ├── coreinit_OverlayArena.cpp
│ │ │ │ ├── coreinit_OverlayArena.h
│ │ │ │ ├── coreinit_Scheduler.cpp
│ │ │ │ ├── coreinit_Scheduler.h
│ │ │ │ ├── coreinit_Spinlock.cpp
│ │ │ │ ├── coreinit_Spinlock.h
│ │ │ │ ├── coreinit_Synchronization.cpp
│ │ │ │ ├── coreinit_SysHeap.cpp
│ │ │ │ ├── coreinit_SysHeap.h
│ │ │ │ ├── coreinit_SystemInfo.cpp
│ │ │ │ ├── coreinit_SystemInfo.h
│ │ │ │ ├── coreinit_Thread.cpp
│ │ │ │ ├── coreinit_Thread.h
│ │ │ │ ├── coreinit_ThreadQueue.cpp
│ │ │ │ ├── coreinit_Time.cpp
│ │ │ │ └── coreinit_Time.h
│ │ │ ├── dmae/
│ │ │ │ ├── dmae.cpp
│ │ │ │ └── dmae.h
│ │ │ ├── drmapp/
│ │ │ │ ├── drmapp.cpp
│ │ │ │ └── drmapp.h
│ │ │ ├── erreula/
│ │ │ │ ├── erreula.cpp
│ │ │ │ └── erreula.h
│ │ │ ├── gx2/
│ │ │ │ ├── GX2.cpp
│ │ │ │ ├── GX2.h
│ │ │ │ ├── GX2_AddrTest.cpp
│ │ │ │ ├── GX2_Blit.cpp
│ │ │ │ ├── GX2_Blit.h
│ │ │ │ ├── GX2_Command.cpp
│ │ │ │ ├── GX2_Command.h
│ │ │ │ ├── GX2_ContextState.cpp
│ │ │ │ ├── GX2_Draw.cpp
│ │ │ │ ├── GX2_Draw.h
│ │ │ │ ├── GX2_Event.cpp
│ │ │ │ ├── GX2_Event.h
│ │ │ │ ├── GX2_Memory.cpp
│ │ │ │ ├── GX2_Memory.h
│ │ │ │ ├── GX2_Misc.cpp
│ │ │ │ ├── GX2_Misc.h
│ │ │ │ ├── GX2_Query.cpp
│ │ │ │ ├── GX2_Query.h
│ │ │ │ ├── GX2_RenderTarget.cpp
│ │ │ │ ├── GX2_Resource.cpp
│ │ │ │ ├── GX2_Resource.h
│ │ │ │ ├── GX2_Shader.cpp
│ │ │ │ ├── GX2_Shader.h
│ │ │ │ ├── GX2_State.cpp
│ │ │ │ ├── GX2_State.h
│ │ │ │ ├── GX2_Streamout.cpp
│ │ │ │ ├── GX2_Streamout.h
│ │ │ │ ├── GX2_Surface.cpp
│ │ │ │ ├── GX2_Surface.h
│ │ │ │ ├── GX2_Surface_Copy.cpp
│ │ │ │ ├── GX2_Surface_Copy.h
│ │ │ │ ├── GX2_Texture.cpp
│ │ │ │ ├── GX2_Texture.h
│ │ │ │ ├── GX2_TilingAperture.cpp
│ │ │ │ └── GX2_shader_legacy.cpp
│ │ │ ├── h264_avc/
│ │ │ │ ├── H264Dec.cpp
│ │ │ │ ├── H264DecBackendAVC.cpp
│ │ │ │ ├── H264DecInternal.h
│ │ │ │ ├── h264dec.h
│ │ │ │ └── parser/
│ │ │ │ ├── H264Parser.cpp
│ │ │ │ └── H264Parser.h
│ │ │ ├── mic/
│ │ │ │ ├── mic.cpp
│ │ │ │ └── mic.h
│ │ │ ├── nfc/
│ │ │ │ ├── TLV.cpp
│ │ │ │ ├── TLV.h
│ │ │ │ ├── TagV0.cpp
│ │ │ │ ├── TagV0.h
│ │ │ │ ├── ndef.cpp
│ │ │ │ ├── ndef.h
│ │ │ │ ├── nfc.cpp
│ │ │ │ ├── nfc.h
│ │ │ │ ├── stream.cpp
│ │ │ │ └── stream.h
│ │ │ ├── nlibcurl/
│ │ │ │ ├── nlibcurl.cpp
│ │ │ │ ├── nlibcurl.h
│ │ │ │ └── nlibcurlDebug.hpp
│ │ │ ├── nlibnss/
│ │ │ │ ├── nlibnss.cpp
│ │ │ │ └── nlibnss.h
│ │ │ ├── nn_ac/
│ │ │ │ ├── nn_ac.cpp
│ │ │ │ └── nn_ac.h
│ │ │ ├── nn_acp/
│ │ │ │ ├── nn_acp.cpp
│ │ │ │ └── nn_acp.h
│ │ │ ├── nn_act/
│ │ │ │ ├── nn_act.cpp
│ │ │ │ └── nn_act.h
│ │ │ ├── nn_aoc/
│ │ │ │ ├── nn_aoc.cpp
│ │ │ │ └── nn_aoc.h
│ │ │ ├── nn_boss/
│ │ │ │ ├── nn_boss.cpp
│ │ │ │ └── nn_boss.h
│ │ │ ├── nn_ccr/
│ │ │ │ ├── nn_ccr.cpp
│ │ │ │ └── nn_ccr.h
│ │ │ ├── nn_client_service.h
│ │ │ ├── nn_cmpt/
│ │ │ │ ├── nn_cmpt.cpp
│ │ │ │ └── nn_cmpt.h
│ │ │ ├── nn_common.h
│ │ │ ├── nn_ec/
│ │ │ │ ├── nn_ec.cpp
│ │ │ │ └── nn_ec.h
│ │ │ ├── nn_fp/
│ │ │ │ ├── nn_fp.cpp
│ │ │ │ └── nn_fp.h
│ │ │ ├── nn_idbe/
│ │ │ │ ├── nn_idbe.cpp
│ │ │ │ └── nn_idbe.h
│ │ │ ├── nn_ndm/
│ │ │ │ ├── nn_ndm.cpp
│ │ │ │ └── nn_ndm.h
│ │ │ ├── nn_nfp/
│ │ │ │ ├── AmiiboCrypto.h
│ │ │ │ ├── nn_nfp.cpp
│ │ │ │ └── nn_nfp.h
│ │ │ ├── nn_nim/
│ │ │ │ ├── nn_nim.cpp
│ │ │ │ └── nn_nim.h
│ │ │ ├── nn_olv/
│ │ │ │ ├── nn_olv.cpp
│ │ │ │ ├── nn_olv.h
│ │ │ │ ├── nn_olv_Common.cpp
│ │ │ │ ├── nn_olv_Common.h
│ │ │ │ ├── nn_olv_DownloadCommunityTypes.cpp
│ │ │ │ ├── nn_olv_DownloadCommunityTypes.h
│ │ │ │ ├── nn_olv_InitializeTypes.cpp
│ │ │ │ ├── nn_olv_InitializeTypes.h
│ │ │ │ ├── nn_olv_OfflineDB.cpp
│ │ │ │ ├── nn_olv_OfflineDB.h
│ │ │ │ ├── nn_olv_PostTypes.cpp
│ │ │ │ ├── nn_olv_PostTypes.h
│ │ │ │ ├── nn_olv_UploadCommunityTypes.cpp
│ │ │ │ ├── nn_olv_UploadCommunityTypes.h
│ │ │ │ ├── nn_olv_UploadFavoriteTypes.cpp
│ │ │ │ └── nn_olv_UploadFavoriteTypes.h
│ │ │ ├── nn_pdm/
│ │ │ │ ├── nn_pdm.cpp
│ │ │ │ └── nn_pdm.h
│ │ │ ├── nn_save/
│ │ │ │ ├── nn_save.cpp
│ │ │ │ └── nn_save.h
│ │ │ ├── nn_sl/
│ │ │ │ ├── nn_sl.cpp
│ │ │ │ └── nn_sl.h
│ │ │ ├── nn_spm/
│ │ │ │ ├── nn_spm.cpp
│ │ │ │ └── nn_spm.h
│ │ │ ├── nn_temp/
│ │ │ │ ├── nn_temp.cpp
│ │ │ │ └── nn_temp.h
│ │ │ ├── nn_uds/
│ │ │ │ ├── nn_uds.cpp
│ │ │ │ └── nn_uds.h
│ │ │ ├── nsyshid/
│ │ │ │ ├── AttachDefaultBackends.cpp
│ │ │ │ ├── Backend.h
│ │ │ │ ├── BackendEmulated.cpp
│ │ │ │ ├── BackendEmulated.h
│ │ │ │ ├── BackendLibusb.cpp
│ │ │ │ ├── BackendLibusb.h
│ │ │ │ ├── Dimensions.cpp
│ │ │ │ ├── Dimensions.h
│ │ │ │ ├── Infinity.cpp
│ │ │ │ ├── Infinity.h
│ │ │ │ ├── Skylander.cpp
│ │ │ │ ├── Skylander.h
│ │ │ │ ├── SkylanderXbox360.cpp
│ │ │ │ ├── SkylanderXbox360.h
│ │ │ │ ├── Whitelist.cpp
│ │ │ │ ├── Whitelist.h
│ │ │ │ ├── g721/
│ │ │ │ │ ├── g721.cpp
│ │ │ │ │ └── g721.h
│ │ │ │ ├── nsyshid.cpp
│ │ │ │ └── nsyshid.h
│ │ │ ├── nsyskbd/
│ │ │ │ ├── nsyskbd.cpp
│ │ │ │ └── nsyskbd.h
│ │ │ ├── nsysnet/
│ │ │ │ ├── nsysnet.cpp
│ │ │ │ └── nsysnet.h
│ │ │ ├── ntag/
│ │ │ │ ├── ntag.cpp
│ │ │ │ └── ntag.h
│ │ │ ├── padscore/
│ │ │ │ ├── padscore.cpp
│ │ │ │ └── padscore.h
│ │ │ ├── proc_ui/
│ │ │ │ ├── proc_ui.cpp
│ │ │ │ └── proc_ui.h
│ │ │ ├── snd_core/
│ │ │ │ ├── ax.h
│ │ │ │ ├── ax_aux.cpp
│ │ │ │ ├── ax_exports.cpp
│ │ │ │ ├── ax_internal.h
│ │ │ │ ├── ax_ist.cpp
│ │ │ │ ├── ax_mix.cpp
│ │ │ │ ├── ax_multivoice.cpp
│ │ │ │ ├── ax_out.cpp
│ │ │ │ └── ax_voice.cpp
│ │ │ ├── snd_user/
│ │ │ │ ├── snd_user.cpp
│ │ │ │ └── snd_user.h
│ │ │ ├── swkbd/
│ │ │ │ ├── swkbd.cpp
│ │ │ │ └── swkbd.h
│ │ │ ├── sysapp/
│ │ │ │ ├── sysapp.cpp
│ │ │ │ └── sysapp.h
│ │ │ ├── vpad/
│ │ │ │ ├── vpad.cpp
│ │ │ │ └── vpad.h
│ │ │ └── zlib125/
│ │ │ ├── zlib125.cpp
│ │ │ └── zlib125.h
│ │ └── TitleList/
│ │ ├── AppType.h
│ │ ├── GameInfo.h
│ │ ├── ParsedMetaXml.h
│ │ ├── SaveInfo.cpp
│ │ ├── SaveInfo.h
│ │ ├── SaveList.cpp
│ │ ├── SaveList.h
│ │ ├── TitleId.h
│ │ ├── TitleInfo.cpp
│ │ ├── TitleInfo.h
│ │ ├── TitleList.cpp
│ │ └── TitleList.h
│ ├── Cemu/
│ │ ├── CMakeLists.txt
│ │ ├── DiscordPresence/
│ │ │ ├── DiscordPresence.cpp
│ │ │ ├── DiscordPresence.h
│ │ │ ├── DiscordRPCLite.cpp
│ │ │ └── DiscordRPCLite.h
│ │ ├── ExpressionParser/
│ │ │ ├── ExpressionParser.cpp
│ │ │ └── ExpressionParser.h
│ │ ├── FileCache/
│ │ │ ├── FileCache.cpp
│ │ │ └── FileCache.h
│ │ ├── Logging/
│ │ │ ├── CemuDebugLogging.h
│ │ │ ├── CemuLogging.cpp
│ │ │ └── CemuLogging.h
│ │ ├── PPCAssembler/
│ │ │ ├── ppcAssembler.cpp
│ │ │ └── ppcAssembler.h
│ │ ├── Tools/
│ │ │ └── DownloadManager/
│ │ │ ├── DownloadManager.cpp
│ │ │ └── DownloadManager.h
│ │ ├── napi/
│ │ │ ├── napi.h
│ │ │ ├── napi_act.cpp
│ │ │ ├── napi_ec.cpp
│ │ │ ├── napi_helper.cpp
│ │ │ ├── napi_helper.h
│ │ │ ├── napi_idbe.cpp
│ │ │ └── napi_version.cpp
│ │ ├── ncrypto/
│ │ │ ├── ncrypto.cpp
│ │ │ └── ncrypto.h
│ │ └── nex/
│ │ ├── nex.cpp
│ │ ├── nex.h
│ │ ├── nexFriends.cpp
│ │ ├── nexFriends.h
│ │ ├── nexThread.cpp
│ │ ├── nexThread.h
│ │ ├── nexTypes.h
│ │ ├── prudp.cpp
│ │ └── prudp.h
│ ├── Common/
│ │ ├── CMakeLists.txt
│ │ ├── CafeString.h
│ │ ├── ExceptionHandler/
│ │ │ ├── ELFSymbolTable.cpp
│ │ │ ├── ELFSymbolTable.h
│ │ │ ├── ExceptionHandler.cpp
│ │ │ ├── ExceptionHandler.h
│ │ │ ├── ExceptionHandler_posix.cpp
│ │ │ └── ExceptionHandler_win32.cpp
│ │ ├── FileStream.h
│ │ ├── GLInclude/
│ │ │ ├── GLInclude.h
│ │ │ ├── egl.h
│ │ │ ├── glFunctions.h
│ │ │ ├── glext.h
│ │ │ ├── glxext.h
│ │ │ ├── khrplatform.h
│ │ │ └── wglext.h
│ │ ├── MemPtr.h
│ │ ├── StackAllocator.h
│ │ ├── SysAllocator.cpp
│ │ ├── SysAllocator.h
│ │ ├── betype.h
│ │ ├── cpu_features.cpp
│ │ ├── cpu_features.h
│ │ ├── enumFlags.h
│ │ ├── platform.h
│ │ ├── precompiled.cpp
│ │ ├── precompiled.h
│ │ ├── socket.h
│ │ ├── unix/
│ │ │ ├── FileStream_unix.cpp
│ │ │ ├── FileStream_unix.h
│ │ │ ├── date.h
│ │ │ ├── fast_float.h
│ │ │ ├── platform.cpp
│ │ │ └── platform.h
│ │ ├── version.h
│ │ └── windows/
│ │ ├── FileStream_win32.cpp
│ │ ├── FileStream_win32.h
│ │ ├── platform.cpp
│ │ └── platform.h
│ ├── audio/
│ │ ├── CMakeLists.txt
│ │ ├── CubebAPI.cpp
│ │ ├── CubebAPI.h
│ │ ├── CubebInputAPI.cpp
│ │ ├── CubebInputAPI.h
│ │ ├── DirectSoundAPI.cpp
│ │ ├── DirectSoundAPI.h
│ │ ├── IAudioAPI.cpp
│ │ ├── IAudioAPI.h
│ │ ├── IAudioInputAPI.cpp
│ │ ├── IAudioInputAPI.h
│ │ ├── XAudio27API.cpp
│ │ ├── XAudio27API.h
│ │ ├── XAudio2API.cpp
│ │ ├── XAudio2API.h
│ │ └── xaudio2_7/
│ │ ├── audiodefs.h
│ │ ├── comdecl.h
│ │ ├── dxsdkver.h
│ │ └── xma2defs.h
│ ├── config/
│ │ ├── ActiveSettings.cpp
│ │ ├── ActiveSettings.h
│ │ ├── CMakeLists.txt
│ │ ├── CemuConfig.cpp
│ │ ├── CemuConfig.h
│ │ ├── ConfigValue.h
│ │ ├── LaunchSettings.cpp
│ │ ├── LaunchSettings.h
│ │ ├── NetworkSettings.cpp
│ │ ├── NetworkSettings.h
│ │ └── XMLConfig.h
│ ├── gui/
│ │ ├── CMakeLists.txt
│ │ ├── interface/
│ │ │ └── WindowSystem.h
│ │ └── wxgui/
│ │ ├── AudioDebuggerWindow.cpp
│ │ ├── AudioDebuggerWindow.h
│ │ ├── CMakeLists.txt
│ │ ├── CemuApp.cpp
│ │ ├── CemuApp.h
│ │ ├── CemuUpdateWindow.cpp
│ │ ├── CemuUpdateWindow.h
│ │ ├── ChecksumTool.cpp
│ │ ├── ChecksumTool.h
│ │ ├── DownloadGraphicPacksWindow.cpp
│ │ ├── DownloadGraphicPacksWindow.h
│ │ ├── EmulatedUSBDevices/
│ │ │ ├── EmulatedUSBDeviceFrame.cpp
│ │ │ └── EmulatedUSBDeviceFrame.h
│ │ ├── GameProfileWindow.cpp
│ │ ├── GameProfileWindow.h
│ │ ├── GameUpdateWindow.cpp
│ │ ├── GameUpdateWindow.h
│ │ ├── GeneralSettings2.cpp
│ │ ├── GeneralSettings2.h
│ │ ├── GettingStartedDialog.cpp
│ │ ├── GettingStartedDialog.h
│ │ ├── GraphicPacksWindow2.cpp
│ │ ├── GraphicPacksWindow2.h
│ │ ├── LoggingWindow.cpp
│ │ ├── LoggingWindow.h
│ │ ├── MainWindow.cpp
│ │ ├── MainWindow.h
│ │ ├── MemorySearcherTool.cpp
│ │ ├── MemorySearcherTool.h
│ │ ├── PadViewFrame.cpp
│ │ ├── PadViewFrame.h
│ │ ├── TitleManager.cpp
│ │ ├── TitleManager.h
│ │ ├── canvas/
│ │ │ ├── IRenderCanvas.h
│ │ │ ├── MetalCanvas.cpp
│ │ │ ├── MetalCanvas.h
│ │ │ ├── OpenGLCanvas.cpp
│ │ │ ├── OpenGLCanvas.h
│ │ │ ├── VulkanCanvas.cpp
│ │ │ └── VulkanCanvas.h
│ │ ├── components/
│ │ │ ├── TextList.cpp
│ │ │ ├── TextList.h
│ │ │ ├── wxDownloadManagerList.cpp
│ │ │ ├── wxDownloadManagerList.h
│ │ │ ├── wxGameList.cpp
│ │ │ ├── wxGameList.h
│ │ │ ├── wxInputDraw.cpp
│ │ │ ├── wxInputDraw.h
│ │ │ ├── wxLogCtrl.cpp
│ │ │ ├── wxLogCtrl.h
│ │ │ ├── wxProgressDialogManager.h
│ │ │ ├── wxTitleManagerList.cpp
│ │ │ └── wxTitleManagerList.h
│ │ ├── debugger/
│ │ │ ├── BreakpointWindow.cpp
│ │ │ ├── BreakpointWindow.h
│ │ │ ├── DebuggerWindow2.cpp
│ │ │ ├── DebuggerWindow2.h
│ │ │ ├── DisasmCtrl.cpp
│ │ │ ├── DisasmCtrl.h
│ │ │ ├── DumpCtrl.cpp
│ │ │ ├── DumpCtrl.h
│ │ │ ├── DumpWindow.cpp
│ │ │ ├── DumpWindow.h
│ │ │ ├── ModuleWindow.cpp
│ │ │ ├── ModuleWindow.h
│ │ │ ├── RegisterWindow.cpp
│ │ │ ├── RegisterWindow.h
│ │ │ ├── SymbolCtrl.cpp
│ │ │ ├── SymbolCtrl.h
│ │ │ ├── SymbolWindow.cpp
│ │ │ └── SymbolWindow.h
│ │ ├── dialogs/
│ │ │ ├── CreateAccount/
│ │ │ │ ├── wxCreateAccountDialog.cpp
│ │ │ │ └── wxCreateAccountDialog.h
│ │ │ └── SaveImport/
│ │ │ ├── SaveImportWindow.cpp
│ │ │ ├── SaveImportWindow.h
│ │ │ ├── SaveTransfer.cpp
│ │ │ └── SaveTransfer.h
│ │ ├── helpers/
│ │ │ ├── wxControlObject.h
│ │ │ ├── wxCustomData.h
│ │ │ ├── wxCustomEvents.cpp
│ │ │ ├── wxCustomEvents.h
│ │ │ ├── wxHelpers.cpp
│ │ │ ├── wxHelpers.h
│ │ │ ├── wxLogEvent.h
│ │ │ ├── wxWayland.cpp
│ │ │ └── wxWayland.h
│ │ ├── input/
│ │ │ ├── HotkeySettings.cpp
│ │ │ ├── HotkeySettings.h
│ │ │ ├── InputAPIAddWindow.cpp
│ │ │ ├── InputAPIAddWindow.h
│ │ │ ├── InputSettings2.cpp
│ │ │ ├── InputSettings2.h
│ │ │ ├── PairingDialog.cpp
│ │ │ ├── PairingDialog.h
│ │ │ ├── panels/
│ │ │ │ ├── ClassicControllerInputPanel.cpp
│ │ │ │ ├── ClassicControllerInputPanel.h
│ │ │ │ ├── InputPanel.cpp
│ │ │ │ ├── InputPanel.h
│ │ │ │ ├── ProControllerInputPanel.cpp
│ │ │ │ ├── ProControllerInputPanel.h
│ │ │ │ ├── VPADInputPanel.cpp
│ │ │ │ ├── VPADInputPanel.h
│ │ │ │ ├── WiimoteInputPanel.cpp
│ │ │ │ └── WiimoteInputPanel.h
│ │ │ └── settings/
│ │ │ ├── DefaultControllerSettings.cpp
│ │ │ ├── DefaultControllerSettings.h
│ │ │ ├── WiimoteControllerSettings.cpp
│ │ │ └── WiimoteControllerSettings.h
│ │ ├── windows/
│ │ │ ├── PPCThreadsViewer/
│ │ │ │ ├── DebugPPCThreadsWindow.cpp
│ │ │ │ └── DebugPPCThreadsWindow.h
│ │ │ └── TextureRelationViewer/
│ │ │ ├── TextureRelationWindow.cpp
│ │ │ └── TextureRelationWindow.h
│ │ ├── wxCemuConfig.cpp
│ │ ├── wxCemuConfig.h
│ │ ├── wxHelper.h
│ │ ├── wxWindowSystem.cpp
│ │ ├── wxcomponents/
│ │ │ ├── checktree.cpp
│ │ │ └── checktree.h
│ │ └── wxgui.h
│ ├── imgui/
│ │ ├── CMakeLists.txt
│ │ ├── imgui_extension.cpp
│ │ ├── imgui_extension.h
│ │ ├── imgui_impl_metal.h
│ │ ├── imgui_impl_metal.mm
│ │ ├── imgui_impl_opengl3.cpp
│ │ ├── imgui_impl_opengl3.h
│ │ ├── imgui_impl_vulkan.cpp
│ │ └── imgui_impl_vulkan.h
│ ├── input/
│ │ ├── CMakeLists.txt
│ │ ├── ControllerFactory.cpp
│ │ ├── ControllerFactory.h
│ │ ├── InputManager.cpp
│ │ ├── InputManager.h
│ │ ├── api/
│ │ │ ├── Controller.cpp
│ │ │ ├── Controller.h
│ │ │ ├── ControllerProvider.h
│ │ │ ├── ControllerState.cpp
│ │ │ ├── ControllerState.h
│ │ │ ├── DSU/
│ │ │ │ ├── DSUController.cpp
│ │ │ │ ├── DSUController.h
│ │ │ │ ├── DSUControllerProvider.cpp
│ │ │ │ ├── DSUControllerProvider.h
│ │ │ │ ├── DSUMessages.cpp
│ │ │ │ └── DSUMessages.h
│ │ │ ├── DirectInput/
│ │ │ │ ├── DirectInputController.cpp
│ │ │ │ ├── DirectInputController.h
│ │ │ │ ├── DirectInputControllerProvider.cpp
│ │ │ │ └── DirectInputControllerProvider.h
│ │ │ ├── GameCube/
│ │ │ │ ├── GameCubeController.cpp
│ │ │ │ ├── GameCubeController.h
│ │ │ │ ├── GameCubeControllerProvider.cpp
│ │ │ │ └── GameCubeControllerProvider.h
│ │ │ ├── InputAPI.h
│ │ │ ├── Keyboard/
│ │ │ │ ├── KeyboardController.cpp
│ │ │ │ ├── KeyboardController.h
│ │ │ │ ├── KeyboardControllerProvider.cpp
│ │ │ │ └── KeyboardControllerProvider.h
│ │ │ ├── SDL/
│ │ │ │ ├── SDLController.cpp
│ │ │ │ ├── SDLController.h
│ │ │ │ ├── SDLControllerProvider.cpp
│ │ │ │ └── SDLControllerProvider.h
│ │ │ ├── Wiimote/
│ │ │ │ ├── NativeWiimoteController.cpp
│ │ │ │ ├── NativeWiimoteController.h
│ │ │ │ ├── WiimoteControllerProvider.cpp
│ │ │ │ ├── WiimoteControllerProvider.h
│ │ │ │ ├── WiimoteDevice.h
│ │ │ │ ├── WiimoteMessages.h
│ │ │ │ ├── hidapi/
│ │ │ │ │ ├── HidapiWiimote.cpp
│ │ │ │ │ └── HidapiWiimote.h
│ │ │ │ └── l2cap/
│ │ │ │ ├── L2CapWiimote.cpp
│ │ │ │ └── L2CapWiimote.h
│ │ │ └── XInput/
│ │ │ ├── XInputController.cpp
│ │ │ ├── XInputController.h
│ │ │ ├── XInputControllerProvider.cpp
│ │ │ └── XInputControllerProvider.h
│ │ ├── emulated/
│ │ │ ├── ClassicController.cpp
│ │ │ ├── ClassicController.h
│ │ │ ├── EmulatedController.cpp
│ │ │ ├── EmulatedController.h
│ │ │ ├── ProController.cpp
│ │ │ ├── ProController.h
│ │ │ ├── VPADController.cpp
│ │ │ ├── VPADController.h
│ │ │ ├── WPADController.cpp
│ │ │ ├── WPADController.h
│ │ │ ├── WiimoteController.cpp
│ │ │ └── WiimoteController.h
│ │ └── motion/
│ │ ├── Mahony.h
│ │ ├── MotionHandler.h
│ │ └── MotionSample.h
│ ├── main.cpp
│ ├── mainLLE.cpp
│ ├── resource/
│ │ ├── CMakeLists.txt
│ │ ├── CafeDefaultFont.cpp
│ │ ├── IconsFontAwesome5.h
│ │ ├── MacOSXBundleInfo.plist.in
│ │ ├── cemu.icns
│ │ ├── cemu.rc
│ │ ├── embedded/
│ │ │ ├── DEBUGGER_BP.hpng
│ │ │ ├── DEBUGGER_BP_RED.hpng
│ │ │ ├── DEBUGGER_GOTO.hpng
│ │ │ ├── DEBUGGER_PAUSE.hpng
│ │ │ ├── DEBUGGER_PLAY.hpng
│ │ │ ├── DEBUGGER_STEP_INTO.hpng
│ │ │ ├── DEBUGGER_STEP_OUT.hpng
│ │ │ ├── DEBUGGER_STEP_OVER.hpng
│ │ │ ├── INPUT_CONNECTED.hpng
│ │ │ ├── INPUT_DISCONNECTED.hpng
│ │ │ ├── INPUT_LOW_BATTERY.hpng
│ │ │ ├── M_WND_ICON128.xpm
│ │ │ ├── PNG_HELP.hpng
│ │ │ ├── PNG_REFRESH.hpng
│ │ │ ├── X_BOX.xpm
│ │ │ ├── X_GAME_PROFILE.xpm
│ │ │ ├── X_HOTKEY_SETTINGS.xpm
│ │ │ ├── X_SETTINGS.xpm
│ │ │ ├── fontawesome.S
│ │ │ ├── fontawesome_macos.S
│ │ │ ├── icons8-checkmark-yes-32.hpng
│ │ │ ├── icons8-error-32.hpng
│ │ │ ├── resources.cpp
│ │ │ └── resources.h
│ │ ├── installer.nsi
│ │ ├── resource.h
│ │ └── update.sh
│ ├── tools/
│ │ └── ShaderCacheMerger.cpp
│ └── util/
│ ├── CMakeLists.txt
│ ├── ChunkedHeap/
│ │ └── ChunkedHeap.h
│ ├── DXGIWrapper/
│ │ └── DXGIWrapper.h
│ ├── EventService.h
│ ├── Fiber/
│ │ ├── Fiber.h
│ │ ├── FiberUnix.cpp
│ │ └── FiberWin.cpp
│ ├── ImageWriter/
│ │ ├── bmp.h
│ │ └── tga.h
│ ├── IniParser/
│ │ ├── IniParser.cpp
│ │ └── IniParser.h
│ ├── MemMapper/
│ │ ├── MemMapper.h
│ │ ├── MemMapperUnix.cpp
│ │ └── MemMapperWin.cpp
│ ├── ScreenSaver/
│ │ └── ScreenSaver.h
│ ├── SystemInfo/
│ │ ├── SystemInfo.cpp
│ │ ├── SystemInfo.h
│ │ ├── SystemInfoLinux.cpp
│ │ ├── SystemInfoMac.cpp
│ │ ├── SystemInfoStub.cpp
│ │ ├── SystemInfoUnix.cpp
│ │ └── SystemInfoWin.cpp
│ ├── ThreadPool/
│ │ └── ThreadPool.h
│ ├── VirtualHeap/
│ │ ├── VirtualHeap.cpp
│ │ └── VirtualHeap.h
│ ├── Zir/
│ │ ├── Core/
│ │ │ ├── IR.cpp
│ │ │ ├── IR.h
│ │ │ ├── ZirUtility.h
│ │ │ ├── ZpIRBuilder.h
│ │ │ ├── ZpIRDebug.h
│ │ │ ├── ZpIRPasses.h
│ │ │ └── ZpIRScheduler.h
│ │ ├── EmitterGLSL/
│ │ │ ├── ZpIREmitGLSL.cpp
│ │ │ └── ZpIREmitGLSL.h
│ │ └── Passes/
│ │ ├── RegisterAllocatorForGLSL.cpp
│ │ └── ZpIRRegisterAllocator.cpp
│ ├── boost/
│ │ └── bluetooth.h
│ ├── bootSound/
│ │ ├── BootSoundReader.cpp
│ │ └── BootSoundReader.h
│ ├── containers/
│ │ ├── IntervalBucketContainer.h
│ │ ├── LookupTableL3.h
│ │ ├── RangeStore.h
│ │ ├── SmallBitset.h
│ │ ├── flat_hash_map.hpp
│ │ └── robin_hood.h
│ ├── crypto/
│ │ ├── aes128.cpp
│ │ ├── aes128.h
│ │ ├── crc32.cpp
│ │ ├── crc32.h
│ │ ├── md5.cpp
│ │ └── md5.h
│ ├── helpers/
│ │ ├── ClassWrapper.h
│ │ ├── ConcurrentQueue.h
│ │ ├── MapAdaptor.h
│ │ ├── MemoryPool.h
│ │ ├── Semaphore.h
│ │ ├── Serializer.cpp
│ │ ├── Serializer.h
│ │ ├── Singleton.h
│ │ ├── StringBuf.h
│ │ ├── StringHelpers.h
│ │ ├── StringParser.h
│ │ ├── SystemException.h
│ │ ├── TempState.h
│ │ ├── enum_array.hpp
│ │ ├── fixedSizeList.h
│ │ ├── fspinlock.h
│ │ ├── helpers.cpp
│ │ ├── helpers.h
│ │ └── ringbuffer.h
│ ├── highresolutiontimer/
│ │ ├── HighResolutionTimer.cpp
│ │ └── HighResolutionTimer.h
│ ├── libusbWrapper/
│ │ ├── libusbWrapper.cpp
│ │ └── libusbWrapper.h
│ ├── math/
│ │ ├── glm.h
│ │ ├── quaternion.h
│ │ ├── vector2.h
│ │ └── vector3.h
│ └── tinyxml2/
│ ├── tinyxml2.cpp
│ └── tinyxml2.h
└── vcpkg.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: false
AlignOperands: true
AlignTrailingComments: true
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: false
AllowShortLambdasOnASingleLine: Inline
AlwaysBreakTemplateDeclarations: true
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: Always
AfterEnum: true
AfterExternBlock: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
BeforeElse: true
BeforeWhile: true
SplitEmptyFunction: false
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: true
ColumnLimit: 0
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
IndentWidth: 4
KeepEmptyLinesAtTheStartOfBlocks: false
Language: Cpp
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCSpaceAfterProperty: false
PointerAlignment: Left
ReflowComments: true
SortIncludes: false
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceBeforeCtorInitializerColon: true
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Latest
TabWidth: 4
UseTab: Always
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Cemu Discord
url: https://discord.com/invite/5psYsup
about: If you need technical support with Cemu or have other questions the best place to ask is on the official Cemu Discord linked here
================================================
FILE: .github/ISSUE_TEMPLATE/emulation_bug_report.yaml
================================================
# Docs - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
name: Bug Report
description: Report an issue with Cemu emulator
title: "Enter a title for the bug report here"
labels: bug
body:
- type: markdown
id: md_readme
attributes:
value: |
## Important: Read First
If you discovered a bug you can report it here. Please make sure of the following first:
- That you are using the latest version of Cemu
- Only report something if you are sure it's a bug and not any technical issue on your end. For troubleshooting help see the [links page](https://github.com/cemu-project/Cemu#links)
- Problems specific to a single game should be reported on the [compatibility wiki](https://wiki.cemu.info/wiki/Main_Page) instead
- Verify that your problem isn't already mentioned on the [issue tracker](https://github.com/cemu-project/Cemu/issues)
Additionally, be aware that graphic packs can also causes issues. There is a separate issue tracker for graphic pack bugs over at the [graphic pack repository](https://github.com/cemu-project/cemu_graphic_packs)
- type: textarea
id: current_behavior
attributes:
label: Current Behavior
description: "What the bug is, in a brief description"
validations:
required: true
- type: textarea
id: expected_behavior
attributes:
label: Expected Behavior
description: "What did you expect to happen?"
validations:
required: true
- type: textarea
id: steps_to_reproduce
attributes:
label: Steps to Reproduce
description: "How to reproduce the issue"
validations:
required: true
- type: textarea
id: sys_info
attributes:
label: System Info (Optional)
description: "Your PC specifications. Usually only the operating system and graphics card is important. But feel free to add more info."
placeholder: |
Info
OS: Windows 10
GPU: NVIDIA GeForce RTX 4090
value: |
OS:
GPU:
- type: textarea
id: emulation_settings
attributes:
label: Emulation Settings (Optional)
description: |
Any non-default settings. You can leave this empty if you didn't change anything other than input settings.
validations:
required: false
- type: textarea
id: logs_files
attributes:
label: "Logs (Optional)"
description: |
"Attach `log.txt` from your Cemu folder (*File > Open Cemu folder*)".
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/feature_report.yaml
================================================
# Docs - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
name: Feature suggestion
description: Suggest a new feature
title: "Enter a title for the suggestion here"
labels: feature request
body:
- type: markdown
id: md_readme
attributes:
value: |
## Important: Read First
While we appreciate suggestions, it is important to note that we are a very small team and there are already many more ideas than we could ever implement in the near future. Therefore, please only suggest something if you believe it is a great addition and the idea is reasonably unique.
*Avoid* to create suggestions for:
- Overly obvious features ("Game xyz does not work and should be fixed", "Wiimote support should be improved", "You should add an Android port", "Copy feature xyz from another emulator", "A button to pause/stop emulation")
- Niche features which are only interesting to a tiny percentage of users
- Large scale features ("Add a Metal backend for MacOS", "Add ARM support", "Add savestates")
Note that this doesn't mean we aren't interested in these ideas, but rather we likely have them planned anyway and it's mostly up to finding the time to implement them.
If you believe your idea is worthwhile even if it doesn't meet all the criteria above, you can still try suggesting it but we might close it.
- type: textarea
id: idea_suggestion
attributes:
label: Your suggestion
description: "Describe what your suggestion is in as much detail as possible"
validations:
required: true
================================================
FILE: .github/workflows/build.yml
================================================
name: Build Cemu
on:
workflow_call:
inputs:
next_version_major:
required: false
type: string
next_version_minor:
required: false
type: string
env:
VCPKG_ROOT: "${{github.workspace}}/dependencies/vcpkg"
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
VCPKG_FORCE_DOWNLOADED_BINARIES: true
jobs:
build-ubuntu:
continue-on-error: true
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
arch: x64
- os: ubuntu-22.04-arm
arch: arm
name: build-ubuntu-${{ matrix.arch }}
runs-on: ${{ matrix.os }}
steps:
- name: "Checkout repo"
uses: actions/checkout@v6
with:
submodules: "recursive"
fetch-depth: 0
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is release"
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
run: |
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
- name: "Install system dependencies"
run: |
sudo apt update -qq
sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libudev-dev nasm ninja-build libbluetooth-dev
- name: "Bootstrap vcpkg"
run: |
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
- name: 'Setup NuGet Credentials for vcpkg'
shell: 'bash'
run: |
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
sources add \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
-storepasswordincleartext \
-name "GitHub" \
-username "${{ github.repository_owner }}" \
-password "${{ secrets.GITHUB_TOKEN }}"
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
setapikey "${{ secrets.GITHUB_TOKEN }}" \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
- name: "cmake"
run: |
cmake -S . -B build ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja
- name: "Build Cemu"
run: |
cmake --build build
- name: Prepare artifact
run: mv bin/Cemu_release bin/Cemu
- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: cemu-bin-linux-${{ matrix.arch }}
path: ./bin/Cemu
build-appimage:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
arch: x64
- os: ubuntu-22.04-arm
arch: arm
name: build-appimage-${{ matrix.arch }}
runs-on: ${{ matrix.os }}
needs: build-ubuntu
steps:
- name: Checkout Upstream Repo
uses: actions/checkout@v6
- uses: actions/download-artifact@v8
with:
name: cemu-bin-linux-${{ matrix.arch }}
path: bin
- name: "Install system dependencies"
run: |
sudo apt update -qq
sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build appstream libbluetooth-dev
- name: "Build AppImage"
run: |
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
export DEPLOY_GTK_VERSION=3
dist/linux/appimage.sh ${{ runner.arch }}
- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: cemu-appimage-${{ matrix.arch }}
path: artifacts
build-windows:
runs-on: windows-2022
steps:
- name: "Checkout repo"
uses: actions/checkout@v6
with:
submodules: "recursive"
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "Build mode is release"
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
run: |
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
- name: "Setup cmake"
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.29.0'
- name: "Bootstrap vcpkg"
run: |
./dependencies/vcpkg/bootstrap-vcpkg.bat
- name: 'Setup NuGet Credentials for vcpkg'
shell: 'bash'
run: |
`./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \
sources add \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
-storepasswordincleartext \
-name "GitHub" \
-username "${{ github.repository_owner }}" \
-password "${{ secrets.GITHUB_TOKEN }}"
`./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \
setapikey "${{ secrets.GITHUB_TOKEN }}" \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
- name: "cmake"
run: |
mkdir -p build
cd build
echo "[INFO] BUILD_FLAGS: ${{ env.BUILD_FLAGS }}"
echo "[INFO] BUILD_MODE: ${{ env.BUILD_MODE }}"
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DVCPKG_INSTALL_OPTIONS="--clean-after-build"
- name: "Build Cemu"
run: |
cd build
cmake --build . --config ${{ env.BUILD_MODE }}
- name: Prepare artifact
run: Rename-Item bin/Cemu_release.exe Cemu.exe
- name: Build NSIS Installer
shell: cmd
run: |
cd src\resource
makensis /DPRODUCT_VERSION=${{ inputs.next_version_major }}.${{ inputs.next_version_minor }} installer.nsi
- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: cemu-bin-windows-x64
path: ./bin/Cemu.exe
- name: Upload NSIS Installer
uses: actions/upload-artifact@v6
with:
name: cemu-installer-windows-x64
path: ./src/resource/cemu-${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}-windows-x64-installer.exe
build-macos:
runs-on: macos-14
strategy:
matrix:
arch: [x86_64, arm64]
steps:
- name: "Checkout repo"
uses: actions/checkout@v6
with:
submodules: "recursive"
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is release"
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
run: |
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
- name: "Install system dependencies"
run: |
brew update
brew install ninja nasm automake libtool
- name: "Install molten-vk"
run: |
curl -L -O https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar
tar xf MoltenVK-macos-privateapi.tar
sudo mkdir -p /usr/local/lib
sudo cp MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib /usr/local/lib
- name: "Setup cmake"
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.29.0'
- name: "Bootstrap vcpkg"
run: |
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
- name: 'Setup NuGet Credentials for vcpkg'
shell: 'bash'
run: |
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
sources add \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
-storepasswordincleartext \
-name "GitHub" \
-username "${{ github.repository_owner }}" \
-password "${{ secrets.GITHUB_TOKEN }}"
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
setapikey "${{ secrets.GITHUB_TOKEN }}" \
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
- name: "cmake"
run: |
mkdir build
cd build
cmake .. ${{ env.BUILD_FLAGS }} \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} \
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} \
-DMACOS_BUNDLE=ON \
-G Ninja
- name: "Build Cemu"
run: |
cmake --build build
- name: Prepare artifact
run: |
mkdir bin/Cemu_app
mv bin/Cemu_release.app bin/Cemu_app/Cemu.app
mv bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu_release bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu
sed -i '' 's/Cemu_release/Cemu/g' bin/Cemu_app/Cemu.app/Contents/Info.plist
chmod a+x bin/Cemu_app/Cemu.app/Contents/MacOS/{Cemu,update.sh}
ln -s /Applications bin/Cemu_app/Applications
hdiutil create ./bin/tmp.dmg -ov -volname "Cemu" -fs HFS+ -srcfolder "./bin/Cemu_app"
hdiutil convert ./bin/tmp.dmg -format UDZO -o bin/Cemu.dmg
rm bin/tmp.dmg
- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: cemu-bin-macos-${{ matrix.arch }}
path: ./bin/Cemu.dmg
================================================
FILE: .github/workflows/build_check.yml
================================================
name: Build check
on:
pull_request:
paths-ignore:
- "*.md"
types:
- opened
- synchronize
- reopened
push:
paths-ignore:
- "*.md"
branches:
- main
jobs:
build:
uses: ./.github/workflows/build.yml
================================================
FILE: .github/workflows/deploy_release.yml
================================================
name: Deploy release
on:
workflow_dispatch:
inputs:
changelog0:
description: 'Enter the changelog lines for this release. Each line is a feature / bullet point. Do not use dash.'
required: true
type: string
changelog1:
description: 'Feature 2'
required: false
type: string
changelog2:
description: 'Feature 3'
required: false
type: string
changelog3:
description: 'Feature 4'
required: false
type: string
changelog4:
description: 'Feature 5'
required: false
type: string
changelog5:
description: 'Feature 6'
required: false
type: string
changelog6:
description: 'Feature 7'
required: false
type: string
changelog7:
description: 'Feature 8'
required: false
type: string
changelog8:
description: 'Feature 9'
required: false
type: string
changelog9:
description: 'Feature 10'
required: false
type: string
jobs:
calculate-version:
name: Calculate Version
uses: ./.github/workflows/determine_release_version.yml
call-release-build:
uses: ./.github/workflows/build.yml
needs: calculate-version
with:
next_version_major: ${{ needs.calculate-version.outputs.next_version_major }}
next_version_minor: ${{ needs.calculate-version.outputs.next_version_minor }}
deploy:
name: Deploy release
runs-on: ubuntu-22.04
needs: [call-release-build, calculate-version]
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Generate changelog
id: generate_changelog
run: |
CHANGELOG=""
if [ -n "${{ github.event.inputs.changelog0 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog0 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog1 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog1 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog2 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog2 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog3 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog3 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog4 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog4 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog5 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog5 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog6 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog6 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog7 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog7 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog8 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog8 }}\n"; fi
if [ -n "${{ github.event.inputs.changelog9 }}" ]; then CHANGELOG="$CHANGELOG- ${{ github.event.inputs.changelog9 }}\n"; fi
echo -e "$CHANGELOG"
echo "RELEASE_BODY=$CHANGELOG" >> $GITHUB_ENV
- uses: actions/download-artifact@v8
with:
name: cemu-bin-linux-x64
path: cemu-bin-linux-x64
- uses: actions/download-artifact@v8
with:
name: cemu-appimage-x64
path: cemu-appimage-x64
- uses: actions/download-artifact@v8
with:
name: cemu-bin-windows-x64
path: cemu-bin-windows-x64
- uses: actions/download-artifact@v8
with:
name: cemu-installer-windows-x64
path: cemu-installer-windows-x64
- uses: actions/download-artifact@v8
with:
pattern: cemu-bin-macos*
path: cemu-macos
- name: Initialize
run: |
mkdir upload
sudo apt install zip
- name: Set version dependent vars
run: |
echo "Version: ${{ needs.calculate-version.outputs.next_version }}"
echo "CEMU_FOLDER_NAME=Cemu_${{ needs.calculate-version.outputs.next_version }}"
echo "CEMU_VERSION=${{ needs.calculate-version.outputs.next_version }}"
echo "CEMU_FOLDER_NAME=Cemu_${{ needs.calculate-version.outputs.next_version }}" >> $GITHUB_ENV
echo "CEMU_VERSION=${{ needs.calculate-version.outputs.next_version }}" >> $GITHUB_ENV
- name: Create release from windows-bin
run: |
ls ./
ls ./bin/
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
mv cemu-bin-windows-x64/Cemu.exe ./${{ env.CEMU_FOLDER_NAME }}/Cemu.exe
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-windows-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release from windows-installer
run: cp cemu-installer-windows-x64/cemu-${{ env.CEMU_VERSION }}-windows-x64-installer.exe upload/cemu-${{ env.CEMU_VERSION }}-windows-x64-installer.exe
- name: Create appimage
run: |
VERSION=${{ env.CEMU_VERSION }}
echo "Cemu Version is $VERSION"
ls cemu-appimage-x64
mv cemu-appimage-x64/Cemu-*-x86_64.AppImage upload/Cemu-$VERSION-x86_64.AppImage
- name: Create release from linux-bin
run: |
ls ./
ls ./bin/
cp -R ./bin ./${{ env.CEMU_FOLDER_NAME }}
mv cemu-bin-linux-x64/Cemu ./${{ env.CEMU_FOLDER_NAME }}/Cemu
zip -9 -r upload/cemu-${{ env.CEMU_VERSION }}-ubuntu-22.04-x64.zip ${{ env.CEMU_FOLDER_NAME }}
rm -r ./${{ env.CEMU_FOLDER_NAME }}
- name: Create release from macos-bin
run: |
cd cemu-macos
for bin_dir in cemu-bin-macos-*; do
arch="${bin_dir##cemu-bin-macos-}"
cp $bin_dir/Cemu.dmg ../upload/cemu-${{ env.CEMU_VERSION }}-macos-12-$arch.dmg
done
- name: Create release
run: |
wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.15.0/ghr_v0.15.0_linux_amd64.tar.gz
tar xvzf ghr.tar.gz; rm ghr.tar.gz
echo "[INFO] Release tag: v${{ env.CEMU_VERSION }}"
CHANGELOG_UNESCAPED=$(printf "%s\n" "${{ env.RELEASE_BODY }}" | sed 's/\\n/\n/g')
RELEASE_BODY=$(printf "%s\n%s" \
"**Changelog:**" \
"$CHANGELOG_UNESCAPED")
ghr_v0.15.0_linux_amd64/ghr -draft -t ${{ secrets.GITHUB_TOKEN }} -n "Cemu ${{ env.CEMU_VERSION }}" -b "$RELEASE_BODY" "v${{ env.CEMU_VERSION }}" ./upload
================================================
FILE: .github/workflows/determine_release_version.yml
================================================
name: Calculate Next Version from release history
on:
workflow_dispatch:
workflow_call:
outputs:
next_version:
description: "The next semantic version"
value: ${{ jobs.calculate-version.outputs.next_version }}
next_version_major:
description: "The next semantic version (major)"
value: ${{ jobs.calculate-version.outputs.next_version_major }}
next_version_minor:
description: "The next semantic version (minor)"
value: ${{ jobs.calculate-version.outputs.next_version_minor }}
jobs:
calculate-version:
runs-on: ubuntu-latest
outputs:
next_version: ${{ steps.calculate_next_version.outputs.next_version }}
next_version_major: ${{ steps.calculate_next_version.outputs.next_version_major }}
next_version_minor: ${{ steps.calculate_next_version.outputs.next_version_minor }}
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Get all releases
id: get_all_releases
run: |
# Fetch all releases and check for API errors
RESPONSE=$(curl -s -o response.json -w "%{http_code}" "https://api.github.com/repos/${{ github.repository }}/releases?per_page=100")
if [ "$RESPONSE" -ne 200 ]; then
echo "Failed to fetch releases. HTTP status: $RESPONSE"
cat response.json
exit 1
fi
# Extract and sort tags
ALL_TAGS=$(jq -r '.[].tag_name' response.json | grep -E '^v[0-9]+\.[0-9]+(-[0-9]+)?$' | sed 's/-.*//' | sort -V | tail -n 1)
# Exit if no tags were found
if [ -z "$ALL_TAGS" ]; then
echo "No valid tags found."
exit 1
fi
echo "::set-output name=tag::$ALL_TAGS"
# echo "tag=$ALL_TAGS" >> $GITHUB_STATE
- name: Calculate next semver minor
id: calculate_next_version
run: |
LATEST_VERSION=${{ steps.get_all_releases.outputs.tag }}
# strip 'v' prefix and split into major.minor
LATEST_VERSION=${LATEST_VERSION//v/}
IFS='.' read -r -a VERSION_PARTS <<< "$LATEST_VERSION"
MAJOR=${VERSION_PARTS[0]}
MINOR=${VERSION_PARTS[1]}
# increment the minor version
MINOR=$((MINOR + 1))
NEXT_VERSION="${MAJOR}.${MINOR}"
echo "Major: $MAJOR"
echo "Minor: $MINOR"
echo "Next version: $NEXT_VERSION"
echo "::set-output name=next_version::$NEXT_VERSION"
echo "::set-output name=next_version_major::$MAJOR"
echo "::set-output name=next_version_minor::$MINOR"
================================================
FILE: .github/workflows/generate_pot.yml
================================================
name: Generate translation template
on:
pull_request:
paths-ignore:
- "*.md"
types:
- opened
- synchronize
- reopened
push:
paths-ignore:
- "*.md"
branches:
- main
jobs:
generate-pot:
runs-on: ubuntu-latest
steps:
- name: "Checkout repo"
uses: actions/checkout@v6
- name: "Install gettext"
run: |
sudo apt update -qq
sudo apt install -y gettext
- name: "Generate POT file using xgettext"
run: >
find src -name *.cpp -o -name *.hpp -o -name *.h |
xargs xgettext --from-code=utf-8 -w 100
--keyword="_" --keyword="wxTRANSLATE" --keyword="wxPLURAL:1,2"
--keyword="_tr" --keyword="TR_NOOP"
--check=space-ellipsis --omit-header
-o cemu.pot
- name: Upload artifact
uses: actions/upload-artifact@v6
with:
name: POT file
path: ./cemu.pot
if-no-files-found: error
================================================
FILE: .gitignore
================================================
*.slo
*.lo
*.o
*.obj
*.gch
*.pch
*.so
*.dylib
*.dll
*.a
*.lib
*.exe
*.out
*.app
.vs
.vscode
.idea/
build/
cmake-build-*/
out/
.cache/
bin/Cemu_*
bin/Cemu_*.exe
# Cemu bin files
bin/otp.bin
bin/seeprom.bin
bin/log.txt
bin/Cemu_*.pdb
bin/Cemu_*.ilk
bin/Cemu.exe.backup
bin/mlc01/*
bin/settings.xml
bin/network_services.xml
bin/title_list_cache.xml
bin/debugger/*
bin/sdcard/*
bin/screenshots/*
bin/dump/*
bin/cafeLibs/*
bin/portable/*
bin/keys.txt
!bin/shaderCache/info.txt
bin/shaderCache/*
bin/controllerProfiles/*
!bin/gameProfiles/default/*
bin/gameProfiles/*
bin/graphicPacks/*
# Ignore Finder view option files created by OS X
.DS_Store
================================================
FILE: .gitmodules
================================================
[submodule "dependencies/ZArchive"]
path = dependencies/ZArchive
url = https://github.com/Exzap/ZArchive
shallow = true
[submodule "dependencies/cubeb"]
path = dependencies/cubeb
url = https://github.com/mozilla/cubeb
shallow = true
[submodule "dependencies/vcpkg"]
path = dependencies/vcpkg
url = https://github.com/microsoft/vcpkg
shallow = false
[submodule "dependencies/Vulkan-Headers"]
path = dependencies/Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers
shallow = true
[submodule "dependencies/imgui"]
path = dependencies/imgui
url = https://github.com/ocornut/imgui
shallow = true
[submodule "dependencies/metal-cpp"]
path = dependencies/metal-cpp
url = https://github.com/bkaradzic/metal-cpp.git
shallow = true
[submodule "dependencies/xbyak_aarch64"]
path = dependencies/xbyak_aarch64
url = https://github.com/fujitsu/xbyak_aarch64
================================================
FILE: BUILD.md
================================================
# Build Instructions
## Table of Contents
- [Windows](#windows)
- [Linux](#linux)
- [Dependencies](#dependencies)
- [For Arch and derivatives:](#for-arch-and-derivatives)
- [For Debian, Ubuntu and derivatives](#for-debian-ubuntu-and-derivatives)
- [For Fedora and derivatives:](#for-fedora-and-derivatives)
- [Build Cemu](#build-cemu)
- [CMake and Clang](#cmake-and-clang)
- [GCC](#gcc)
- [Debug Build](#debug-build)
- [Troubleshooting Steps](#troubleshooting-steps)
- [Compiling Errors](#compiling-errors)
- [Building Errors](#building-errors)
- [macOS](#macos)
- [Installing brew](#installing-brew)
- [Installing Tool Dependencies](#installing-tool-dependencies)
- [Installing Library Dependencies](#installing-library-dependencies)
- [Build Cemu using CMake](#build-cemu-using-cmake)
- [FreeBSD](#freebsd)
- [Installing Dependencies](#installing-dependencies)
- [Build Cemu on BSD with CMake](#build-cemu-on-bsd-with-cmake)
- [Updating Cemu and source code](#updating-cemu-and-source-code)
## Windows
Prerequisites:
- git
- A recent version of Visual Studio 2022 with the following additional components:
- C++ CMake tools for Windows
- Windows 10/11 SDK
Instructions for Visual Studio 2022:
1. Run `git clone --recursive https://github.com/cemu-project/Cemu`
2. Open the newly created Cemu directory in Visual Studio using the "Open a local folder" option
3. In the menu select Project -> Configure CMake. Wait until it is done, this may take a long time
4. You can now build, run and debug Cemu
Any other IDE should also work as long as it has CMake and MSVC support. CLion and Visual Studio Code have been confirmed to work.
## Linux
To compile Cemu, a recent enough compiler and STL with C++20 support is required! Clang-15 or higher is what we recommend.
### Dependencies
#### For Arch and derivatives:
`sudo pacman -S --needed base-devel bluez-libs clang cmake freeglut git glm gtk3 libgcrypt libpulse libsecret linux-headers llvm nasm ninja systemd unzip zip`
#### For Debian, Ubuntu and derivatives:
`sudo apt install -y cmake curl clang-15 freeglut3-dev git libbluetooth-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libtool nasm ninja-build`
You may also need to install `libusb-1.0-0-dev` as a workaround for an issue with the vcpkg hidapi package.
At Step 3 in [Build Cemu using cmake and clang](#build-cemu-using-cmake-and-clang), use the following command instead:
`cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
#### For Fedora and derivatives:
`sudo dnf install bluez-libs-devel clang cmake cubeb-devel freeglut-devel git glm-devel gtk3-devel kernel-headers libgcrypt-devel libsecret-devel libtool libusb1-devel llvm nasm ninja-build perl-core systemd-devel wayland-protocols-devel zlib-devel zlib-static`
### Build Cemu
#### CMake and Clang
```
git clone --recursive https://github.com/cemu-project/Cemu
cd Cemu
cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -G Ninja
cmake --build build
```
#### GCC
If you are building using GCC, make sure you have g++ installed:
- Installation for Arch and derivatives: `sudo pacman -S gcc`
- Installation for Debian, Ubuntu and derivatives: `sudo apt install g++`
- Installation for Fedora and derivatives: `sudo dnf install gcc-c++`
```
git clone --recursive https://github.com/cemu-project/Cemu
cd Cemu
cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -G Ninja
cmake --build build
```
#### Debug Build
```
git clone --recursive https://github.com/cemu-project/Cemu
cd Cemu
cmake -S . -B build -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -G Ninja
cmake --build build
```
If you are using GCC, replace `cmake -S . -B build -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -G Ninja` with `cmake -S . -B build -DCMAKE_BUILD_TYPE=debug -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -G Ninja`
#### Troubleshooting Steps
##### Compiling Errors
This section refers to running `cmake -S...` (truncated).
* `vcpkg install failed`
* Run the following in the root directory and try running the command again (don't forget to change directories afterwards):
* `cd dependencies/vcpkg && git fetch --unshallow`
* `Please ensure you're using the latest port files with git pull and vcpkg update.`
* Either:
* Update vcpkg by running by the following command:
* `git submodule update --remote dependencies/vcpkg`
* If you are sure vcpkg is up to date, check the following logs:
* `Cemu/dependencies/vcpkg/buildtrees/wxwidgets/config-x64-linux-out.log`
* `Cemu/dependencies/vcpkg/buildtrees/libsystemd/config-x64-linux-dbg-meson-log.txt.log`
* `Cemu/dependencies/vcpkg/buildtrees/libsystemd/config-x64-linux-dbg-out.log`
* Not able to find Ninja.
* Add the following and try running the command again:
* `-DCMAKE_MAKE_PROGRAM=/usr/bin/ninja`
* Compiling failed during the boost-build dependency.
* It means you don't have a working/good standard library installation. Check the integrity of your system headers and making sure that C++ related packages are installed and intact.
* Compiling failed during rebuild after `git pull` with an error that mentions RPATH
* Add the following and try running the command again:
* `-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON`
* Environment variable `VCPKG_FORCE_SYSTEM_BINARIES` must be set.
* Execute the folowing and then try running the command again:
* `export VCPKG_FORCE_SYSTEM_BINARIES=1`
* If you are getting a random error, read the [package-name-and-platform]-out.log and [package-name-and-platform]-err.log for the actual reason to see if you might be lacking the headers from a dependency.
If you are getting a different error than any of the errors listed above, you may either open an issue in this repo or try using [GCC](#gcc). Make sure your standard library and compilers are updated since Cemu uses a lot of modern features!
##### Building Errors
This section refers to running `cmake --build build`.
* `main.cpp.o: in function 'std::__cxx11::basic_string...`
* You likely are experiencing a clang-14 issue. This can only be fixed by either lowering the clang version or using GCC, see [GCC](#gcc).
* `fatal error: 'span' file not found`
* You're either missing `libstdc++` or are using a version that's too old. Install at least v10 with your package manager, eg `sudo apt install libstdc++-10-dev`. See [#644](https://github.com/cemu-project/Cemu/issues/644).
* `undefined libdecor_xx`
* You are likely experiencing an issue with sdl2 package that comes with vcpkg. Delete sdl2 from vcpkg.json in source file and recompile.
If you are getting a different error than any of the errors listed above, you may either open an issue in this repo or try using [GCC](#gcc). Make sure your standard library and compilers are updated since Cemu uses a lot of modern features!
## macOS
To compile Cemu, a recent enough compiler and STL with C++20 support is required! LLVM 13 and below
don't support the C++20 feature set required, so either install LLVM from Homebrew or make sure that
you have a recent enough version of Xcode. Xcode 15 is known to work. The OpenGL graphics API isn't
supported on macOS, so Vulkan must be used through the Molten-VK compatibility layer.
### Installing brew
1. `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
2. Set up the Homebrew shell environment:
1. **On an Intel Mac:** `eval "$(/usr/local/Homebrew/bin/brew shellenv)"`
2. **On an Apple Silicon Mac:** eval `"$(/opt/homebrew/bin/brew shellenv)"`
### Installing Tool Dependencies
The native versions of these can be used regardless of what type of Mac you have.
`brew install git cmake ninja nasm automake libtool`
### Installing Library Dependencies
**On Apple Silicon Macs, Rosetta 2 and the x86_64 version of Homebrew must be used to install these dependencies:**
1. `softwareupdate --install-rosetta` # Install Rosetta 2 if you don't have it. This only has to be done once
2. `arch -x86_64 zsh` # run an x64 shell
3. `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
4. `eval "$(/usr/local/Homebrew/bin/brew shellenv)"`
Then install the dependencies:
`brew install boost molten-vk`
### Build Cemu using CMake
1. `git clone --recursive https://github.com/cemu-project/Cemu`
2. `cd Cemu`
3. `cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DCMAKE_OSX_ARCHITECTURES=x86_64 -G Ninja`
4. `cmake --build build`
5. You should now have a Cemu executable file in the /bin folder, which you can run using `./bin/Cemu_release`.
#### Troubleshooting steps
- If step 3 gives you an error about not being able to find ninja, try appending `-DCMAKE_MAKE_PROGRAM=/usr/local/bin/ninja` to the command and running it again.
## FreeBSD
The following instructions to build Cemu on FreeBSD are experimental. Some features available on other platforms are not available on FreeBSD (discord rich presence, bluetooth/support for actual Wii U controllers, auto-updates, etc.)
To compile Cemu, a recent enough compiler and STL with C++20 support is required! Clang-15 or higher is what we recommend. Any version of FreeBSD 13.3-RELEASE or higher comes bundled with LLVM > version 15 as part of the base system. However, if for whatever reason your system lacks a recent version of LLVM you can install one by executing:
`sudo pkg install llvm15`
Or a higher version as desired.
### Installing Dependencies
`sudo pkg install boost-libs cmake-core curl glslang gtk3 libzip ninja png pkgconf pugixml rapidjson sdl2 wayland wayland-protocols wx32-gtk3 xorg zstd`
### Build Cemu on BSD with CMake
```
git clone --recursive https://github.com/cemu-project/Cemu
cd Cemu
cmake -B build -DCMAKE_BUILD_TYPE=release -DENABLE_BLUEZ=OFF -DENABLE_DISCORD_RPC=OFF -DENABLE_FERAL_GAMEMODE=OFF -DENABLE_HIDAPI=OFF -DENABLE_VCPKG=OFF -G Ninja
cmake --build build
cd build && ninja install
```
You should now have a Cemu executable file in the /bin folder, which you can run using `./bin/Cemu_release`.
## Updating Cemu and source code
1. To update your Cemu local repository, use the command `git pull --recurse-submodules` (run this command on the Cemu root).
- This should update your local copy of Cemu and all of its dependencies.
2. Then, you can rebuild Cemu using the steps listed above, according to whether you use Linux or Windows.
If CMake complains about Cemu already being compiled or another similar error, try deleting the `CMakeCache.txt` file inside the `build` folder and retry building.
## CMake configure flags
Some flags can be passed during CMake configure to customise which features are enabled on build.
Example usage: `cmake -S . -B build -DCMAKE_BUILD_TYPE=release -DENABLE_SDL=ON -DENABLE_VULKAN=OFF`
### All platforms
| Flag | | Description | Default | Note |
|--------------------|:--|-----------------------------------------------------------------------------|---------|--------------------|
| ALLOW_PORTABLE | | Allow Cemu to use the `portable` directory to store configs and data | ON | |
| CEMU_CXX_FLAGS | | Flags passed straight to the compiler, e.g. `-march=native`, `-Wall`, `/W3` | "" | |
| ENABLE_CUBEB | | Enable cubeb audio backend | ON | |
| ENABLE_DISCORD_RPC | | Enable Discord Rich presence support | ON | |
| ENABLE_OPENGL | | Enable OpenGL graphics backend | ON | Currently required |
| ENABLE_HIDAPI | | Enable HIDAPI (used for Wiimote controller API) | ON | |
| ENABLE_SDL | | Enable SDLController controller API | ON | Currently required |
| ENABLE_VCPKG | | Use VCPKG package manager to obtain dependencies | ON | |
| ENABLE_VULKAN | | Enable the Vulkan graphics backend | ON | |
| ENABLE_WXWIDGETS | | Enable wxWidgets UI | ON | Currently required |
### Windows
| Flag | Description | Default | Note |
|--------------------|-----------------------------------|---------|--------------------|
| ENABLE_DIRECTAUDIO | Enable DirectAudio audio backend | ON | Currently required |
| ENABLE_DIRECTINPUT | Enable DirectInput controller API | ON | Currently required |
| ENABLE_XAUDIO | Enable XAudio audio backend | ON | |
| ENABLE_XINPUT | Enable XInput controller API | ON | |
### Linux
| Flag | Description | Default |
|-----------------------|----------------------------------------------------|---------|
| ENABLE_BLUEZ | Build with Bluez (used for Wiimote controller API) | ON |
| ENABLE_FERAL_GAMEMODE | Enable Feral Interactive GameMode support | ON |
| ENABLE_WAYLAND | Enable Wayland support | ON |
### macOS
| Flag | Description | Default |
|--------------|------------------------------------------------|---------|
| MACOS_BUNDLE | MacOS executable will be an application bundle | OFF |
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.21.1)
option(ENABLE_VCPKG "Enable the vcpkg package manager" ON)
option(MACOS_BUNDLE "The executable when built on macOS will be created as an application bundle" OFF)
option(ALLOW_PORTABLE "Allow Cemu to be run in portable mode" ON)
# used by CI script to set version:
set(EMULATOR_VERSION_MAJOR "0" CACHE STRING "")
set(EMULATOR_VERSION_MINOR "0" CACHE STRING "")
set(EMULATOR_VERSION_PATCH "0" CACHE STRING "")
execute_process(
COMMAND git log --format=%h -1
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
OUTPUT_VARIABLE GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions(-DEMULATOR_HASH=${GIT_HASH})
if (ENABLE_VCPKG)
# check if vcpkg is shallow and unshallow it if necessary
execute_process(
COMMAND git rev-parse --is-shallow-repository
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/dependencies/vcpkg
OUTPUT_VARIABLE is_vcpkg_shallow
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(is_vcpkg_shallow STREQUAL "true")
message(STATUS "vcpkg is shallow. Unshallowing it now...")
execute_process(
COMMAND git fetch --unshallow
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/dependencies/vcpkg"
RESULT_VARIABLE result
OUTPUT_VARIABLE output
)
endif()
if(UNIX AND NOT APPLE)
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_linux;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
elseif(APPLE)
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_mac;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
else()
set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_win;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports")
endif()
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/vcpkg/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")
# Set this so that all the various find_package() calls don't need an explicit
# CONFIG option
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
if (WIN32)
set(VCPKG_TARGET_TRIPLET "x64-windows-static" CACHE STRING "")
endif()
endif()
project(Cemu VERSION 2.0.0)
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_compile_definitions($<$<CONFIG:Debug>:CEMU_DEBUG_ASSERT>) # if build type is debug, set CEMU_DEBUG_ASSERT
add_definitions(-DEMULATOR_VERSION_MAJOR=${EMULATOR_VERSION_MAJOR})
add_definitions(-DEMULATOR_VERSION_MINOR=${EMULATOR_VERSION_MINOR})
add_definitions(-DEMULATOR_VERSION_PATCH=${EMULATOR_VERSION_PATCH})
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# enable link time optimization for release builds
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO ON)
if (MSVC)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT CemuBin)
# floating point model: precise, fiber safe optimizations
add_compile_options(/EHsc /fp:precise)
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# Speeds up static linking (especially helpful in incremental compilation)
if((CMAKE_LINKER MATCHES ".*lld-link.*") AND (CMAKE_AR MATCHES ".*llvm-lib.*"))
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY STATIC_LIBRARY_OPTIONS /llvmlibthin)
endif()
else()
add_compile_options(/GT)
endif()
# enable additional optimization flags for release builds
add_compile_options($<$<CONFIG:Release,RelWithDebInfo>:/Oi>) # enable intrinsic functions
add_compile_options($<$<CONFIG:Release,RelWithDebInfo>:/Ot>) # favor speed
endif()
if (APPLE)
enable_language(OBJC OBJCXX)
set(CMAKE_OSX_DEPLOYMENT_TARGET "13.4")
endif()
if (UNIX AND NOT APPLE)
option(ENABLE_WAYLAND "Build with Wayland support" ON)
option(ENABLE_FERAL_GAMEMODE "Enables Feral Interactive GameMode Support" ON)
option(ENABLE_BLUEZ "Build with Bluez support" ON)
endif()
if (APPLE)
set(ENABLE_METAL_DEFAULT ON)
else()
set(ENABLE_METAL_DEFAULT OFF)
endif()
option(ENABLE_OPENGL "Enables the OpenGL backend" ON)
option(ENABLE_VULKAN "Enables the Vulkan backend" ON)
option(ENABLE_METAL "Enables the Metal backend" ${ENABLE_METAL_DEFAULT})
option(ENABLE_DISCORD_RPC "Enables the Discord Rich Presence feature" ON)
if (ENABLE_METAL AND NOT APPLE)
message(FATAL_ERROR "Metal backend is only supported on Apple platforms")
endif()
# input backends
if (WIN32)
option(ENABLE_XINPUT "Enables the usage of XInput" ON)
option(ENABLE_DIRECTINPUT "Enables the usage of DirectInput" ON)
add_compile_definitions(HAS_DIRECTINPUT)
endif()
option(ENABLE_HIDAPI "Build with HIDAPI" ON)
option(ENABLE_SDL "Enables the SDLController backend" ON)
# audio backends
if (WIN32)
option(ENABLE_DIRECTAUDIO "Enables the directaudio backend" ON)
option(ENABLE_XAUDIO "Enables the xaudio backend" ON)
endif()
option(ENABLE_CUBEB "Enabled cubeb backend" ON)
option(ENABLE_WXWIDGETS "Build with wxWidgets UI (Currently required)" ON)
set(THREADS_PREFER_PTHREAD_FLAG true)
find_package(Threads REQUIRED)
find_package(SDL2 REQUIRED)
find_package(CURL REQUIRED)
find_package(pugixml REQUIRED)
find_package(RapidJSON REQUIRED)
find_package(Boost COMPONENTS program_options filesystem nowide REQUIRED)
find_package(libzip REQUIRED)
find_package(glslang REQUIRED)
find_package(ZLIB REQUIRED)
find_package(zstd MODULE REQUIRED) # MODULE so that zstd::zstd is available
find_package(OpenSSL COMPONENTS Crypto SSL REQUIRED)
find_package(glm REQUIRED)
find_package(fmt 9 REQUIRED)
find_package(PNG REQUIRED)
# glslang versions older than 11.11.0 define targets without a namespace
if (NOT TARGET glslang::SPIRV AND TARGET SPIRV)
add_library(glslang::SPIRV ALIAS SPIRV)
endif()
if (UNIX AND NOT APPLE)
find_package(X11 REQUIRED)
if (ENABLE_WAYLAND)
find_package(Wayland REQUIRED Client)
find_package(WaylandScanner REQUIRED)
find_package(WaylandProtocols 1.15 REQUIRED)
ecm_add_wayland_client_protocol(WAYLAND_PROTOCOL_SRCS
PROTOCOL "${WaylandProtocols_DATADIR}/stable/viewporter/viewporter.xml"
BASENAME viewporter)
add_library(CemuWaylandProtocols STATIC ${WAYLAND_PROTOCOL_SRCS})
target_include_directories(CemuWaylandProtocols PUBLIC "${CMAKE_CURRENT_BINARY_DIR}")
target_include_directories(CemuWaylandProtocols PRIVATE ${Wayland_INCLUDE_DIRS})
add_compile_definitions(HAS_WAYLAND)
endif()
find_package(GTK3 REQUIRED)
if(ENABLE_BLUEZ)
find_package(bluez REQUIRED)
set(SUPPORTS_WIIMOTE ON)
add_compile_definitions(HAS_BLUEZ)
endif()
endif()
if (ENABLE_VULKAN)
include_directories("dependencies/Vulkan-Headers/include")
endif()
if (ENABLE_OPENGL)
find_package(OpenGL REQUIRED)
endif()
if (ENABLE_METAL)
include_directories(${CMAKE_SOURCE_DIR}/dependencies/metal-cpp)
add_definitions(-DENABLE_METAL=1)
endif()
if (ENABLE_DISCORD_RPC)
add_compile_definitions(ENABLE_DISCORD_RPC)
endif()
if (ENABLE_HIDAPI)
find_package(hidapi REQUIRED)
set(SUPPORTS_WIIMOTE ON)
add_compile_definitions(HAS_HIDAPI)
endif ()
if(UNIX AND NOT APPLE)
if(ENABLE_FERAL_GAMEMODE)
add_compile_definitions(ENABLE_FERAL_GAMEMODE)
add_subdirectory(dependencies/gamemode EXCLUDE_FROM_ALL)
target_include_directories(gamemode INTERFACE ./dependencies/gamemode/lib)
endif()
endif()
if (ENABLE_WXWIDGETS)
find_package(wxWidgets 3.3 REQUIRED COMPONENTS base core gl propgrid xrc)
endif()
if (ENABLE_CUBEB)
if (NOT ENABLE_VCPKG)
find_package(cubeb)
endif()
if (NOT cubeb_FOUND)
option(BUILD_TESTS "" OFF)
option(BUILD_TOOLS "" OFF)
option(BUNDLE_SPEEX "" OFF)
set(USE_WINMM OFF CACHE BOOL "")
add_subdirectory("dependencies/cubeb" EXCLUDE_FROM_ALL SYSTEM)
set_property(TARGET cubeb PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
add_library(cubeb::cubeb ALIAS cubeb)
endif()
add_compile_definitions("HAS_CUBEB=1")
endif()
add_subdirectory("dependencies/ih264d" EXCLUDE_FROM_ALL)
if (CMAKE_OSX_ARCHITECTURES)
set(CEMU_ARCHITECTURE ${CMAKE_OSX_ARCHITECTURES})
else()
set(CEMU_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
endif()
if(CEMU_ARCHITECTURE MATCHES "(aarch64)|(AARCH64)|(arm64)|(ARM64)")
add_subdirectory("dependencies/xbyak_aarch64" EXCLUDE_FROM_ALL)
endif()
find_package(ZArchive)
if (NOT ZArchive_FOUND)
add_subdirectory("dependencies/ZArchive" EXCLUDE_FROM_ALL)
endif()
add_subdirectory(src)
================================================
FILE: CMakeSettings.json
================================================
{
"configurations": [
{
"name": "RelWithDebInfo",
"configurationType": "RelWithDebInfo",
"generator": "Ninja",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}"
},
{
"name": "Release",
"configurationType": "Release",
"generator": "Ninja",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}"
},
{
"name": "Debug",
"configurationType": "Debug",
"generator": "Ninja",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}"
}
]
}
================================================
FILE: CODING_STYLE.md
================================================
# Coding style guidelines for Cemu
This document describes the latest version of our coding-style guidelines. Since we did not use this style from the beginning, older code may not adhere to these guidelines. Nevertheless, use these rules even if the surrounding code does not match.
Cemu comes with a `.clang-format` file which is supported by most IDEs for formatting. Avoid auto-reformatting whole files, PRs with a lot of formatting changes are difficult to review.
## Names for variables, functions and classes
- Always prefix class member variables with `m_`
- Always prefix static class variables with `s_`
- For variable names: Camel case, starting with a lower case letter after the prefix. Examples: `m_option`, `s_audioVolume`
- For functions/class names: Use camel case starting with a capital letter. Examples: `MyClass`, `SetActive`
- Avoid underscores in variable names after the prefix. Use `m_myVariable` instead of `m_my_variable`
## About types
Cemu provides its own set of basic fixed-width types. They are:
`uint8`, `sint8`, `uint16`, `sint16`, `uint32`, `sint32`, `uint64`, `sint64`. Always use these types over something like `uint32_t`. Using `size_t` is also acceptable where suitable. Avoid C types like `int` or `long`. The only exception is when interacting with external libraries which expect these types as parameters.
## When and where to put brackets
Always put curly-brackets (`{ }`) on their own line. Example:
```
void FooBar()
{
if (m_hasFoo)
{
...
}
}
```
As an exception, you can put short lambdas onto the same line:
```
SomeFunc([]() { .... });
```
You can skip brackets for single-statement `if`. Example:
```
if (cond)
action();
```
## Printing
Avoid sprintf and similar C-style formatting API. Use `fmt::format()`.
In UI related code you can use `formatWxString`, but be aware that number formatting with this function will be locale dependent!
## Strings and encoding
We use UTF-8 encoded `std::string` where possible. Some conversions need special handling and we have helper functions for those:
```cpp
// std::filesystem::path <-> std::string (in precompiled.h)
std::string _pathToUtf8(const fs::path& path);
fs::path _utf8ToPath(std::string_view input);
// wxString <-> std::string
wxString wxString::FromUTF8(const std::string& s)
std::string wxString::utf8_string();
```
## Logging
If you want to write to log.txt use `cemuLog_log()`. The log type parameter should be mostly self-explanatory. Use `LogType::Force` if you always want to log something. For example:
`cemuLog_log(LogType::Force, "The value is {}", 123);`
## HLE and endianness
A pretty large part of Cemu's code base are re-implementations of various Cafe OS modules (e.g. `coreinit.rpl`, `gx2.rpl`...). These generally run in the context of the emulated process, thus special care has to be taken to use types with the correct size and endianness when interacting with memory.
Keep in mind that the emulated Espresso CPU is 32bit big-endian, while the host architectures targeted by Cemu are 64bit little-endian!
To keep code simple and remove the need for manual endian-swapping, Cemu has templates and aliases of the basic types with explicit endian-ness.
For big-endian types add the suffix `be`. Example: `uint32be`
When you need to store a pointer in the guest's memory. Use `MEMPTR<T>`. It will automatically store any pointer as 32bit big-endian. The pointer you store must point to memory that is within the guest address space.
## HLE interfaces
The implementation for each HLE module is inside a namespace with a matching name. E.g. `coreinit.rpl` functions go into `coreinit` namespace.
To expose a new function as callable from within the emulated machine, use `cafeExportRegister` or `cafeExportRegisterFunc`. Here is a short example:
```cpp
namespace coreinit
{
uint32 OSGetCoreCount()
{
return Espresso::CORE_COUNT;
}
void Init()
{
cafeExportRegister("coreinit", OSGetCoreCount, LogType::CoreinitThread);
}
}
```
You may also see some code which uses `osLib_addFunction` directly. This is a deprecated way of registering functions.
================================================
FILE: LICENSE.txt
================================================
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
1.5. "Incompatible With Secondary Licenses"
means
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
1.10. "Modifications"
means any of the following:
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
(b) any new file in Source Code Form that contains any Covered
Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
or
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.
================================================
FILE: README.md
================================================
# **Cemu - Wii U emulator**
[](https://github.com/cemu-project/Cemu/actions/workflows/build.yml)
[](https://discord.gg/5psYsup)
[](https://matrix.to/#/#cemu:cemu.info)
This is the code repository of Cemu, a Wii U emulator that is able to run most Wii U games and homebrew in a playable state.
It's written in C/C++ and is being actively developed with new features and fixes.
Cemu is currently only available for 64-bit Windows, Linux & macOS devices.
### Links:
- [Open Source Announcement](https://www.reddit.com/r/cemu/comments/wwa22c/cemu_20_announcement_linux_builds_opensource_and/)
- [Official Website](https://cemu.info)
- [Compatibility List/Wiki](https://wiki.cemu.info/wiki/Main_Page)
- [Official Subreddit](https://reddit.com/r/Cemu)
- [Official Discord](https://discord.gg/5psYsup)
- [Official Matrix Server](https://matrix.to/#/#cemu:cemu.info)
- [Setup Guide](https://cemu.cfw.guide)
#### Other relevant repositories:
- [Cemu-Language](https://github.com/cemu-project/Cemu-Language)
- [Cemu's Community Graphic Packs](https://github.com/cemu-project/cemu_graphic_packs)
## Download
You can download the latest Cemu releases for Windows, Linux and Mac from the [GitHub Releases](https://github.com/cemu-project/Cemu/releases/). For Linux you can also find Cemu on [flathub](https://flathub.org/apps/info.cemu.Cemu).
On Windows, Cemu is available both as an installer and in a portable format, where no installation is required besides extracting it in a safe place.
The native macOS build is currently purely experimental and should not be considered stable or ready for issue-free gameplay. There are also known issues with degraded performance due to the use of MoltenVK and Rosetta for ARM Macs. We appreciate your patience while we improve Cemu for macOS.
Pre-2.0 releases can be found on Cemu's [changelog page](https://cemu.info/changelog.html).
## Build Instructions
To compile Cemu yourself on Windows, Linux or macOS, view [BUILD.md](/BUILD.md).
## Issues
Issues with the emulator should be filed using [GitHub Issues](https://github.com/cemu-project/Cemu/issues).
The old bug tracker can be found at [bugs.cemu.info](https://bugs.cemu.info) and still contains relevant issues and feature suggestions.
## Contributing
Pull requests are very welcome. For easier coordination you can visit the developer discussion channel on [Discord](https://discord.gg/5psYsup) or alternatively the [Matrix Server](https://matrix.to/#/#cemu:cemu.info).
Before submitting a pull request, please read and follow our code style guidelines listed in [CODING_STYLE.md](/CODING_STYLE.md).
If coding isn't your thing, testing games and making detailed bug reports or updating the (usually outdated) compatibility wiki is also appreciated!
Questions about Cemu's software architecture can also be answered on Discord (or through the Matrix bridge).
## License
Cemu is licensed under [Mozilla Public License 2.0](/LICENSE.txt). Exempt from this are all files in the dependencies directory for which the licenses of the original code apply as well as some individual files in the src folder, as specified in those file headers respectively.
================================================
FILE: boost.natvis
================================================
<?xml version='1.0' encoding='utf-8'?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="boost::container::small_vector<*>">
<Expand>
<Item Name="[size]">m_holder.m_size</Item>
<ArrayItems>
<Size>m_holder.m_size</Size>
<ValuePointer>m_holder.m_start</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="boost::container::static_vector<*>">
<DisplayString>{{ size={m_holder.m_size} }}</DisplayString>
<Expand>
<Item Name="[size]" ExcludeView="simple">m_holder.m_size</Item>
<Item Name="[capacity]" ExcludeView="simple">static_capacity</Item>
<ArrayItems>
<Size>m_holder.m_size</Size>
<ValuePointer>($T1*)m_holder.storage.data</ValuePointer>
</ArrayItems>
</Expand>
</Type>
</AutoVisualizer>
================================================
FILE: cmake/ECMFindModuleHelpers.cmake
================================================
# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
ECMFindModuleHelpers
--------------------
Helper macros for find modules: ``ecm_find_package_version_check()``,
``ecm_find_package_parse_components()`` and
``ecm_find_package_handle_library_components()``.
::
ecm_find_package_version_check(<name>)
Prints warnings if the CMake version or the project's required CMake version
is older than that required by extra-cmake-modules.
::
ecm_find_package_parse_components(<name>
RESULT_VAR <variable>
KNOWN_COMPONENTS <component1> [<component2> [...]]
[SKIP_DEPENDENCY_HANDLING])
This macro will populate <variable> with a list of components found in
<name>_FIND_COMPONENTS, after checking that all those components are in the
list of ``KNOWN_COMPONENTS``; if there are any unknown components, it will print
an error or warning (depending on the value of <name>_FIND_REQUIRED) and call
``return()``.
The order of components in <variable> is guaranteed to match the order they
are listed in the ``KNOWN_COMPONENTS`` argument.
If ``SKIP_DEPENDENCY_HANDLING`` is not set, for each component the variable
<name>_<component>_component_deps will be checked for dependent components.
If <component> is listed in <name>_FIND_COMPONENTS, then all its (transitive)
dependencies will also be added to <variable>.
::
ecm_find_package_handle_library_components(<name>
COMPONENTS <component> [<component> [...]]
[SKIP_DEPENDENCY_HANDLING])
[SKIP_PKG_CONFIG])
Creates an imported library target for each component. The operation of this
macro depends on the presence of a number of CMake variables.
The <name>_<component>_lib variable should contain the name of this library,
and <name>_<component>_header variable should contain the name of a header
file associated with it (whatever relative path is normally passed to
'#include'). <name>_<component>_header_subdir variable can be used to specify
which subdirectory of the include path the headers will be found in.
``ecm_find_package_components()`` will then search for the library
and include directory (creating appropriate cache variables) and create an
imported library target named <name>::<component>.
Additional variables can be used to provide additional information:
If ``SKIP_PKG_CONFIG``, the <name>_<component>_pkg_config variable is set, and
pkg-config is found, the pkg-config module given by
<name>_<component>_pkg_config will be searched for and used to help locate the
library and header file. It will also be used to set
<name>_<component>_VERSION.
Note that if version information is found via pkg-config,
<name>_<component>_FIND_VERSION can be set to require a particular version
for each component.
If ``SKIP_DEPENDENCY_HANDLING`` is not set, the ``INTERFACE_LINK_LIBRARIES`` property
of the imported target for <component> will be set to contain the imported
targets for the components listed in <name>_<component>_component_deps.
<component>_FOUND will also be set to ``FALSE`` if any of the components in
<name>_<component>_component_deps are not found. This requires the components
in <name>_<component>_component_deps to be listed before <component> in the
``COMPONENTS`` argument.
The following variables will be set:
``<name>_TARGETS``
the imported targets
``<name>_LIBRARIES``
the found libraries
``<name>_INCLUDE_DIRS``
the combined required include directories for the components
``<name>_DEFINITIONS``
the "other" CFLAGS provided by pkg-config, if any
``<name>_VERSION``
the value of ``<name>_<component>_VERSION`` for the first component that
has this variable set (note that components are searched for in the order
they are passed to the macro), although if it is already set, it will not
be altered
.. note::
These variables are never cleared, so if
``ecm_find_package_handle_library_components()`` is called multiple times with
different components (typically because of multiple ``find_package()`` calls) then
``<name>_TARGETS``, for example, will contain all the targets found in any
call (although no duplicates).
Since pre-1.0.0.
#]=======================================================================]
include(CMakeParseArguments)
macro(ecm_find_package_version_check module_name)
if(CMAKE_VERSION VERSION_LESS 3.16.0)
message(FATAL_ERROR "CMake 3.16.0 is required by Find${module_name}.cmake")
endif()
if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 3.16.0)
message(AUTHOR_WARNING "Your project should require at least CMake 3.16.0 to use Find${module_name}.cmake")
endif()
endmacro()
macro(ecm_find_package_parse_components module_name)
set(ecm_fppc_options SKIP_DEPENDENCY_HANDLING)
set(ecm_fppc_oneValueArgs RESULT_VAR)
set(ecm_fppc_multiValueArgs KNOWN_COMPONENTS DEFAULT_COMPONENTS)
cmake_parse_arguments(ECM_FPPC "${ecm_fppc_options}" "${ecm_fppc_oneValueArgs}" "${ecm_fppc_multiValueArgs}" ${ARGN})
if(ECM_FPPC_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unexpected arguments to ecm_find_package_parse_components: ${ECM_FPPC_UNPARSED_ARGUMENTS}")
endif()
if(NOT ECM_FPPC_RESULT_VAR)
message(FATAL_ERROR "Missing RESULT_VAR argument to ecm_find_package_parse_components")
endif()
if(NOT ECM_FPPC_KNOWN_COMPONENTS)
message(FATAL_ERROR "Missing KNOWN_COMPONENTS argument to ecm_find_package_parse_components")
endif()
if(NOT ECM_FPPC_DEFAULT_COMPONENTS)
set(ECM_FPPC_DEFAULT_COMPONENTS ${ECM_FPPC_KNOWN_COMPONENTS})
endif()
if(${module_name}_FIND_COMPONENTS)
set(ecm_fppc_requestedComps ${${module_name}_FIND_COMPONENTS})
if(NOT ECM_FPPC_SKIP_DEPENDENCY_HANDLING)
# Make sure deps are included
foreach(ecm_fppc_comp ${ecm_fppc_requestedComps})
foreach(ecm_fppc_dep_comp ${${module_name}_${ecm_fppc_comp}_component_deps})
list(FIND ecm_fppc_requestedComps "${ecm_fppc_dep_comp}" ecm_fppc_index)
if("${ecm_fppc_index}" STREQUAL "-1")
if(NOT ${module_name}_FIND_QUIETLY)
message(STATUS "${module_name}: ${ecm_fppc_comp} requires ${${module_name}_${ecm_fppc_comp}_component_deps}")
endif()
list(APPEND ecm_fppc_requestedComps "${ecm_fppc_dep_comp}")
endif()
endforeach()
endforeach()
else()
message(STATUS "Skipping dependency handling for ${module_name}")
endif()
list(REMOVE_DUPLICATES ecm_fppc_requestedComps)
# This makes sure components are listed in the same order as
# KNOWN_COMPONENTS (potentially important for inter-dependencies)
set(${ECM_FPPC_RESULT_VAR})
foreach(ecm_fppc_comp ${ECM_FPPC_KNOWN_COMPONENTS})
list(FIND ecm_fppc_requestedComps "${ecm_fppc_comp}" ecm_fppc_index)
if(NOT "${ecm_fppc_index}" STREQUAL "-1")
list(APPEND ${ECM_FPPC_RESULT_VAR} "${ecm_fppc_comp}")
list(REMOVE_AT ecm_fppc_requestedComps ${ecm_fppc_index})
endif()
endforeach()
# if there are any left, they are unknown components
if(ecm_fppc_requestedComps)
set(ecm_fppc_msgType STATUS)
if(${module_name}_FIND_REQUIRED)
set(ecm_fppc_msgType FATAL_ERROR)
endif()
if(NOT ${module_name}_FIND_QUIETLY)
message(${ecm_fppc_msgType} "${module_name}: requested unknown components ${ecm_fppc_requestedComps}")
endif()
return()
endif()
else()
set(${ECM_FPPC_RESULT_VAR} ${ECM_FPPC_DEFAULT_COMPONENTS})
endif()
endmacro()
macro(ecm_find_package_handle_library_components module_name)
set(ecm_fpwc_options SKIP_PKG_CONFIG SKIP_DEPENDENCY_HANDLING)
set(ecm_fpwc_oneValueArgs)
set(ecm_fpwc_multiValueArgs COMPONENTS)
cmake_parse_arguments(ECM_FPWC "${ecm_fpwc_options}" "${ecm_fpwc_oneValueArgs}" "${ecm_fpwc_multiValueArgs}" ${ARGN})
if(ECM_FPWC_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unexpected arguments to ecm_find_package_handle_components: ${ECM_FPWC_UNPARSED_ARGUMENTS}")
endif()
if(NOT ECM_FPWC_COMPONENTS)
message(FATAL_ERROR "Missing COMPONENTS argument to ecm_find_package_handle_components")
endif()
include(FindPackageHandleStandardArgs)
find_package(PkgConfig QUIET)
foreach(ecm_fpwc_comp ${ECM_FPWC_COMPONENTS})
set(ecm_fpwc_dep_vars)
set(ecm_fpwc_dep_targets)
if(NOT SKIP_DEPENDENCY_HANDLING)
foreach(ecm_fpwc_dep ${${module_name}_${ecm_fpwc_comp}_component_deps})
list(APPEND ecm_fpwc_dep_vars "${module_name}_${ecm_fpwc_dep}_FOUND")
list(APPEND ecm_fpwc_dep_targets "${module_name}::${ecm_fpwc_dep}")
endforeach()
endif()
if(NOT ECM_FPWC_SKIP_PKG_CONFIG AND ${module_name}_${ecm_fpwc_comp}_pkg_config)
pkg_check_modules(PKG_${module_name}_${ecm_fpwc_comp} QUIET
${${module_name}_${ecm_fpwc_comp}_pkg_config})
endif()
find_path(${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR
NAMES ${${module_name}_${ecm_fpwc_comp}_header}
HINTS ${PKG_${module_name}_${ecm_fpwc_comp}_INCLUDE_DIRS}
PATH_SUFFIXES ${${module_name}_${ecm_fpwc_comp}_header_subdir}
)
find_library(${module_name}_${ecm_fpwc_comp}_LIBRARY
NAMES ${${module_name}_${ecm_fpwc_comp}_lib}
HINTS ${PKG_${module_name}_${ecm_fpwc_comp}_LIBRARY_DIRS}
)
set(${module_name}_${ecm_fpwc_comp}_VERSION "${PKG_${module_name}_${ecm_fpwc_comp}_VERSION}")
if(NOT ${module_name}_VERSION)
set(${module_name}_VERSION ${${module_name}_${ecm_fpwc_comp}_VERSION})
endif()
set(FPHSA_NAME_MISMATCHED 1)
find_package_handle_standard_args(${module_name}_${ecm_fpwc_comp}
FOUND_VAR
${module_name}_${ecm_fpwc_comp}_FOUND
REQUIRED_VARS
${module_name}_${ecm_fpwc_comp}_LIBRARY
${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR
${ecm_fpwc_dep_vars}
VERSION_VAR
${module_name}_${ecm_fpwc_comp}_VERSION
)
unset(FPHSA_NAME_MISMATCHED)
mark_as_advanced(
${module_name}_${ecm_fpwc_comp}_LIBRARY
${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR
)
if(${module_name}_${ecm_fpwc_comp}_FOUND)
list(APPEND ${module_name}_LIBRARIES
"${${module_name}_${ecm_fpwc_comp}_LIBRARY}")
list(APPEND ${module_name}_INCLUDE_DIRS
"${${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR}")
set(${module_name}_DEFINITIONS
${${module_name}_DEFINITIONS}
${PKG_${module_name}_${ecm_fpwc_comp}_DEFINITIONS})
if(NOT TARGET ${module_name}::${ecm_fpwc_comp})
add_library(${module_name}::${ecm_fpwc_comp} UNKNOWN IMPORTED)
set_target_properties(${module_name}::${ecm_fpwc_comp} PROPERTIES
IMPORTED_LOCATION "${${module_name}_${ecm_fpwc_comp}_LIBRARY}"
INTERFACE_COMPILE_OPTIONS "${PKG_${module_name}_${ecm_fpwc_comp}_DEFINITIONS}"
INTERFACE_INCLUDE_DIRECTORIES "${${module_name}_${ecm_fpwc_comp}_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "${ecm_fpwc_dep_targets}"
)
endif()
list(APPEND ${module_name}_TARGETS
"${module_name}::${ecm_fpwc_comp}")
endif()
endforeach()
if(${module_name}_LIBRARIES)
list(REMOVE_DUPLICATES ${module_name}_LIBRARIES)
endif()
if(${module_name}_INCLUDE_DIRS)
list(REMOVE_DUPLICATES ${module_name}_INCLUDE_DIRS)
endif()
if(${module_name}_DEFINITIONS)
list(REMOVE_DUPLICATES ${module_name}_DEFINITIONS)
endif()
if(${module_name}_TARGETS)
list(REMOVE_DUPLICATES ${module_name}_TARGETS)
endif()
endmacro()
================================================
FILE: cmake/ECMFindModuleHelpersStub.cmake
================================================
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpers.cmake)
================================================
FILE: cmake/FindGTK3.cmake
================================================
# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>
# SPDX-License-Identifier: ISC
include(FindPackageHandleStandardArgs)
find_package(PkgConfig)
if (PKG_CONFIG_FOUND)
pkg_search_module(GTK3 IMPORTED_TARGET gtk+-3.0)
if (GTK3_FOUND)
add_library(GTK3::gtk ALIAS PkgConfig::GTK3)
endif()
find_package_handle_standard_args(GTK3
REQUIRED_VARS GTK3_LINK_LIBRARIES
VERSION_VAR GTK3_VERSION
)
endif()
================================================
FILE: cmake/FindWayland.cmake
================================================
# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
# SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindWayland
-----------
Try to find Wayland.
This is a component-based find module, which makes use of the COMPONENTS
and OPTIONAL_COMPONENTS arguments to find_module. The following components
are available::
Client Server Cursor Egl
If no components are specified, this module will act as though all components
were passed to OPTIONAL_COMPONENTS.
This module will define the following variables, independently of the
components searched for or found:
``Wayland_FOUND``
TRUE if (the requested version of) Wayland is available
``Wayland_VERSION``
Found Wayland version
``Wayland_TARGETS``
A list of all targets imported by this module (note that there may be more
than the components that were requested)
``Wayland_LIBRARIES``
This can be passed to target_link_libraries() instead of the imported
targets
``Wayland_INCLUDE_DIRS``
This should be passed to target_include_directories() if the targets are
not used for linking
``Wayland_DEFINITIONS``
This should be passed to target_compile_options() if the targets are not
used for linking
``Wayland_DATADIR``
The core wayland protocols data directory
Since 5.73.0
For each searched-for components, ``Wayland_<component>_FOUND`` will be set to
TRUE if the corresponding Wayland library was found, and FALSE otherwise. If
``Wayland_<component>_FOUND`` is TRUE, the imported target
``Wayland::<component>`` will be defined. This module will also attempt to
determine ``Wayland_*_VERSION`` variables for each imported target, although
``Wayland_VERSION`` should normally be sufficient.
In general we recommend using the imported targets, as they are easier to use
and provide more control. Bear in mind, however, that if any target is in the
link interface of an exported library, it must be made available by the
package config file.
Since pre-1.0.0.
#]=======================================================================]
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
ecm_find_package_version_check(Wayland)
set(Wayland_known_components
Client
Server
Cursor
Egl
)
foreach(_comp ${Wayland_known_components})
string(TOLOWER "${_comp}" _lc_comp)
set(Wayland_${_comp}_component_deps)
set(Wayland_${_comp}_pkg_config "wayland-${_lc_comp}")
set(Wayland_${_comp}_lib "wayland-${_lc_comp}")
set(Wayland_${_comp}_header "wayland-${_lc_comp}.h")
endforeach()
set(Wayland_Egl_component_deps Client)
ecm_find_package_parse_components(Wayland
RESULT_VAR Wayland_components
KNOWN_COMPONENTS ${Wayland_known_components}
)
ecm_find_package_handle_library_components(Wayland
COMPONENTS ${Wayland_components}
)
# If pkg-config didn't provide us with version information,
# try to extract it from wayland-version.h
# (Note that the version from wayland-egl.pc will probably be
# the Mesa version, rather than the Wayland version, but that
# version will be ignored as we always find wayland-client.pc
# first).
if(NOT Wayland_VERSION)
find_file(Wayland_VERSION_HEADER
NAMES wayland-version.h
HINTS ${Wayland_INCLUDE_DIRS}
)
mark_as_advanced(Wayland_VERSION_HEADER)
if(Wayland_VERSION_HEADER)
file(READ ${Wayland_VERSION_HEADER} _wayland_version_header_contents)
string(REGEX REPLACE
"^.*[ \t]+WAYLAND_VERSION[ \t]+\"([0-9.]*)\".*$"
"\\1"
Wayland_VERSION
"${_wayland_version_header_contents}"
)
unset(_wayland_version_header_contents)
endif()
endif()
find_package_handle_standard_args(Wayland
FOUND_VAR
Wayland_FOUND
REQUIRED_VARS
Wayland_LIBRARIES
VERSION_VAR
Wayland_VERSION
HANDLE_COMPONENTS
)
pkg_get_variable(Wayland_DATADIR wayland-scanner pkgdatadir)
if (CMAKE_CROSSCOMPILING AND (NOT EXISTS "${Wayland_DATADIR}/wayland.xml"))
# PKG_CONFIG_SYSROOT_DIR only applies to -I and -L flags, so pkg-config
# does not prepend CMAKE_SYSROOT when cross-compiling unless you pass
# --define-prefix explicitly. Therefore we have to manually do prepend
# it here when cross-compiling.
# See https://gitlab.kitware.com/cmake/cmake/-/issues/16647#note_844761
set(Wayland_DATADIR ${CMAKE_SYSROOT}${Wayland_DATADIR})
endif()
if (NOT EXISTS "${Wayland_DATADIR}/wayland.xml")
message(WARNING "Could not find wayland.xml in ${Wayland_DATADIR}")
endif()
include(FeatureSummary)
set_package_properties(Wayland PROPERTIES
URL "https://wayland.freedesktop.org/"
DESCRIPTION "C library implementation of the Wayland protocol: a protocol for a compositor to talk to its clients"
)
================================================
FILE: cmake/FindWaylandProtocols.cmake
================================================
# SPDX-FileCopyrightText: 2019 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindWaylandProtocols
--------------------
Try to find wayland-protocols on a Unix system.
This will define the following variables:
``WaylandProtocols_FOUND``
True if (the requested version of) wayland-protocols is available
``WaylandProtocols_VERSION``
The version of wayland-protocols
``WaylandProtocols_DATADIR``
The wayland protocols data directory
#]=======================================================================]
find_package(PkgConfig QUIET)
pkg_check_modules(PKG_wayland_protocols QUIET wayland-protocols)
set(WaylandProtocols_VERSION ${PKG_wayland_protocols_VERSION})
pkg_get_variable(WaylandProtocols_DATADIR wayland-protocols pkgdatadir)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(WaylandProtocols
FOUND_VAR WaylandProtocols_FOUND
REQUIRED_VARS WaylandProtocols_DATADIR
VERSION_VAR WaylandProtocols_VERSION
)
include(FeatureSummary)
set_package_properties(WaylandProtocols PROPERTIES
DESCRIPTION "Specifications of extended Wayland protocols"
URL "https://wayland.freedesktop.org/"
)
================================================
FILE: cmake/FindWaylandScanner.cmake
================================================
# SPDX-FileCopyrightText: 2012-2014 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
FindWaylandScanner
------------------
Try to find wayland-scanner.
If the wayland-scanner executable is not in your PATH, you can provide
an alternative name or full path location with the ``WaylandScanner_EXECUTABLE``
variable.
This will define the following variables:
``WaylandScanner_FOUND``
True if wayland-scanner is available.
``WaylandScanner_EXECUTABLE``
The wayland-scanner executable.
If ``WaylandScanner_FOUND`` is TRUE, it will also define the following imported
target:
``Wayland::Scanner``
The wayland-scanner executable.
This module provides the following functions to generate C protocol
implementations:
- ``ecm_add_wayland_client_protocol``
- ``ecm_add_wayland_server_protocol``
::
ecm_add_wayland_client_protocol(<target>
PROTOCOL <xmlfile>
BASENAME <basename>)
ecm_add_wayland_client_protocol(<source_files_var>
PROTOCOL <xmlfile>
BASENAME <basename>)
Generate Wayland client protocol files from ``<xmlfile>`` XML
definition for the ``<basename>`` interface and append those files
to ``<source_files_var>`` or ``<target>``.
::
ecm_add_wayland_server_protocol(<target>
PROTOCOL <xmlfile>
BASENAME <basename>)
ecm_add_wayland_server_protocol(<source_files_var>
PROTOCOL <xmlfile>
BASENAME <basename>)
Generate Wayland server protocol files from ``<xmlfile>`` XML
definition for the ``<basename>`` interface and append those files
to ``<source_files_var>`` or ``<target>``.
Since 1.4.0.
#]=======================================================================]
include(${CMAKE_CURRENT_LIST_DIR}/ECMFindModuleHelpersStub.cmake)
ecm_find_package_version_check(WaylandScanner)
# Find wayland-scanner
find_program(WaylandScanner_EXECUTABLE NAMES wayland-scanner)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(WaylandScanner
FOUND_VAR
WaylandScanner_FOUND
REQUIRED_VARS
WaylandScanner_EXECUTABLE
)
mark_as_advanced(WaylandScanner_EXECUTABLE)
if(NOT TARGET Wayland::Scanner AND WaylandScanner_FOUND)
add_executable(Wayland::Scanner IMPORTED)
set_target_properties(Wayland::Scanner PROPERTIES
IMPORTED_LOCATION "${WaylandScanner_EXECUTABLE}"
)
endif()
include(FeatureSummary)
set_package_properties(WaylandScanner PROPERTIES
URL "https://wayland.freedesktop.org/"
DESCRIPTION "Executable that converts XML protocol files to C code"
)
include(CMakeParseArguments)
function(ecm_add_wayland_client_protocol target_or_sources_var)
# Parse arguments
set(oneValueArgs PROTOCOL BASENAME)
cmake_parse_arguments(ARGS "" "${oneValueArgs}" "" ${ARGN})
if(ARGS_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to ecm_add_wayland_client_protocol(): \"${ARGS_UNPARSED_ARGUMENTS}\"")
endif()
get_filename_component(_infile ${ARGS_PROTOCOL} ABSOLUTE)
set(_client_header "${CMAKE_CURRENT_BINARY_DIR}/wayland-${ARGS_BASENAME}-client-protocol.h")
set(_code "${CMAKE_CURRENT_BINARY_DIR}/wayland-${ARGS_BASENAME}-protocol.c")
set_source_files_properties(${_client_header} GENERATED)
set_source_files_properties(${_code} GENERATED)
set_property(SOURCE ${_client_header} ${_code} PROPERTY SKIP_AUTOMOC ON)
add_custom_command(OUTPUT "${_client_header}"
COMMAND ${WaylandScanner_EXECUTABLE} client-header ${_infile} ${_client_header}
DEPENDS ${_infile} VERBATIM)
add_custom_command(OUTPUT "${_code}"
COMMAND ${WaylandScanner_EXECUTABLE} public-code ${_infile} ${_code}
DEPENDS ${_infile} ${_client_header} VERBATIM)
if (TARGET ${target_or_sources_var})
target_sources(${target_or_sources_var} PRIVATE "${_client_header}" "${_code}")
else()
list(APPEND ${target_or_sources_var} "${_client_header}" "${_code}")
set(${target_or_sources_var} ${${target_or_sources_var}} PARENT_SCOPE)
endif()
endfunction()
function(ecm_add_wayland_server_protocol target_or_sources_var)
# Parse arguments
set(oneValueArgs PROTOCOL BASENAME)
cmake_parse_arguments(ARGS "" "${oneValueArgs}" "" ${ARGN})
if(ARGS_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to ecm_add_wayland_server_protocol(): \"${ARGS_UNPARSED_ARGUMENTS}\"")
endif()
ecm_add_wayland_client_protocol(${target_or_sources_var}
PROTOCOL ${ARGS_PROTOCOL}
BASENAME ${ARGS_BASENAME})
get_filename_component(_infile ${ARGS_PROTOCOL} ABSOLUTE)
set(_server_header "${CMAKE_CURRENT_BINARY_DIR}/wayland-${ARGS_BASENAME}-server-protocol.h")
set(_server_code "${CMAKE_CURRENT_BINARY_DIR}/wayland-${ARGS_BASENAME}-protocol.c")
set_property(SOURCE ${_server_header} ${_server_code} PROPERTY SKIP_AUTOMOC ON)
set_source_files_properties(${_server_header} GENERATED)
add_custom_command(OUTPUT "${_server_header}"
COMMAND ${WaylandScanner_EXECUTABLE} server-header ${_infile} ${_server_header}
DEPENDS ${_infile} VERBATIM)
if (TARGET ${target_or_sources_var})
target_sources(${target_or_sources_var} PRIVATE "${_server_header}")
else()
list(APPEND ${target_or_sources_var} "${_server_header}")
set(${target_or_sources_var} ${${target_or_sources_var}} PARENT_SCOPE)
endif()
endfunction()
================================================
FILE: cmake/FindZArchive.cmake
================================================
# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>
# SPDX-License-Identifier: ISC
find_package(PkgConfig)
if (PKG_CONFIG_FOUND)
pkg_search_module(zarchive IMPORTED_TARGET GLOBAL zarchive)
if (zarchive_FOUND)
add_library(ZArchive::zarchive ALIAS PkgConfig::zarchive)
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(ZArchive
REQUIRED_VARS
zarchive_LINK_LIBRARIES
zarchive_FOUND
VERSION_VAR
zarchive_VERSION
)
================================================
FILE: cmake/Findbluez.cmake
================================================
# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>
# SPDX-License-Identifier: ISC
find_package(bluez CONFIG)
if (NOT bluez_FOUND)
find_package(PkgConfig)
if (PKG_CONFIG_FOUND)
pkg_search_module(bluez IMPORTED_TARGET GLOBAL bluez-1.0 bluez)
if (bluez_FOUND)
add_library(bluez::bluez ALIAS PkgConfig::bluez)
endif ()
endif ()
endif ()
find_package_handle_standard_args(bluez
REQUIRED_VARS
bluez_LINK_LIBRARIES
bluez_FOUND
VERSION_VAR bluez_VERSION
)
================================================
FILE: cmake/Findimgui.cmake
================================================
# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>
# SPDX-License-Identifier: ISC
include(FindPackageHandleStandardArgs)
find_package(imgui CONFIG)
if (imgui_FOUND)
# Use upstream imguiConfig.cmake if possible
find_package_handle_standard_args(imgui CONFIG_MODE)
else()
# Fallback to pkg-config otherwise
find_package(PkgConfig)
if (PKG_CONFIG_FOUND)
pkg_search_module(imgui IMPORTED_TARGET GLOBAL imgui)
if (imgui_FOUND)
add_library(imgui::imgui ALIAS PkgConfig::imgui)
endif()
endif()
find_package_handle_standard_args(imgui
REQUIRED_VARS
imgui_LINK_LIBRARIES
imgui_FOUND
VERSION_VAR
imgui_VERSION
)
endif()
================================================
FILE: cmake/Findlibusb.cmake
================================================
# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>
# SPDX-License-Identifier: ISC
find_package(libusb CONFIG)
if (NOT libusb_FOUND)
find_package(PkgConfig)
if (PKG_CONFIG_FOUND)
pkg_search_module(libusb IMPORTED_TARGET GLOBAL libusb-1.0 libusb)
if (libusb_FOUND)
add_library(libusb::libusb ALIAS PkgConfig::libusb)
endif ()
endif ()
endif ()
find_package_handle_standard_args(libusb
REQUIRED_VARS
libusb_LINK_LIBRARIES
libusb_FOUND
VERSION_VAR libusb_VERSION
)
================================================
FILE: cmake/FindwxWidgets.cmake
================================================
# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>
# SPDX-License-Identifier: ISC
include(FindPackageHandleStandardArgs)
find_package(wxWidgets CONFIG COMPONENTS ${wxWidgets_FIND_COMPONENTS})
if (wxWidgets_FOUND)
# Use upstream wxWidgetsConfig.cmake if possible
find_package_handle_standard_args(wxWidgets CONFIG_MODE)
else()
# Fall back to CMake's FindwxWidgets
# Temporarily unset CMAKE_MODULE_PATH to avoid calling the current find
# module recursively
set(_tmp_module_path "${CMAKE_MODULE_PATH}")
set(CMAKE_MODULE_PATH "")
find_package(wxWidgets MODULE QUIET COMPONENTS ${wxWidgets_FIND_COMPONENTS})
set(CMAKE_MODULE_PATH "${_tmp_module_path}")
unset(_tmp_module_path)
if (wxWidgets_FOUND)
add_library(wx::base IMPORTED INTERFACE)
target_include_directories(wx::base INTERFACE ${wxWidgets_INCLUDE_DIRS})
target_link_libraries(wx::base INTERFACE ${wxWidgets_LIBRARIES})
target_link_directories(wx::base INTERFACE ${wxWidgets_LIBRARY_DIRS})
target_compile_definitions(wx::base INTERFACE ${wxWidgets_DEFINITIONS})
target_compile_options(wx::base INTERFACE ${wxWidgets_CXX_FLAGS})
# FindwxWidgets sets everything into a single set of variables, so it is
# impossible to tell what libraries are required for what component.
# To be compatible with wxWidgetsConfig, we create an alias for each
# component so that the user can still use target_link_libraries(wx::gl)
foreach(component ${wxWidgets_FIND_COMPONENTS})
if (NOT component STREQUAL "base")
# don't alias base to itself
add_library(wx::${component} ALIAS wx::base)
endif()
endforeach()
endif()
find_package_handle_standard_args(wxWidgets
REQUIRED_VARS
wxWidgets_LIBRARIES
wxWidgets_FOUND
VERSION_VAR
wxWidgets_VERSION_STRING
)
endif()
================================================
FILE: cmake/Findzstd.cmake
================================================
# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>
# SPDX-License-Identifier: ISC
include(FindPackageHandleStandardArgs)
find_package(zstd CONFIG)
if (zstd_FOUND)
# Use upstream zstdConfig.cmake if possible
if (NOT TARGET zstd::zstd)
if (TARGET zstd::libzstd_static)
add_library(zstd::zstd ALIAS zstd::libzstd_static)
elseif (TARGET zstd::libzstd_shared)
add_library(zstd::zstd ALIAS zstd::libzstd_shared)
endif()
endif()
find_package_handle_standard_args(zstd CONFIG_MODE)
else()
# Fallback to pkg-config otherwise
find_package(PkgConfig)
if (PKG_CONFIG_FOUND)
pkg_search_module(libzstd IMPORTED_TARGET GLOBAL libzstd)
if (libzstd_FOUND)
add_library(zstd::zstd ALIAS PkgConfig::libzstd)
endif()
endif()
find_package_handle_standard_args(zstd
REQUIRED_VARS
libzstd_LINK_LIBRARIES
libzstd_FOUND
VERSION_VAR libzstd_VERSION
)
endif()
================================================
FILE: dependencies/DirectX_2010/XAudio2.h
================================================
/**************************************************************************
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* File: xaudio2.h
* Content: Declarations for the XAudio2 game audio API.
*
**************************************************************************/
#ifndef __XAUDIO2_INCLUDED__
#define __XAUDIO2_INCLUDED__
/**************************************************************************
*
* XAudio2 COM object class and interface IDs.
*
**************************************************************************/
#include "comdecl.h" // For DEFINE_CLSID and DEFINE_IID
// XAudio 2.0 (March 2008 SDK)
//DEFINE_CLSID(XAudio2, fac23f48, 31f5, 45a8, b4, 9b, 52, 25, d6, 14, 01, aa);
//DEFINE_CLSID(XAudio2_Debug, fac23f48, 31f5, 45a8, b4, 9b, 52, 25, d6, 14, 01, db);
// XAudio 2.1 (June 2008 SDK)
//DEFINE_CLSID(XAudio2, e21a7345, eb21, 468e, be, 50, 80, 4d, b9, 7c, f7, 08);
//DEFINE_CLSID(XAudio2_Debug, f7a76c21, 53d4, 46bb, ac, 53, 8b, 45, 9c, ae, 46, bd);
// XAudio 2.2 (August 2008 SDK)
//DEFINE_CLSID(XAudio2, b802058a, 464a, 42db, bc, 10, b6, 50, d6, f2, 58, 6a);
//DEFINE_CLSID(XAudio2_Debug, 97dfb7e7, 5161, 4015, 87, a9, c7, 9e, 6a, 19, 52, cc);
// XAudio 2.3 (November 2008 SDK)
//DEFINE_CLSID(XAudio2, 4c5e637a, 16c7, 4de3, 9c, 46, 5e, d2, 21, 81, 96, 2d);
//DEFINE_CLSID(XAudio2_Debug, ef0aa05d, 8075, 4e5d, be, ad, 45, be, 0c, 3c, cb, b3);
// XAudio 2.4 (March 2009 SDK)
//DEFINE_CLSID(XAudio2, 03219e78, 5bc3, 44d1, b9, 2e, f6, 3d, 89, cc, 65, 26);
//DEFINE_CLSID(XAudio2_Debug, 4256535c, 1ea4, 4d4b, 8a, d5, f9, db, 76, 2e, ca, 9e);
// XAudio 2.5 (August 2009 SDK)
//DEFINE_CLSID(XAudio2, 4c9b6dde, 6809, 46e6, a2, 78, 9b, 6a, 97, 58, 86, 70);
//DEFINE_CLSID(XAudio2_Debug, 715bdd1a, aa82, 436b, b0, fa, 6a, ce, a3, 9b, d0, a1);
// XAudio 2.6 (February 2010 SDK)
//DEFINE_CLSID(XAudio2, 3eda9b49, 2085, 498b, 9b, b2, 39, a6, 77, 84, 93, de);
//DEFINE_CLSID(XAudio2_Debug, 47199894, 7cc2, 444d, 98, 73, ce, d2, 56, 2c, c6, 0e);
// XAudio 2.7 (June 2010 SDK)
#ifdef __clang__
class __declspec(uuid("5a508685-a254-4fba-9b82-9a24b00306af")) XAudio2; extern "C" const GUID CLSID_XAudio2;
class __declspec(uuid("db05ea35-0329-4d4b-a53a-6dead03d3852")) XAudio2_Debug; extern "C" const GUID CLSID_XAudio2_Debug;
struct __declspec(uuid("8bcf1f58-9fe7-4583-8ac6-e2adc465c8bb")) IXAudio2; extern "C" const GUID IID_IXAudio2;
#else
DEFINE_CLSID(XAudio2, 5a508685, a254, 4fba, 9b, 82, 9a, 24, b0, 03, 06, af);
DEFINE_CLSID(XAudio2_Debug, db05ea35, 0329, 4d4b, a5, 3a, 6d, ea, d0, 3d, 38, 52);
DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb);
#endif
// Ignore the rest of this header if only the GUID definitions were requested
#ifndef GUID_DEFS_ONLY
#ifdef _XBOX
#include <xobjbase.h> // Xbox COM declarations (IUnknown, etc)
#else
#include <objbase.h> // Windows COM declarations
#endif
#include <sal.h> // Markers for documenting API semantics
#include "audiodefs.h" // Basic audio data types and constants
#include "xma2defs.h" // Data types and constants for XMA2 audio
// All structures defined in this file use tight field packing
#pragma pack(push, 1)
/**************************************************************************
*
* XAudio2 constants, flags and error codes.
*
**************************************************************************/
// Numeric boundary values
#define XAUDIO2_MAX_BUFFER_BYTES 0x80000000 // Maximum bytes allowed in a source buffer
#define XAUDIO2_MAX_QUEUED_BUFFERS 64 // Maximum buffers allowed in a voice queue
#define XAUDIO2_MAX_BUFFERS_SYSTEM 2 // Maximum buffers allowed for system threads (Xbox 360 only)
#define XAUDIO2_MAX_AUDIO_CHANNELS 64 // Maximum channels in an audio stream
#define XAUDIO2_MIN_SAMPLE_RATE 1000 // Minimum audio sample rate supported
#define XAUDIO2_MAX_SAMPLE_RATE 200000 // Maximum audio sample rate supported
#define XAUDIO2_MAX_VOLUME_LEVEL 16777216.0f // Maximum acceptable volume level (2^24)
#define XAUDIO2_MIN_FREQ_RATIO (1/1024.0f) // Minimum SetFrequencyRatio argument
#define XAUDIO2_MAX_FREQ_RATIO 1024.0f // Maximum MaxFrequencyRatio argument
#define XAUDIO2_DEFAULT_FREQ_RATIO 2.0f // Default MaxFrequencyRatio argument
#define XAUDIO2_MAX_FILTER_ONEOVERQ 1.5f // Maximum XAUDIO2_FILTER_PARAMETERS.OneOverQ
#define XAUDIO2_MAX_FILTER_FREQUENCY 1.0f // Maximum XAUDIO2_FILTER_PARAMETERS.Frequency
#define XAUDIO2_MAX_LOOP_COUNT 254 // Maximum non-infinite XAUDIO2_BUFFER.LoopCount
#define XAUDIO2_MAX_INSTANCES 8 // Maximum simultaneous XAudio2 objects on Xbox 360
// For XMA voices on Xbox 360 there is an additional restriction on the MaxFrequencyRatio
// argument and the voice's sample rate: the product of these numbers cannot exceed 600000
// for one-channel voices or 300000 for voices with more than one channel.
#define XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO 600000
#define XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL 300000
// Numeric values with special meanings
#define XAUDIO2_COMMIT_NOW 0 // Used as an OperationSet argument
#define XAUDIO2_COMMIT_ALL 0 // Used in IXAudio2::CommitChanges
#define XAUDIO2_INVALID_OPSET (UINT32)(-1) // Not allowed for OperationSet arguments
#define XAUDIO2_NO_LOOP_REGION 0 // Used in XAUDIO2_BUFFER.LoopCount
#define XAUDIO2_LOOP_INFINITE 255 // Used in XAUDIO2_BUFFER.LoopCount
#define XAUDIO2_DEFAULT_CHANNELS 0 // Used in CreateMasteringVoice
#define XAUDIO2_DEFAULT_SAMPLERATE 0 // Used in CreateMasteringVoice
// Flags
#define XAUDIO2_DEBUG_ENGINE 0x0001 // Used in XAudio2Create on Windows only
#define XAUDIO2_VOICE_NOPITCH 0x0002 // Used in IXAudio2::CreateSourceVoice
#define XAUDIO2_VOICE_NOSRC 0x0004 // Used in IXAudio2::CreateSourceVoice
#define XAUDIO2_VOICE_USEFILTER 0x0008 // Used in IXAudio2::CreateSource/SubmixVoice
#define XAUDIO2_VOICE_MUSIC 0x0010 // Used in IXAudio2::CreateSourceVoice
#define XAUDIO2_PLAY_TAILS 0x0020 // Used in IXAudio2SourceVoice::Stop
#define XAUDIO2_END_OF_STREAM 0x0040 // Used in XAUDIO2_BUFFER.Flags
#define XAUDIO2_SEND_USEFILTER 0x0080 // Used in XAUDIO2_SEND_DESCRIPTOR.Flags
// Default parameters for the built-in filter
#define XAUDIO2_DEFAULT_FILTER_TYPE LowPassFilter
#define XAUDIO2_DEFAULT_FILTER_FREQUENCY XAUDIO2_MAX_FILTER_FREQUENCY
#define XAUDIO2_DEFAULT_FILTER_ONEOVERQ 1.0f
// Internal XAudio2 constants
#ifdef _XBOX
#define XAUDIO2_QUANTUM_NUMERATOR 2 // On Xbox 360, XAudio2 processes audio
#define XAUDIO2_QUANTUM_DENOMINATOR 375 // in 5.333ms chunks (= 2/375 seconds)
#else
#define XAUDIO2_QUANTUM_NUMERATOR 1 // On Windows, XAudio2 processes audio
#define XAUDIO2_QUANTUM_DENOMINATOR 100 // in 10ms chunks (= 1/100 seconds)
#endif
#define XAUDIO2_QUANTUM_MS (1000.0f * XAUDIO2_QUANTUM_NUMERATOR / XAUDIO2_QUANTUM_DENOMINATOR)
// XAudio2 error codes
#define FACILITY_XAUDIO2 0x896
#define XAUDIO2_E_INVALID_CALL 0x88960001 // An API call or one of its arguments was illegal
#define XAUDIO2_E_XMA_DECODER_ERROR 0x88960002 // The XMA hardware suffered an unrecoverable error
#define XAUDIO2_E_XAPO_CREATION_FAILED 0x88960003 // XAudio2 failed to initialize an XAPO effect
#define XAUDIO2_E_DEVICE_INVALIDATED 0x88960004 // An audio device became unusable (unplugged, etc)
/**************************************************************************
*
* Forward declarations for the XAudio2 interfaces.
*
**************************************************************************/
#ifdef __cplusplus
#define FWD_DECLARE(x) interface x
#else
#define FWD_DECLARE(x) typedef interface x x
#endif
FWD_DECLARE(IXAudio2);
FWD_DECLARE(IXAudio2Voice);
FWD_DECLARE(IXAudio2SourceVoice);
FWD_DECLARE(IXAudio2SubmixVoice);
FWD_DECLARE(IXAudio2MasteringVoice);
FWD_DECLARE(IXAudio2EngineCallback);
FWD_DECLARE(IXAudio2VoiceCallback);
/**************************************************************************
*
* XAudio2 structures and enumerations.
*
**************************************************************************/
// Used in IXAudio2::Initialize
#ifdef _XBOX
typedef enum XAUDIO2_XBOX_HWTHREAD_SPECIFIER
{
XboxThread0 = 0x01,
XboxThread1 = 0x02,
XboxThread2 = 0x04,
XboxThread3 = 0x08,
XboxThread4 = 0x10,
XboxThread5 = 0x20,
XAUDIO2_ANY_PROCESSOR = XboxThread4,
XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR
} XAUDIO2_XBOX_HWTHREAD_SPECIFIER, XAUDIO2_PROCESSOR;
#else
typedef enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER
{
Processor1 = 0x00000001,
Processor2 = 0x00000002,
Processor3 = 0x00000004,
Processor4 = 0x00000008,
Processor5 = 0x00000010,
Processor6 = 0x00000020,
Processor7 = 0x00000040,
Processor8 = 0x00000080,
Processor9 = 0x00000100,
Processor10 = 0x00000200,
Processor11 = 0x00000400,
Processor12 = 0x00000800,
Processor13 = 0x00001000,
Processor14 = 0x00002000,
Processor15 = 0x00004000,
Processor16 = 0x00008000,
Processor17 = 0x00010000,
Processor18 = 0x00020000,
Processor19 = 0x00040000,
Processor20 = 0x00080000,
Processor21 = 0x00100000,
Processor22 = 0x00200000,
Processor23 = 0x00400000,
Processor24 = 0x00800000,
Processor25 = 0x01000000,
Processor26 = 0x02000000,
Processor27 = 0x04000000,
Processor28 = 0x08000000,
Processor29 = 0x10000000,
Processor30 = 0x20000000,
Processor31 = 0x40000000,
Processor32 = 0x80000000,
XAUDIO2_ANY_PROCESSOR = 0xffffffff,
XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR
} XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER, XAUDIO2_PROCESSOR;
#endif
// Used in XAUDIO2_DEVICE_DETAILS below to describe the types of applications
// that the user has specified each device as a default for. 0 means that the
// device isn't the default for any role.
typedef enum XAUDIO2_DEVICE_ROLE
{
NotDefaultDevice = 0x0,
DefaultConsoleDevice = 0x1,
DefaultMultimediaDevice = 0x2,
DefaultCommunicationsDevice = 0x4,
DefaultGameDevice = 0x8,
GlobalDefaultDevice = 0xf,
InvalidDeviceRole = ~GlobalDefaultDevice
} XAUDIO2_DEVICE_ROLE;
// Returned by IXAudio2::GetDeviceDetails
typedef struct XAUDIO2_DEVICE_DETAILS
{
WCHAR DeviceID[256]; // String identifier for the audio device.
WCHAR DisplayName[256]; // Friendly name suitable for display to a human.
XAUDIO2_DEVICE_ROLE Role; // Roles that the device should be used for.
WAVEFORMATEXTENSIBLE OutputFormat; // The device's native PCM audio output format.
} XAUDIO2_DEVICE_DETAILS;
// Returned by IXAudio2Voice::GetVoiceDetails
typedef struct XAUDIO2_VOICE_DETAILS
{
UINT32 CreationFlags; // Flags the voice was created with.
UINT32 InputChannels; // Channels in the voice's input audio.
UINT32 InputSampleRate; // Sample rate of the voice's input audio.
} XAUDIO2_VOICE_DETAILS;
// Used in XAUDIO2_VOICE_SENDS below
typedef struct XAUDIO2_SEND_DESCRIPTOR
{
UINT32 Flags; // Either 0 or XAUDIO2_SEND_USEFILTER.
IXAudio2Voice* pOutputVoice; // This send's destination voice.
} XAUDIO2_SEND_DESCRIPTOR;
// Used in the voice creation functions and in IXAudio2Voice::SetOutputVoices
typedef struct XAUDIO2_VOICE_SENDS
{
UINT32 SendCount; // Number of sends from this voice.
XAUDIO2_SEND_DESCRIPTOR* pSends; // Array of SendCount send descriptors.
} XAUDIO2_VOICE_SENDS;
// Used in XAUDIO2_EFFECT_CHAIN below
typedef struct XAUDIO2_EFFECT_DESCRIPTOR
{
IUnknown* pEffect; // Pointer to the effect object's IUnknown interface.
BOOL InitialState; // TRUE if the effect should begin in the enabled state.
UINT32 OutputChannels; // How many output channels the effect should produce.
} XAUDIO2_EFFECT_DESCRIPTOR;
// Used in the voice creation functions and in IXAudio2Voice::SetEffectChain
typedef struct XAUDIO2_EFFECT_CHAIN
{
UINT32 EffectCount; // Number of effects in this voice's effect chain.
XAUDIO2_EFFECT_DESCRIPTOR* pEffectDescriptors; // Array of effect descriptors.
} XAUDIO2_EFFECT_CHAIN;
// Used in XAUDIO2_FILTER_PARAMETERS below
typedef enum XAUDIO2_FILTER_TYPE
{
LowPassFilter, // Attenuates frequencies above the cutoff frequency.
BandPassFilter, // Attenuates frequencies outside a given range.
HighPassFilter, // Attenuates frequencies below the cutoff frequency.
NotchFilter // Attenuates frequencies inside a given range.
} XAUDIO2_FILTER_TYPE;
// Used in IXAudio2Voice::Set/GetFilterParameters and Set/GetOutputFilterParameters
typedef struct XAUDIO2_FILTER_PARAMETERS
{
XAUDIO2_FILTER_TYPE Type; // Low-pass, band-pass or high-pass.
float Frequency; // Radian frequency (2 * sin(pi*CutoffFrequency/SampleRate));
// must be >= 0 and <= XAUDIO2_MAX_FILTER_FREQUENCY
// (giving a maximum CutoffFrequency of SampleRate/6).
float OneOverQ; // Reciprocal of the filter's quality factor Q;
// must be > 0 and <= XAUDIO2_MAX_FILTER_ONEOVERQ.
} XAUDIO2_FILTER_PARAMETERS;
// Used in IXAudio2SourceVoice::SubmitSourceBuffer
typedef struct XAUDIO2_BUFFER
{
UINT32 Flags; // Either 0 or XAUDIO2_END_OF_STREAM.
UINT32 AudioBytes; // Size of the audio data buffer in bytes.
const BYTE* pAudioData; // Pointer to the audio data buffer.
UINT32 PlayBegin; // First sample in this buffer to be played.
UINT32 PlayLength; // Length of the region to be played in samples,
// or 0 to play the whole buffer.
UINT32 LoopBegin; // First sample of the region to be looped.
UINT32 LoopLength; // Length of the desired loop region in samples,
// or 0 to loop the entire buffer.
UINT32 LoopCount; // Number of times to repeat the loop region,
// or XAUDIO2_LOOP_INFINITE to loop forever.
void* pContext; // Context value to be passed back in callbacks.
} XAUDIO2_BUFFER;
// Used in IXAudio2SourceVoice::SubmitSourceBuffer when submitting XWMA data.
// NOTE: If an XWMA sound is submitted in more than one buffer, each buffer's
// pDecodedPacketCumulativeBytes[PacketCount-1] value must be subtracted from
// all the entries in the next buffer's pDecodedPacketCumulativeBytes array.
// And whether a sound is submitted in more than one buffer or not, the final
// buffer of the sound should use the XAUDIO2_END_OF_STREAM flag, or else the
// client must call IXAudio2SourceVoice::Discontinuity after submitting it.
typedef struct XAUDIO2_BUFFER_WMA
{
const UINT32* pDecodedPacketCumulativeBytes; // Decoded packet's cumulative size array.
// Each element is the number of bytes accumulated
// when the corresponding XWMA packet is decoded in
// order. The array must have PacketCount elements.
UINT32 PacketCount; // Number of XWMA packets submitted. Must be >= 1 and
// divide evenly into XAUDIO2_BUFFER.AudioBytes.
} XAUDIO2_BUFFER_WMA;
// Returned by IXAudio2SourceVoice::GetState
typedef struct XAUDIO2_VOICE_STATE
{
void* pCurrentBufferContext; // The pContext value provided in the XAUDIO2_BUFFER
// that is currently being processed, or NULL if
// there are no buffers in the queue.
UINT32 BuffersQueued; // Number of buffers currently queued on the voice
// (including the one that is being processed).
UINT64 SamplesPlayed; // Total number of samples produced by the voice since
// it began processing the current audio stream.
} XAUDIO2_VOICE_STATE;
// Returned by IXAudio2::GetPerformanceData
typedef struct XAUDIO2_PERFORMANCE_DATA
{
// CPU usage information
UINT64 AudioCyclesSinceLastQuery; // CPU cycles spent on audio processing since the
// last call to StartEngine or GetPerformanceData.
UINT64 TotalCyclesSinceLastQuery; // Total CPU cycles elapsed since the last call
// (only counts the CPU XAudio2 is running on).
UINT32 MinimumCyclesPerQuantum; // Fewest CPU cycles spent processing any one
// audio quantum since the last call.
UINT32 MaximumCyclesPerQuantum; // Most CPU cycles spent processing any one
// audio quantum since the last call.
// Memory usage information
UINT32 MemoryUsageInBytes; // Total heap space currently in use.
// Audio latency and glitching information
UINT32 CurrentLatencyInSamples; // Minimum delay from when a sample is read from a
// source buffer to when it reaches the speakers.
UINT32 GlitchesSinceEngineStarted; // Audio dropouts since the engine was started.
// Data about XAudio2's current workload
UINT32 ActiveSourceVoiceCount; // Source voices currently playing.
UINT32 TotalSourceVoiceCount; // Source voices currently existing.
UINT32 ActiveSubmixVoiceCount; // Submix voices currently playing/existing.
UINT32 ActiveResamplerCount; // Resample xAPOs currently active.
UINT32 ActiveMatrixMixCount; // MatrixMix xAPOs currently active.
// Usage of the hardware XMA decoder (Xbox 360 only)
UINT32 ActiveXmaSourceVoices; // Number of source voices decoding XMA data.
UINT32 ActiveXmaStreams; // A voice can use more than one XMA stream.
} XAUDIO2_PERFORMANCE_DATA;
// Used in IXAudio2::SetDebugConfiguration
typedef struct XAUDIO2_DEBUG_CONFIGURATION
{
UINT32 TraceMask; // Bitmap of enabled debug message types.
UINT32 BreakMask; // Message types that will break into the debugger.
BOOL LogThreadID; // Whether to log the thread ID with each message.
BOOL LogFileline; // Whether to log the source file and line number.
BOOL LogFunctionName; // Whether to log the function name.
BOOL LogTiming; // Whether to log message timestamps.
} XAUDIO2_DEBUG_CONFIGURATION;
// Values for the TraceMask and BreakMask bitmaps. Only ERRORS and WARNINGS
// are valid in BreakMask. WARNINGS implies ERRORS, DETAIL implies INFO, and
// FUNC_CALLS implies API_CALLS. By default, TraceMask is ERRORS and WARNINGS
// and all the other settings are zero.
#define XAUDIO2_LOG_ERRORS 0x0001 // For handled errors with serious effects.
#define XAUDIO2_LOG_WARNINGS 0x0002 // For handled errors that may be recoverable.
#define XAUDIO2_LOG_INFO 0x0004 // Informational chit-chat (e.g. state changes).
#define XAUDIO2_LOG_DETAIL 0x0008 // More detailed chit-chat.
#define XAUDIO2_LOG_API_CALLS 0x0010 // Public API function entries and exits.
#define XAUDIO2_LOG_FUNC_CALLS 0x0020 // Internal function entries and exits.
#define XAUDIO2_LOG_TIMING 0x0040 // Delays detected and other timing data.
#define XAUDIO2_LOG_LOCKS 0x0080 // Usage of critical sections and mutexes.
#define XAUDIO2_LOG_MEMORY 0x0100 // Memory heap usage information.
#define XAUDIO2_LOG_STREAMING 0x1000 // Audio streaming information.
/**************************************************************************
*
* IXAudio2: Top-level XAudio2 COM interface.
*
**************************************************************************/
// Use default arguments if compiling as C++
#ifdef __cplusplus
#define X2DEFAULT(x) =x
#else
#define X2DEFAULT(x)
#endif
#undef INTERFACE
#define INTERFACE IXAudio2
DECLARE_INTERFACE_(IXAudio2, IUnknown)
{
// NAME: IXAudio2::QueryInterface
// DESCRIPTION: Queries for a given COM interface on the XAudio2 object.
// Only IID_IUnknown and IID_IXAudio2 are supported.
//
// ARGUMENTS:
// riid - IID of the interface to be obtained.
// ppvInterface - Returns a pointer to the requested interface.
//
STDMETHOD(QueryInterface) (THIS_ REFIID riid, __deref_out void** ppvInterface) PURE;
// NAME: IXAudio2::AddRef
// DESCRIPTION: Adds a reference to the XAudio2 object.
//
STDMETHOD_(ULONG, AddRef) (THIS) PURE;
// NAME: IXAudio2::Release
// DESCRIPTION: Releases a reference to the XAudio2 object.
//
STDMETHOD_(ULONG, Release) (THIS) PURE;
// NAME: IXAudio2::GetDeviceCount
// DESCRIPTION: Returns the number of audio output devices available.
//
// ARGUMENTS:
// pCount - Returns the device count.
//
STDMETHOD(GetDeviceCount) (THIS_ __out UINT32* pCount) PURE;
// NAME: IXAudio2::GetDeviceDetails
// DESCRIPTION: Returns information about the device with the given index.
//
// ARGUMENTS:
// Index - Index of the device to be queried.
// pDeviceDetails - Returns the device details.
//
STDMETHOD(GetDeviceDetails) (THIS_ UINT32 Index, __out XAUDIO2_DEVICE_DETAILS* pDeviceDetails) PURE;
// NAME: IXAudio2::Initialize
// DESCRIPTION: Sets global XAudio2 parameters and prepares it for use.
//
// ARGUMENTS:
// Flags - Flags specifying the XAudio2 object's behavior. Currently unused.
// XAudio2Processor - An XAUDIO2_PROCESSOR enumeration value that specifies
// the hardware thread (Xbox) or processor (Windows) that XAudio2 will use.
// The enumeration values are platform-specific; platform-independent code
// can use XAUDIO2_DEFAULT_PROCESSOR to use the default on each platform.
//
STDMETHOD(Initialize) (THIS_ UINT32 Flags X2DEFAULT(0),
XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR)) PURE;
// NAME: IXAudio2::RegisterForCallbacks
// DESCRIPTION: Adds a new client to receive XAudio2's engine callbacks.
//
// ARGUMENTS:
// pCallback - Callback interface to be called during each processing pass.
//
STDMETHOD(RegisterForCallbacks) (__in IXAudio2EngineCallback* pCallback) PURE;
// NAME: IXAudio2::UnregisterForCallbacks
// DESCRIPTION: Removes an existing receiver of XAudio2 engine callbacks.
//
// ARGUMENTS:
// pCallback - Previously registered callback interface to be removed.
//
STDMETHOD_(void, UnregisterForCallbacks) (__in IXAudio2EngineCallback* pCallback) PURE;
// NAME: IXAudio2::CreateSourceVoice
// DESCRIPTION: Creates and configures a source voice.
//
// ARGUMENTS:
// ppSourceVoice - Returns the new object's IXAudio2SourceVoice interface.
// pSourceFormat - Format of the audio that will be fed to the voice.
// Flags - XAUDIO2_VOICE flags specifying the source voice's behavior.
// MaxFrequencyRatio - Maximum SetFrequencyRatio argument to be allowed.
// pCallback - Optional pointer to a client-provided callback interface.
// pSendList - Optional list of voices this voice should send audio to.
// pEffectChain - Optional list of effects to apply to the audio data.
//
STDMETHOD(CreateSourceVoice) (THIS_ __deref_out IXAudio2SourceVoice** ppSourceVoice,
__in const WAVEFORMATEX* pSourceFormat,
UINT32 Flags X2DEFAULT(0),
float MaxFrequencyRatio X2DEFAULT(XAUDIO2_DEFAULT_FREQ_RATIO),
__in_opt IXAudio2VoiceCallback* pCallback X2DEFAULT(NULL),
__in_opt const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL),
__in_opt const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE;
// NAME: IXAudio2::CreateSubmixVoice
// DESCRIPTION: Creates and configures a submix voice.
//
// ARGUMENTS:
// ppSubmixVoice - Returns the new object's IXAudio2SubmixVoice interface.
// InputChannels - Number of channels in this voice's input audio data.
// InputSampleRate - Sample rate of this voice's input audio data.
// Flags - XAUDIO2_VOICE flags specifying the submix voice's behavior.
// ProcessingStage - Arbitrary number that determines the processing order.
// pSendList - Optional list of voices this voice should send audio to.
// pEffectChain - Optional list of effects to apply to the audio data.
//
STDMETHOD(CreateSubmixVoice) (THIS_ __deref_out IXAudio2SubmixVoice** ppSubmixVoice,
UINT32 InputChannels, UINT32 InputSampleRate,
UINT32 Flags X2DEFAULT(0), UINT32 ProcessingStage X2DEFAULT(0),
__in_opt const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL),
__in_opt const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE;
// NAME: IXAudio2::CreateMasteringVoice
// DESCRIPTION: Creates and configures a mastering voice.
//
// ARGUMENTS:
// ppMasteringVoice - Returns the new object's IXAudio2MasteringVoice interface.
// InputChannels - Number of channels in this voice's input audio data.
// InputSampleRate - Sample rate of this voice's input audio data.
// Flags - XAUDIO2_VOICE flags specifying the mastering voice's behavior.
// DeviceIndex - Identifier of the device to receive the output audio.
// pEffectChain - Optional list of effects to apply to the audio data.
//
STDMETHOD(CreateMasteringVoice) (THIS_ __deref_out IXAudio2MasteringVoice** ppMasteringVoice,
UINT32 InputChannels X2DEFAULT(XAUDIO2_DEFAULT_CHANNELS),
UINT32 InputSampleRate X2DEFAULT(XAUDIO2_DEFAULT_SAMPLERATE),
UINT32 Flags X2DEFAULT(0), UINT32 DeviceIndex X2DEFAULT(0),
__in_opt const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE;
// NAME: IXAudio2::StartEngine
// DESCRIPTION: Creates and starts the audio processing thread.
//
STDMETHOD(StartEngine) (THIS) PURE;
// NAME: IXAudio2::StopEngine
// DESCRIPTION: Stops and destroys the audio processing thread.
//
STDMETHOD_(void, StopEngine) (THIS) PURE;
// NAME: IXAudio2::CommitChanges
// DESCRIPTION: Atomically applies a set of operations previously tagged
// with a given identifier.
//
// ARGUMENTS:
// OperationSet - Identifier of the set of operations to be applied.
//
STDMETHOD(CommitChanges) (THIS_ UINT32 OperationSet) PURE;
// NAME: IXAudio2::GetPerformanceData
// DESCRIPTION: Returns current resource usage details: memory, CPU, etc.
//
// ARGUMENTS:
// pPerfData - Returns the performance data structure.
//
STDMETHOD_(void, GetPerformanceData) (THIS_ __out XAUDIO2_PERFORMANCE_DATA* pPerfData) PURE;
// NAME: IXAudio2::SetDebugConfiguration
// DESCRIPTION: Configures XAudio2's debug output (in debug builds only).
//
// ARGUMENTS:
// pDebugConfiguration - Structure describing the debug output behavior.
// pReserved - Optional parameter; must be NULL.
//
STDMETHOD_(void, SetDebugConfiguration) (THIS_ __in_opt const XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration,
__in_opt __reserved void* pReserved X2DEFAULT(NULL)) PURE;
};
/**************************************************************************
*
* IXAudio2Voice: Base voice management interface.
*
**************************************************************************/
#undef INTERFACE
#define INTERFACE IXAudio2Voice
DECLARE_INTERFACE(IXAudio2Voice)
{
// These methods are declared in a macro so that the same declarations
// can be used in the derived voice types (IXAudio2SourceVoice, etc).
#define Declare_IXAudio2Voice_Methods() \
\
/* NAME: IXAudio2Voice::GetVoiceDetails
// DESCRIPTION: Returns the basic characteristics of this voice.
//
// ARGUMENTS:
// pVoiceDetails - Returns the voice's details.
*/\
STDMETHOD_(void, GetVoiceDetails) (THIS_ __out XAUDIO2_VOICE_DETAILS* pVoiceDetails) PURE; \
\
/* NAME: IXAudio2Voice::SetOutputVoices
// DESCRIPTION: Replaces the set of submix/mastering voices that receive
// this voice's output.
//
// ARGUMENTS:
// pSendList - Optional list of voices this voice should send audio to.
*/\
STDMETHOD(SetOutputVoices) (THIS_ __in_opt const XAUDIO2_VOICE_SENDS* pSendList) PURE; \
\
/* NAME: IXAudio2Voice::SetEffectChain
// DESCRIPTION: Replaces this voice's current effect chain with a new one.
//
// ARGUMENTS:
// pEffectChain - Structure describing the new effect chain to be used.
*/\
STDMETHOD(SetEffectChain) (THIS_ __in_opt const XAUDIO2_EFFECT_CHAIN* pEffectChain) PURE; \
\
/* NAME: IXAudio2Voice::EnableEffect
// DESCRIPTION: Enables an effect in this voice's effect chain.
//
// ARGUMENTS:
// EffectIndex - Index of an effect within this voice's effect chain.
// OperationSet - Used to identify this call as part of a deferred batch.
*/\
STDMETHOD(EnableEffect) (THIS_ UINT32 EffectIndex, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
\
/* NAME: IXAudio2Voice::DisableEffect
// DESCRIPTION: Disables an effect in this voice's effect chain.
//
// ARGUMENTS:
// EffectIndex - Index of an effect within this voice's effect chain.
// OperationSet - Used to identify this call as part of a deferred batch.
*/\
STDMETHOD(DisableEffect) (THIS_ UINT32 EffectIndex, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
\
/* NAME: IXAudio2Voice::GetEffectState
// DESCRIPTION: Returns the running state of an effect.
//
// ARGUMENTS:
// EffectIndex - Index of an effect within this voice's effect chain.
// pEnabled - Returns the enabled/disabled state of the given effect.
*/\
STDMETHOD_(void, GetEffectState) (THIS_ UINT32 EffectIndex, __out BOOL* pEnabled) PURE; \
\
/* NAME: IXAudio2Voice::SetEffectParameters
// DESCRIPTION: Sets effect-specific parameters.
//
// REMARKS: Unlike IXAPOParameters::SetParameters, this method may
// be called from any thread. XAudio2 implements
// appropriate synchronization to copy the parameters to the
// realtime audio processing thread.
//
// ARGUMENTS:
// EffectIndex - Index of an effect within this voice's effect chain.
// pParameters - Pointer to an effect-specific parameters block.
// ParametersByteSize - Size of the pParameters array in bytes.
// OperationSet - Used to identify this call as part of a deferred batch.
*/\
STDMETHOD(SetEffectParameters) (THIS_ UINT32 EffectIndex, \
__in_bcount(ParametersByteSize) const void* pParameters, \
UINT32 ParametersByteSize, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
\
/* NAME: IXAudio2Voice::GetEffectParameters
// DESCRIPTION: Obtains the current effect-specific parameters.
//
// ARGUMENTS:
// EffectIndex - Index of an effect within this voice's effect chain.
// pParameters - Returns the current values of the effect-specific parameters.
// ParametersByteSize - Size of the pParameters array in bytes.
*/\
STDMETHOD(GetEffectParameters) (THIS_ UINT32 EffectIndex, \
__out_bcount(ParametersByteSize) void* pParameters, \
UINT32 ParametersByteSize) PURE; \
\
/* NAME: IXAudio2Voice::SetFilterParameters
// DESCRIPTION: Sets this voice's filter parameters.
//
// ARGUMENTS:
// pParameters - Pointer to the filter's parameter structure.
// OperationSet - Used to identify this call as part of a deferred batch.
*/\
STDMETHOD(SetFilterParameters) (THIS_ __in const XAUDIO2_FILTER_PARAMETERS* pParameters, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
\
/* NAME: IXAudio2Voice::GetFilterParameters
// DESCRIPTION: Returns this voice's current filter parameters.
//
// ARGUMENTS:
// pParameters - Returns the filter parameters.
*/\
STDMETHOD_(void, GetFilterParameters) (THIS_ __out XAUDIO2_FILTER_PARAMETERS* pParameters) PURE; \
\
/* NAME: IXAudio2Voice::SetOutputFilterParameters
// DESCRIPTION: Sets the filter parameters on one of this voice's sends.
//
// ARGUMENTS:
// pDestinationVoice - Destination voice of the send whose filter parameters will be set.
// pParameters - Pointer to the filter's parameter structure.
// OperationSet - Used to identify this call as part of a deferred batch.
*/\
STDMETHOD(SetOutputFilterParameters) (THIS_ __in_opt IXAudio2Voice* pDestinationVoice, \
__in const XAUDIO2_FILTER_PARAMETERS* pParameters, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
\
/* NAME: IXAudio2Voice::GetOutputFilterParameters
// DESCRIPTION: Returns the filter parameters from one of this voice's sends.
//
// ARGUMENTS:
// pDestinationVoice - Destination voice of the send whose filter parameters will be read.
// pParameters - Returns the filter parameters.
*/\
STDMETHOD_(void, GetOutputFilterParameters) (THIS_ __in_opt IXAudio2Voice* pDestinationVoice, \
__out XAUDIO2_FILTER_PARAMETERS* pParameters) PURE; \
\
/* NAME: IXAudio2Voice::SetVolume
// DESCRIPTION: Sets this voice's overall volume level.
//
// ARGUMENTS:
// Volume - New overall volume level to be used, as an amplitude factor.
// OperationSet - Used to identify this call as part of a deferred batch.
*/\
STDMETHOD(SetVolume) (THIS_ float Volume, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
\
/* NAME: IXAudio2Voice::GetVolume
// DESCRIPTION: Obtains this voice's current overall volume level.
//
// ARGUMENTS:
// pVolume: Returns the voice's current overall volume level.
*/\
STDMETHOD_(void, GetVolume) (THIS_ __out float* pVolume) PURE; \
\
/* NAME: IXAudio2Voice::SetChannelVolumes
// DESCRIPTION: Sets this voice's per-channel volume levels.
//
// ARGUMENTS:
// Channels - Used to confirm the voice's channel count.
// pVolumes - Array of per-channel volume levels to be used.
// OperationSet - Used to identify this call as part of a deferred batch.
*/\
STDMETHOD(SetChannelVolumes) (THIS_ UINT32 Channels, __in_ecount(Channels) const float* pVolumes, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
\
/* NAME: IXAudio2Voice::GetChannelVolumes
// DESCRIPTION: Returns this voice's current per-channel volume levels.
//
// ARGUMENTS:
// Channels - Used to confirm the voice's channel count.
// pVolumes - Returns an array of the current per-channel volume levels.
*/\
STDMETHOD_(void, GetChannelVolumes) (THIS_ UINT32 Channels, __out_ecount(Channels) float* pVolumes) PURE; \
\
/* NAME: IXAudio2Voice::SetOutputMatrix
// DESCRIPTION: Sets the volume levels used to mix from each channel of this
// voice's output audio to each channel of a given destination
// voice's input audio.
//
// ARGUMENTS:
// pDestinationVoice - The destination voice whose mix matrix to change.
// SourceChannels - Used to confirm this voice's output channel count
// (the number of channels produced by the last effect in the chain).
// DestinationChannels - Confirms the destination voice's input channels.
// pLevelMatrix - Array of [SourceChannels * DestinationChannels] send
// levels. The level used to send from source channel S to destination
// channel D should be in pLevelMatrix[S + SourceChannels * D].
// OperationSet - Used to identify this call as part of a deferred batch.
*/\
STDMETHOD(SetOutputMatrix) (THIS_ __in_opt IXAudio2Voice* pDestinationVoice, \
UINT32 SourceChannels, UINT32 DestinationChannels, \
__in_ecount(SourceChannels * DestinationChannels) const float* pLevelMatrix, \
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \
\
/* NAME: IXAudio2Voice::GetOutputMatrix
// DESCRIPTION: Obtains the volume levels used to send each channel of this
// voice's output audio to each channel of a given destination
// voice's input audio.
//
// ARGUMENTS:
// pDestinationVoice - The destination voice whose mix matrix to obtain.
// SourceChannels - Used to confirm this voice's output channel count
// (the number of channels produced by the last effect in the chain).
// DestinationChannels - Confirms the destination voice's input channels.
// pLevelMatrix - Array of send levels, as above.
*/\
STDMETHOD_(void, GetOutputMatrix) (THIS_ __in_opt IXAudio2Voice* pDestinationVoice, \
UINT32 SourceChannels, UINT32 DestinationChannels, \
__out_ecount(SourceChannels * DestinationChannels) float* pLevelMatrix) PURE; \
\
/* NAME: IXAudio2Voice::DestroyVoice
// DESCRIPTION: Destroys this voice, stopping it if necessary and removing
// it from the XAudio2 graph.
*/\
STDMETHOD_(void, DestroyVoice) (THIS) PURE
Declare_IXAudio2Voice_Methods();
};
/**************************************************************************
*
* IXAudio2SourceVoice: Source voice management interface.
*
**************************************************************************/
#undef INTERFACE
#define INTERFACE IXAudio2SourceVoice
DECLARE_INTERFACE_(IXAudio2SourceVoice, IXAudio2Voice)
{
// Methods from IXAudio2Voice base interface
Declare_IXAudio2Voice_Methods();
// NAME: IXAudio2SourceVoice::Start
// DESCRIPTION: Makes this voice start consuming and processing audio.
//
// ARGUMENTS:
// Flags - Flags controlling how the voice should be started.
// OperationSet - Used to identify this call as part of a deferred batch.
//
STDMETHOD(Start) (THIS_ UINT32 Flags X2DEFAULT(0), UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
// NAME: IXAudio2SourceVoice::Stop
// DESCRIPTION: Makes this voice stop consuming audio.
//
// ARGUMENTS:
// Flags - Flags controlling how the voice should be stopped.
// OperationSet - Used to identify this call as part of a deferred batch.
//
STDMETHOD(Stop) (THIS_ UINT32 Flags X2DEFAULT(0), UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
// NAME: IXAudio2SourceVoice::SubmitSourceBuffer
// DESCRIPTION: Adds a new audio buffer to this voice's input queue.
//
// ARGUMENTS:
// pBuffer - Pointer to the buffer structure to be queued.
// pBufferWMA - Additional structure used only when submitting XWMA data.
//
STDMETHOD(SubmitSourceBuffer) (THIS_ __in const XAUDIO2_BUFFER* pBuffer, __in_opt const XAUDIO2_BUFFER_WMA* pBufferWMA X2DEFAULT(NULL)) PURE;
// NAME: IXAudio2SourceVoice::FlushSourceBuffers
// DESCRIPTION: Removes all pending audio buffers from this voice's queue.
//
STDMETHOD(FlushSourceBuffers) (THIS) PURE;
// NAME: IXAudio2SourceVoice::Discontinuity
// DESCRIPTION: Notifies the voice of an intentional break in the stream of
// audio buffers (e.g. the end of a sound), to prevent XAudio2
// from interpreting an empty buffer queue as a glitch.
//
STDMETHOD(Discontinuity) (THIS) PURE;
// NAME: IXAudio2SourceVoice::ExitLoop
// DESCRIPTION: Breaks out of the current loop when its end is reached.
//
// ARGUMENTS:
// OperationSet - Used to identify this call as part of a deferred batch.
//
STDMETHOD(ExitLoop) (THIS_ UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
// NAME: IXAudio2SourceVoice::GetState
// DESCRIPTION: Returns the number of buffers currently queued on this voice,
// the pContext value associated with the currently processing
// buffer (if any), and other voice state information.
//
// ARGUMENTS:
// pVoiceState - Returns the state information.
//
STDMETHOD_(void, GetState) (THIS_ __out XAUDIO2_VOICE_STATE* pVoiceState) PURE;
// NAME: IXAudio2SourceVoice::SetFrequencyRatio
// DESCRIPTION: Sets this voice's frequency adjustment, i.e. its pitch.
//
// ARGUMENTS:
// Ratio - Frequency change, expressed as source frequency / target frequency.
// OperationSet - Used to identify this call as part of a deferred batch.
//
STDMETHOD(SetFrequencyRatio) (THIS_ float Ratio,
UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE;
// NAME: IXAudio2SourceVoice::GetFrequencyRatio
// DESCRIPTION: Returns this voice's current frequency adjustment ratio.
//
// ARGUMENTS:
// pRatio - Returns the frequency adjustment.
//
STDMETHOD_(void, GetFrequencyRatio) (THIS_ __out float* pRatio) PURE;
// NAME: IXAudio2SourceVoice::SetSourceSampleRate
// DESCRIPTION: Reconfigures this voice to treat its source data as being
// at a different sample rate than the original one specified
// in CreateSourceVoice's pSourceFormat argument.
//
// ARGUMENTS:
// UINT32 - The intended sample rate of further submitted source data.
//
STDMETHOD(SetSourceSampleRate) (THIS_ UINT32 NewSourceSampleRate) PURE;
};
/**************************************************************************
*
* IXAudio2SubmixVoice: Submixing voice management interface.
*
**************************************************************************/
#undef INTERFACE
#define INTERFACE IXAudio2SubmixVoice
DECLARE_INTERFACE_(IXAudio2SubmixVoice, IXAudio2Voice)
{
// Methods from IXAudio2Voice base interface
Declare_IXAudio2Voice_Methods();
// There are currently no methods specific to submix voices.
};
/**************************************************************************
*
* IXAudio2MasteringVoice: Mastering voice management interface.
*
**************************************************************************/
#undef INTERFACE
#define INTERFACE IXAudio2MasteringVoice
DECLARE_INTERFACE_(IXAudio2MasteringVoice, IXAudio2Voice)
{
// Methods from IXAudio2Voice base interface
Declare_IXAudio2Voice_Methods();
// There are currently no methods specific to mastering voices.
};
/**************************************************************************
*
* IXAudio2EngineCallback: Client notification interface for engine events.
*
* REMARKS: Contains methods to notify the client when certain events happen
* in the XAudio2 engine. This interface should be implemented by
* the client. XAudio2 will call these methods via the interface
* pointer provided by the client when it calls XAudio2Create or
* IXAudio2::Initialize.
*
**************************************************************************/
#undef INTERFACE
#define INTERFACE IXAudio2EngineCallback
DECLARE_INTERFACE(IXAudio2EngineCallback)
{
// Called by XAudio2 just before an audio processing pass begins.
STDMETHOD_(void, OnProcessingPassStart) (THIS) PURE;
// Called just after an audio processing pass ends.
STDMETHOD_(void, OnProcessingPassEnd) (THIS) PURE;
// Called in the event of a critical system error which requires XAudio2
// to be closed down and restarted. The error code is given in Error.
STDMETHOD_(void, OnCriticalError) (THIS_ HRESULT Error) PURE;
};
/**************************************************************************
*
* IXAudio2VoiceCallback: Client notification interface for voice events.
*
* REMARKS: Contains methods to notify the client when certain events happen
* in an XAudio2 voice. This interface should be implemented by the
* client. XAudio2 will call these methods via an interface pointer
* provided by the client in the IXAudio2::CreateSourceVoice call.
*
**************************************************************************/
#undef INTERFACE
#define INTERFACE IXAudio2VoiceCallback
DECLARE_INTERFACE(IXAudio2VoiceCallback)
{
// Called just before this voice's processing pass begins.
STDMETHOD_(void, OnVoiceProcessingPassStart) (THIS_ UINT32 BytesRequired) PURE;
// Called just after this voice's processing pass ends.
STDMETHOD_(void, OnVoiceProcessingPassEnd) (THIS) PURE;
// Called when this voice has just finished playing a buffer stream
// (as marked with the XAUDIO2_END_OF_STREAM flag on the last buffer).
STDMETHOD_(void, OnStreamEnd) (THIS) PURE;
// Called when this voice is about to start processing a new buffer.
STDMETHOD_(void, OnBufferStart) (THIS_ void* pBufferContext) PURE;
// Called when this voice has just finished processing a buffer.
// The buffer can now be reused or destroyed.
STDMETHOD_(void, OnBufferEnd) (THIS_ void* pBufferContext) PURE;
// Called when this voice has just reached the end position of a loop.
STDMETHOD_(void, OnLoopEnd) (THIS_ void* pBufferContext) PURE;
// Called in the event of a critical error during voice processing,
// such as a failing xAPO or an error from the hardware XMA decoder.
// The voice may have to be destroyed and re-created to recover from
// the error. The callback arguments report which buffer was being
// processed when the error occurred, and its HRESULT code.
STDMETHOD_(void, OnVoiceError) (THIS_ void* pBufferContext, HRESULT Error) PURE;
};
/**************************************************************************
*
* Macros to make it easier to use the XAudio2 COM interfaces in C code.
*
**************************************************************************/
#ifndef __cplusplus
// IXAudio2
#define IXAudio2_QueryInterface(This,riid,ppvInterface) ((This)->lpVtbl->QueryInterface(This,riid,ppvInterface))
#define IXAudio2_AddRef(This) ((This)->lpVtbl->AddRef(This))
#define IXAudio2_Release(This) ((This)->lpVtbl->Release(This))
#define IXAudio2_GetDeviceCount(This,puCount) ((This)->lpVtbl->GetDeviceCount(This,puCount))
#define IXAudio2_GetDeviceDetails(This,Index,pDeviceDetails) ((This)->lpVtbl->GetDeviceDetails(This,Index,pDeviceDetails))
#define IXAudio2_Initialize(This,Flags,XAudio2Processor) ((This)->lpVtbl->Initialize(This,Flags,XAudio2Processor))
#define IXAudio2_CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) ((This)->lpVtbl->CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain))
#define IXAudio2_CreateSubmixVoice(This,ppSubmixVoice,InputChannels,InputSampleRate,Flags,ProcessingStage,pSendList,pEffectChain) ((This)->lpVtbl->CreateSubmixVoice(This,ppSubmixVoice,InputChannels,InputSampleRate,Flags,ProcessingStage,pSendList,pEffectChain))
#define IXAudio2_CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain) ((This)->lpVtbl->CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain))
#define IXAudio2_StartEngine(This) ((This)->lpVtbl->StartEngine(This))
#define IXAudio2_StopEngine(This) ((This)->lpVtbl->StopEngine(This))
#define IXAudio2_CommitChanges(This,OperationSet) ((This)->lpVtbl->CommitChanges(This,OperationSet))
#define IXAudio2_GetPerformanceData(This,pPerfData) ((This)->lpVtbl->GetPerformanceData(This,pPerfData))
#define IXAudio2_SetDebugConfiguration(This,pDebugConfiguration,pReserved) ((This)->lpVtbl->SetDebugConfiguration(This,pDebugConfiguration,pReserved))
// IXAudio2Voice
#define IXAudio2Voice_GetVoiceDetails(This,pVoiceDetails) ((This)->lpVtbl->GetVoiceDetails(This,pVoiceDetails))
#define IXAudio2Voice_SetOutputVoices(This,pSendList) ((This)->lpVtbl->SetOutputVoices(This,pSendList))
#define IXAudio2Voice_SetEffectChain(This,pEffectChain) ((This)->lpVtbl->SetEffectChain(This,pEffectChain))
#define IXAudio2Voice_EnableEffect(This,EffectIndex,OperationSet) ((This)->lpVtbl->EnableEffect(This,EffectIndex,OperationSet))
#define IXAudio2Voice_DisableEffect(This,EffectIndex,OperationSet) ((This)->lpVtbl->DisableEffect(This,EffectIndex,OperationSet))
#define IXAudio2Voice_GetEffectState(This,EffectIndex,pEnabled) ((This)->lpVtbl->GetEffectState(This,EffectIndex,pEnabled))
#define IXAudio2Voice_SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize, OperationSet) ((This)->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet))
#define IXAudio2Voice_GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) ((This)->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize))
#define IXAudio2Voice_SetFilterParameters(This,pParameters,OperationSet) ((This)->lpVtbl->SetFilterParameters(This,pParameters,OperationSet))
#define IXAudio2Voice_GetFilterParameters(This,pParameters) ((This)->lpVtbl->GetFilterParameters(This,pParameters))
#define IXAudio2Voice_SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) ((This)->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet))
#define IXAudio2Voice_GetOutputFilterParameters(This,pDestinationVoice,pParameters) ((This)->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters))
#define IXAudio2Voice_SetVolume(This,Volume,OperationSet) ((This)->lpVtbl->SetVolume(This,Volume,OperationSet))
#define IXAudio2Voice_GetVolume(This,pVolume) ((This)->lpVtbl->GetVolume(This,pVolume))
#define IXAudio2Voice_SetChannelVolumes(This,Channels,pVolumes,OperationSet) ((This)->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet))
#define IXAudio2Voice_GetChannelVolumes(This,Channels,pVolumes) ((This)->lpVtbl->GetChannelVolumes(This,Channels,pVolumes))
#define IXAudio2Voice_SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) ((This)->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet))
#define IXAudio2Voice_GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) ((This)->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix))
#define IXAudio2Voice_DestroyVoice(This) ((This)->lpVtbl->DestroyVoice(This))
// IXAudio2SourceVoice
#define IXAudio2SourceVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails
#define IXAudio2SourceVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices
#define IXAudio2SourceVoice_SetEffectChain IXAudio2Voice_SetEffectChain
#define IXAudio2SourceVoice_EnableEffect IXAudio2Voice_EnableEffect
#define IXAudio2SourceVoice_DisableEffect IXAudio2Voice_DisableEffect
#define IXAudio2SourceVoice_GetEffectState IXAudio2Voice_GetEffectState
#define IXAudio2SourceVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters
#define IXAudio2SourceVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters
#define IXAudio2SourceVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters
#define IXAudio2SourceVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters
#define IXAudio2SourceVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters
#define IXAudio2SourceVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters
#define IXAudio2SourceVoice_SetVolume IXAudio2Voice_SetVolume
#define IXAudio2SourceVoice_GetVolume IXAudio2Voice_GetVolume
#define IXAudio2SourceVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes
#define IXAudio2SourceVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes
#define IXAudio2SourceVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix
#define IXAudio2SourceVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix
#define IXAudio2SourceVoice_DestroyVoice IXAudio2Voice_DestroyVoice
#define IXAudio2SourceVoice_Start(This,Flags,OperationSet) ((This)->lpVtbl->Start(This,Flags,OperationSet))
#define IXAudio2SourceVoice_Stop(This,Flags,OperationSet) ((This)->lpVtbl->Stop(This,Flags,OperationSet))
#define IXAudio2SourceVoice_SubmitSourceBuffer(This,pBuffer,pBufferWMA) ((This)->lpVtbl->SubmitSourceBuffer(This,pBuffer,pBufferWMA))
#define IXAudio2SourceVoice_FlushSourceBuffers(This) ((This)->lpVtbl->FlushSourceBuffers(This))
#define IXAudio2SourceVoice_Discontinuity(This) ((This)->lpVtbl->Discontinuity(This))
#define IXAudio2SourceVoice_ExitLoop(This,OperationSet) ((This)->lpVtbl->ExitLoop(This,OperationSet))
#define IXAudio2SourceVoice_GetState(This,pVoiceState) ((This)->lpVtbl->GetState(This,pVoiceState))
#define IXAudio2SourceVoice_SetFrequencyRatio(This,Ratio,OperationSet) ((This)->lpVtbl->SetFrequencyRatio(This,Ratio,OperationSet))
#define IXAudio2SourceVoice_GetFrequencyRatio(This,pRatio) ((This)->lpVtbl->GetFrequencyRatio(This,pRatio))
#define IXAudio2SourceVoice_SetSourceSampleRate(This,NewSourceSampleRate) ((This)->lpVtbl->SetSourceSampleRate(This,NewSourceSampleRate))
// IXAudio2SubmixVoice
#define IXAudio2SubmixVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails
#define IXAudio2SubmixVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices
#define IXAudio2SubmixVoice_SetEffectChain IXAudio2Voice_SetEffectChain
#define IXAudio2SubmixVoice_EnableEffect IXAudio2Voice_EnableEffect
#define IXAudio2SubmixVoice_DisableEffect IXAudio2Voice_DisableEffect
#define IXAudio2SubmixVoice_GetEffectState IXAudio2Voice_GetEffectState
#define IXAudio2SubmixVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters
#define IXAudio2SubmixVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters
#define IXAudio2SubmixVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters
#define IXAudio2SubmixVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters
#define IXAudio2SubmixVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters
#define IXAudio2SubmixVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters
#define IXAudio2SubmixVoice_SetVolume IXAudio2Voice_SetVolume
#define IXAudio2SubmixVoice_GetVolume IXAudio2Voice_GetVolume
#define IXAudio2SubmixVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes
#define IXAudio2SubmixVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes
#define IXAudio2SubmixVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix
#define IXAudio2SubmixVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix
#define IXAudio2SubmixVoice_DestroyVoice IXAudio2Voice_DestroyVoice
// IXAudio2MasteringVoice
#define IXAudio2MasteringVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails
#define IXAudio2MasteringVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices
#define IXAudio2MasteringVoice_SetEffectChain IXAudio2Voice_SetEffectChain
#define IXAudio2MasteringVoice_EnableEffect IXAudio2Voice_EnableEffect
#define IXAudio2MasteringVoice_DisableEffect IXAudio2Voice_DisableEffect
#define IXAudio2MasteringVoice_GetEffectState IXAudio2Voice_GetEffectState
#define IXAudio2MasteringVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters
#define IXAudio2MasteringVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters
#define IXAudio2MasteringVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters
#define IXAudio2MasteringVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters
#define IXAudio2MasteringVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters
#define IXAudio2MasteringVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters
#define IXAudio2MasteringVoice_SetVolume IXAudio2Voice_SetVolume
#define IXAudio2MasteringVoice_GetVolume IXAudio2Voice_GetVolume
#define IXAudio2MasteringVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes
#define IXAudio2MasteringVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes
#define IXAudio2MasteringVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix
#define IXAudio2MasteringVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix
#define IXAudio2MasteringVoice_DestroyVoice IXAudio2Voice_DestroyVoice
#endif // #ifndef __cplusplus
/**************************************************************************
*
* Utility functions used to convert from pitch in semitones and volume
* in decibels to the frequency and amplitude ratio units used by XAudio2.
* These are only defined if the client #defines XAUDIO2_HELPER_FUNCTIONS
* prior to #including xaudio2.h.
*
**************************************************************************/
#ifdef XAUDIO2_HELPER_FUNCTIONS
#define _USE_MATH_DEFINES // Make math.h define M_PI
#include <math.h> // For powf, log10f, sinf and asinf
// Calculate the argument to SetVolume from a decibel value
__inline float XAudio2DecibelsToAmplitudeRatio(float Decibels)
{
return powf(10.0f, Decibels / 20.0f);
}
// Recover a volume in decibels from an amplitude factor
__inline float XAudio2AmplitudeRatioToDecibels(float Volume)
{
if (Volume == 0)
{
return -3.402823466e+38f; // Smallest float value (-FLT_MAX)
}
return 20.0f * log10f(Volume);
}
// Calculate the argument to SetFrequencyRatio from a semitone value
__inline float XAudio2SemitonesToFrequencyRatio(float Semitones)
{
// FrequencyRatio = 2 ^ Octaves
// = 2 ^ (Semitones / 12)
return powf(2.0f, Semitones / 12.0f);
}
// Recover a pitch in semitones from a frequency ratio
__inline float XAudio2FrequencyRatioToSemitones(float FrequencyRatio)
{
// Semitones = 12 * log2(FrequencyRatio)
// = 12 * log2(10) * log10(FrequencyRatio)
return 39.86313713864835f * log10f(FrequencyRatio);
}
// Convert from filter cutoff frequencies expressed in Hertz to the radian
// frequency values used in XAUDIO2_FILTER_PARAMETERS.Frequency. Note that
// the highest CutoffFrequency supported is SampleRate/6. Higher values of
// CutoffFrequency will return XAUDIO2_MAX_FILTER_FREQUENCY.
__inline float XAudio2CutoffFrequencyToRadians(float CutoffFrequency, UINT32 SampleRate)
{
if ((UINT32)(CutoffFrequency * 6.0f) >= SampleRate)
{
return XAUDIO2_MAX_FILTER_FREQUENCY;
}
return 2.0f * sinf((float)M_PI * CutoffFrequency / SampleRate);
}
// Convert from radian frequencies back to absolute frequencies in Hertz
__inline float XAudio2RadiansToCutoffFrequency(float Radians, float SampleRate)
{
return SampleRate * asinf(Radians / 2.0f) / (float)M_PI;
}
#endif // #ifdef XAUDIO2_HELPER_FUNCTIONS
/**************************************************************************
*
* XAudio2Create: Top-level function that creates an XAudio2 instance.
*
* On Windows this is just an inline function that calls CoCreateInstance
* and Initialize. The arguments are described above, under Initialize,
* except that the XAUDIO2_DEBUG_ENGINE flag can be used here to select
* the debug version of XAudio2.
*
* On Xbox, this function is implemented in the XAudio2 library, and the
* XAUDIO2_DEBUG_ENGINE flag has no effect; the client must explicitly
* link with the debug version of the library to obtain debug behavior.
*
**************************************************************************/
#ifdef _XBOX
STDAPI XAudio2Create(__deref_out IXAudio2** ppXAudio2, UINT32 Flags X2DEFAULT(0),
XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR));
#else // Windows
__inline HRESULT XAudio2Create(__deref_out IXAudio2** ppXAudio2, UINT32 Flags X2DEFAULT(0),
XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR))
{
// Instantiate the appropriate XAudio2 engine
IXAudio2* pXAudio2;
#ifdef __cplusplus
HRESULT hr = CoCreateInstance((Flags & XAUDIO2_DEBUG_ENGINE) ? __uuidof(XAudio2_Debug) : __uuidof(XAudio2),
NULL, CLSCTX_INPROC_SERVER, __uuidof(IXAudio2), (void**)&pXAudio2);
if (SUCCEEDED(hr))
{
hr = pXAudio2->Initialize(Flags, XAudio2Processor);
if (SUCCEEDED(hr))
{
*ppXAudio2 = pXAudio2;
}
else
{
pXAudio2->Release();
}
}
#else
HRESULT hr = CoCreateInstance((Flags & XAUDIO2_DEBUG_ENGINE) ? &CLSID_XAudio2_Debug : &CLSID_XAudio2,
NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio2, (void**)&pXAudio2);
if (SUCCEEDED(hr))
{
hr = pXAudio2->lpVtbl->Initialize(pXAudio2, Flags, XAudio2Processor);
if (SUCCEEDED(hr))
{
*ppXAudio2 = pXAudio2;
}
else
{
pXAudio2->lpVtbl->Release(pXAudio2);
}
}
#endif // #ifdef __cplusplus
return hr;
}
#endif // #ifdef _XBOX
// Undo the #pragma pack(push, 1) directive at the top of this file
#pragma pack(pop)
#endif // #ifndef GUID_DEFS_ONLY
#endif // #ifndef __XAUDIO2_INCLUDED__
================================================
FILE: dependencies/DirectX_2010/audiodefs.h
================================================
/***************************************************************************
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* File: audiodefs.h
* Content: Basic constants and data types for audio work.
*
* Remarks: This header file defines all of the audio format constants and
* structures required for XAudio2 and XACT work. Providing these
* in a single location avoids certain dependency problems in the
* legacy audio headers (mmreg.h, mmsystem.h, ksmedia.h).
*
* NOTE: Including the legacy headers after this one may cause a
* compilation error, because they define some of the same types
* defined here without preprocessor guards to avoid multiple
* definitions. If a source file needs one of the old headers,
* it must include it before including audiodefs.h.
*
***************************************************************************/
#ifndef __AUDIODEFS_INCLUDED__
#define __AUDIODEFS_INCLUDED__
#include <windef.h> // For WORD, DWORD, etc.
#pragma pack(push, 1) // Pack structures to 1-byte boundaries
/**************************************************************************
*
* WAVEFORMATEX: Base structure for many audio formats. Format-specific
* extensions can be defined for particular formats by using a non-zero
* cbSize value and adding extra fields to the end of this structure.
*
***************************************************************************/
#ifndef _WAVEFORMATEX_
#define _WAVEFORMATEX_
typedef struct tWAVEFORMATEX
{
WORD wFormatTag; // Integer identifier of the format
WORD nChannels; // Number of audio channels
DWORD nSamplesPerSec; // Audio sample rate
DWORD nAvgBytesPerSec; // Bytes per second (possibly approximate)
WORD nBlockAlign; // Size in bytes of a sample block (all channels)
WORD wBitsPerSample; // Size in bits of a single per-channel sample
WORD cbSize; // Bytes of extra data appended to this struct
} WAVEFORMATEX;
#endif
// Defining pointer types outside of the #if block to make sure they are
// defined even if mmreg.h or mmsystem.h is #included before this file
typedef WAVEFORMATEX *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
typedef const WAVEFORMATEX *PCWAVEFORMATEX, *LPCWAVEFORMATEX;
/**************************************************************************
*
* WAVEFORMATEXTENSIBLE: Extended version of WAVEFORMATEX that should be
* used as a basis for all new audio formats. The format tag is replaced
* with a GUID, allowing new formats to be defined without registering a
* format tag with Microsoft. There are also new fields that can be used
* to specify the spatial positions for each channel and the bit packing
* used for wide samples (e.g. 24-bit PCM samples in 32-bit containers).
*
***************************************************************************/
#ifndef _WAVEFORMATEXTENSIBLE_
#define _WAVEFORMATEXTENSIBLE_
typedef struct
{
WAVEFORMATEX Format; // Base WAVEFORMATEX data
union
{
WORD wValidBitsPerSample; // Valid bits in each sample container
WORD wSamplesPerBlock; // Samples per block of audio data; valid
// if wBitsPerSample=0 (but rarely used).
WORD wReserved; // Zero if neither case above applies.
} Samples;
DWORD dwChannelMask; // Positions of the audio channels
GUID SubFormat; // Format identifier GUID
} WAVEFORMATEXTENSIBLE;
#endif
typedef WAVEFORMATEXTENSIBLE *PWAVEFORMATEXTENSIBLE, *LPWAVEFORMATEXTENSIBLE;
typedef const WAVEFORMATEXTENSIBLE *PCWAVEFORMATEXTENSIBLE, *LPCWAVEFORMATEXTENSIBLE;
/**************************************************************************
*
* Define the most common wave format tags used in WAVEFORMATEX formats.
*
***************************************************************************/
#ifndef WAVE_FORMAT_PCM // Pulse Code Modulation
// If WAVE_FORMAT_PCM is not defined, we need to define some legacy types
// for compatibility with the Windows mmreg.h / mmsystem.h header files.
// Old general format structure (information common to all formats)
typedef struct waveformat_tag
{
WORD wFormatTag;
WORD nChannels;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
WORD nBlockAlign;
} WAVEFORMAT, *PWAVEFORMAT, NEAR *NPWAVEFORMAT, FAR *LPWAVEFORMAT;
// Specific format structure for PCM data
typedef struct pcmwaveformat_tag
{
WAVEFORMAT wf;
WORD wBitsPerSample;
} PCMWAVEFORMAT, *PPCMWAVEFORMAT, NEAR *NPPCMWAVEFORMAT, FAR *LPPCMWAVEFORMAT;
#define WAVE_FORMAT_PCM 0x0001
#endif
#ifndef WAVE_FORMAT_ADPCM // Microsoft Adaptive Differental PCM
// Replicate the Microsoft ADPCM type definitions from mmreg.h.
typedef struct adpcmcoef_tag
{
short iCoef1;
short iCoef2;
} ADPCMCOEFSET;
#pragma warning(push)
#pragma warning(disable:4200) // Disable zero-sized array warnings
typedef struct adpcmwaveformat_tag {
WAVEFORMATEX wfx;
WORD wSamplesPerBlock;
WORD wNumCoef;
ADPCMCOEFSET aCoef[]; // Always 7 coefficient pairs for MS ADPCM
} ADPCMWAVEFORMAT;
#pragma warning(pop)
#define WAVE_FORMAT_ADPCM 0x0002
#endif
// Other frequently used format tags
#ifndef WAVE_FORMAT_UNKNOWN
#define WAVE_FORMAT_UNKNOWN 0x0000 // Unknown or invalid format tag
#endif
#ifndef WAVE_FORMAT_IEEE_FLOAT
#define WAVE_FORMAT_IEEE_FLOAT 0x0003 // 32-bit floating-point
#endif
#ifndef WAVE_FORMAT_MPEGLAYER3
#define WAVE_FORMAT_MPEGLAYER3 0x0055 // ISO/MPEG Layer3
#endif
#ifndef WAVE_FORMAT_DOLBY_AC3_SPDIF
#define WAVE_FORMAT_DOLBY_AC3_SPDIF 0x0092 // Dolby Audio Codec 3 over S/PDIF
#endif
#ifndef WAVE_FORMAT_WMAUDIO2
#define WAVE_FORMAT_WMAUDIO2 0x0161 // Windows Media Audio
#endif
#ifndef WAVE_FORMAT_WMAUDIO3
#define WAVE_FORMAT_WMAUDIO3 0x0162 // Windows Media Audio Pro
#endif
#ifndef WAVE_FORMAT_WMASPDIF
#define WAVE_FORMAT_WMASPDIF 0x0164 // Windows Media Audio over S/PDIF
#endif
#ifndef WAVE_FORMAT_EXTENSIBLE
#define WAVE_FORMAT_EXTENSIBLE 0xFFFE // All WAVEFORMATEXTENSIBLE formats
#endif
/**************************************************************************
*
* Define the most common wave format GUIDs used in WAVEFORMATEXTENSIBLE
* formats. Note that including the Windows ksmedia.h header after this
* one will cause build problems; this cannot be avoided, since ksmedia.h
* defines these macros without preprocessor guards.
*
***************************************************************************/
#ifdef __cplusplus // uuid() and __uuidof() are only available in C++
#ifndef KSDATAFORMAT_SUBTYPE_PCM
struct __declspec(uuid("00000001-0000-0010-8000-00aa00389b71")) KSDATAFORMAT_SUBTYPE_PCM_STRUCT;
#define KSDATAFORMAT_SUBTYPE_PCM __uuidof(KSDATAFORMAT_SUBTYPE_PCM_STRUCT)
#endif
#ifndef KSDATAFORMAT_SUBTYPE_ADPCM
struct __declspec(uuid("00000002-0000-0010-8000-00aa00389b71")) KSDATAFORMAT_SUBTYPE_ADPCM_STRUCT;
#define KSDATAFORMAT_SUBTYPE_ADPCM __uuidof(KSDATAFORMAT_SUBTYPE_ADPCM_STRUCT)
#endif
#ifndef KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
struct __declspec(uuid("00000003-0000-0010-8000-00aa00389b71")) KSDATAFORMAT_SUBTYPE_IEEE_FLOAT_STRUCT;
#define KSDATAFORMAT_SUBTYPE_IEEE_FLOAT __uuidof(KSDATAFORMAT_SUBTYPE_IEEE_FLOAT_STRUCT)
#endif
#endif
/**************************************************************************
*
* Speaker positions used in the WAVEFORMATEXTENSIBLE dwChannelMask field.
*
***************************************************************************/
#ifndef SPEAKER_FRONT_LEFT
#define SPEAKER_FRONT_LEFT 0x00000001
#define SPEAKER_FRONT_RIGHT 0x00000002
#define SPEAKER_FRONT_CENTER 0x00000004
#define SPEAKER_LOW_FREQUENCY 0x00000008
#define SPEAKER_BACK_LEFT 0x00000010
#define SPEAKER_BACK_RIGHT 0x00000020
#define SPEAKER_FRONT_LEFT_OF_CENTER 0x00000040
#define SPEAKER_FRONT_RIGHT_OF_CENTER 0x00000080
#define SPEAKER_BACK_CENTER 0x00000100
#define SPEAKER_SIDE_LEFT 0x00000200
#define SPEAKER_SIDE_RIGHT 0x00000400
#define SPEAKER_TOP_CENTER 0x00000800
#define SPEAKER_TOP_FRONT_LEFT 0x00001000
#define SPEAKER_TOP_FRONT_CENTER 0x00002000
#define SPEAKER_TOP_FRONT_RIGHT 0x00004000
#define SPEAKER_TOP_BACK_LEFT 0x00008000
#define SPEAKER_TOP_BACK_CENTER 0x00010000
#define SPEAKER_TOP_BACK_RIGHT 0x00020000
#define SPEAKER_RESERVED 0x7FFC0000
#define SPEAKER_ALL 0x80000000
#define _SPEAKER_POSITIONS_
#endif
#ifndef SPEAKER_STEREO
#define SPEAKER_MONO (SPEAKER_FRONT_CENTER)
#define SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
#define SPEAKER_2POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_LOW_FREQUENCY)
#define SPEAKER_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
#define SPEAKER_QUAD (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
#define SPEAKER_4POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
#define SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
#define SPEAKER_7POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
#define SPEAKER_5POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
#define SPEAKER_7POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
#endif
#pragma pack(pop)
#endif // #ifndef __AUDIODEFS_INCLUDED__
================================================
FILE: dependencies/DirectX_2010/comdecl.h
================================================
// comdecl.h: Macros to facilitate COM interface and GUID declarations.
// Copyright (c) Microsoft Corporation. All rights reserved.
#ifndef _COMDECL_H_
#define _COMDECL_H_
#ifndef _XBOX
#include <basetyps.h> // For standard COM interface macros
#else
#pragma warning(push)
#pragma warning(disable:4061)
#include <xtl.h> // Required by xobjbase.h
#include <xobjbase.h> // Special definitions for Xbox build
#pragma warning(pop)
#endif
// The DEFINE_CLSID() and DEFINE_IID() macros defined below allow COM GUIDs to
// be declared and defined in such a way that clients can obtain the GUIDs using
// either the __uuidof() extension or the old-style CLSID_Foo / IID_IFoo names.
// If using the latter approach, the client can also choose whether to get the
// GUID definitions by defining the INITGUID preprocessor constant or by linking
// to a GUID library. This works in either C or C++.
#ifdef __cplusplus
#define DECLSPEC_UUID_WRAPPER(x) __declspec(uuid(#x))
#ifdef INITGUID
#define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
class DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) className; \
EXTERN_C const GUID DECLSPEC_SELECTANY CLSID_##className = __uuidof(className)
#define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
interface DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) interfaceName; \
EXTERN_C const GUID DECLSPEC_SELECTANY IID_##interfaceName = __uuidof(interfaceName)
#else // INITGUID
#define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
class DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) className; \
EXTERN_C const GUID CLSID_##className
#define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
interface DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) interfaceName; \
EXTERN_C const GUID IID_##interfaceName
#endif // INITGUID
#else // __cplusplus
#define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
DEFINE_GUID(CLSID_##className, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
#define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
DEFINE_GUID(IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
#endif // __cplusplus
#endif // #ifndef _COMDECL_H_
================================================
FILE: dependencies/DirectX_2010/xma2defs.h
================================================
/***************************************************************************
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* File: xma2defs.h
* Content: Constants, data types and functions for XMA2 compressed audio.
*
***************************************************************************/
#ifndef __XMA2DEFS_INCLUDED__
#define __XMA2DEFS_INCLUDED__
#include <sal.h> // Markers for documenting API semantics
#include <winerror.h> // For S_OK, E_FAIL
#include "audiodefs.h" // Basic data types and constants for audio work
/***************************************************************************
* Overview
***************************************************************************/
// A typical XMA2 file contains these RIFF chunks:
//
// 'fmt' or 'XMA2' chunk (or both): A description of the XMA data's structure
// and characteristics (length, channels, sample rate, loops, block size, etc).
//
// 'seek' chunk: A seek table to help navigate the XMA data.
//
// 'data' chunk: The encoded XMA2 data.
//
// The encoded XMA2 data is structured as a set of BLOCKS, which contain PACKETS,
// which contain FRAMES, which contain SUBFRAMES (roughly speaking). The frames
// in a file may also be divided into several subsets, called STREAMS.
//
// FRAME: A variable-sized segment of XMA data that decodes to exactly 512 mono
// or stereo PCM samples. This is the smallest unit of XMA data that can
// be decoded in isolation. Frames are an arbitrary number of bits in
// length, and need not be byte-aligned. See "XMA frame structure" below.
//
// SUBFRAME: A region of bits in an XMA frame that decodes to 128 mono or stereo
// samples. The XMA decoder cannot decode a subframe in isolation; it needs
// a whole frame to work with. However, it can begin emitting the frame's
// decoded samples at any one of the four subframe boundaries. Subframes
// can be addressed for seeking and looping purposes.
//
// PACKET: A 2Kb region containing a 32-bit header and some XMA frames. Frames
// can (and usually do) span packets. A packet's header includes the offset
// in bits of the first frame that begins within that packet. All of the
// frames that begin in a given packet belong to the same "stream" (see the
// Multichannel Audio section below).
//
// STREAM: A set of packets within an XMA file that all contain data for the
// same mono or stereo component of a PCM file with more than two channels.
// The packets comprising a given stream may be interleaved with each other
// more or less arbitrarily; see Multichannel Audio.
//
// BLOCK: An array of XMA packets; or, to break it down differently, a series of
// consecutive XMA frames, padded at the end with reserved data. A block
// must contain at least one 2Kb packet per stream, and it can hold up to
// 4095 packets (8190Kb), but its size is typically in the 32Kb-128Kb range.
// (The size chosen involves a trade-off between memory use and efficiency
// of reading from permanent storage.)
//
// XMA frames do not span blocks, so a block is guaranteed to begin with a
// set of complete frames, one per stream. Also, a block in a multi-stream
// XMA2 file always contains the same number of samples for each stream;
// see Multichannel Audio.
//
// The 'data' chunk in an XMA2 file is an array of XMA2WAVEFORMAT.BlockCount XMA
// blocks, all the same size (as specified in XMA2WAVEFORMAT.BlockSizeInBytes)
// except for the last one, which may be shorter.
// MULTICHANNEL AUDIO: the XMA decoder can only decode raw XMA data into either
// mono or stereo PCM data. In order to encode a 6-channel file (say), the file
// must be deinterleaved into 3 stereo streams that are encoded independently,
// producing 3 encoded XMA data streams. Then the packets in these 3 streams
// are interleaved to produce a single XMA2 file, and some information is added
// to the file so that the original 6-channel audio can be reconstructed at
// decode time. This works using the concept of an XMA stream (see above).
//
// The frames for all the streams in an XMA file are interleaved in an arbitrary
// order. To locate a frame that belongs to a given stream in a given XMA block,
// you must examine the first few packets in the block. Here (and only here) the
// packets are guaranteed to be presented in stream order, so that all frames
// beginning in packet 0 belong to stream 0 (the first stereo pair), etc.
//
// (This means that when decoding multi-stream XMA files, only entire XMA blocks
// should be submitted to the decoder; otherwise it cannot know which frames
// belong to which stream.)
//
// Once you have one frame that belongs to a given stream, you can find the next
// one by looking at the frame's 'NextFrameOffsetBits' value (which is stored in
// its first 15 bits; see XMAFRAME below). The GetXmaFrameBitPosition function
// uses this technique.
// SEEKING IN XMA2 FILES: Here is some pseudocode to find the byte position and
// subframe in an XMA2 file which will contain sample S when decoded.
//
// 1. Traverse the seek table to find the XMA2 block containing sample S. The
// seek table is an array of big-endian DWORDs, one per block in the file.
// The Nth DWORD is the total number of PCM samples that would be obtained
// by decoding the entire XMA file up to the end of block N. Hence, the
// block we want is the first one whose seek table entry is greater than S.
// (See the GetXmaBlockContainingSample helper function.)
//
// 2. Calculate which frame F within the block found above contains sample S.
// Since each frame decodes to 512 samples, this is straightforward. The
// first frame in the block produces samples X to X + 512, where X is the
// seek table entry for the prior block. So F is (S - X) / 512.
//
// 3. Find the bit offset within the block where frame F starts. Since frames
// are variable-sized, this can only be done by traversing all the frames in
// the block until we reach frame F. (See GetXmaFrameBitPosition.)
//
// 4. Frame F has four 128-sample subframes. To find the subframe containing S,
// we can use the formula (S % 512) / 128.
//
// In the case of multi-stream XMA files, sample S is a multichannel sample with
// parts coming from several frames, one per stream. To find all these frames,
// steps 2-4 need to be repeated for each stream N, using the knowledge that the
// first packets in a block are presented in stream order. The frame traversal
// in step 3 must be started at the first frame in the Nth packet of the block,
// which will be the first frame for stream N. (And the packet header will tell
// you the first frame's start position within the packet.)
//
// Step 1 can be performed using the GetXmaBlockContainingSample function below,
// and steps 2-4 by calling GetXmaDecodePositionForSample once for each stream.
/***************************************************************************
* XMA constants
***************************************************************************/
// Size of the PCM samples produced by the XMA decoder
#define XMA_OUTPUT_SAMPLE_BYTES 2u
#define XMA_OUTPUT_SAMPLE_BITS (XMA_OUTPUT_SAMPLE_BYTES * 8u)
// Size of an XMA packet
#define XMA_BYTES_PER_PACKET 2048u
#define XMA_BITS_PER_PACKET (XMA_BYTES_PER_PACKET * 8u)
// Size of an XMA packet header
#define XMA_PACKET_HEADER_BYTES 4u
#define XMA_PACKET_HEADER_BITS (XMA_PACKET_HEADER_BYTES * 8u)
// Sample blocks in a decoded XMA frame
#define XMA_SAMPLES_PER_FRAME 512u
// Sample blocks in a decoded XMA subframe
#define XMA_SAMPLES_PER_SUBFRAME 128u
// Maximum encoded data that can be submitted to the XMA decoder at a time
#define XMA_READBUFFER_MAX_PACKETS 4095u
#define XMA_READBUFFER_MAX_BYTES (XMA_READBUFFER_MAX_PACKETS * XMA_BYTES_PER_PACKET)
// Maximum size allowed for the XMA decoder's output buffers
#define XMA_WRITEBUFFER_MAX_BYTES (31u * 256u)
// Required byte alignment of the XMA decoder's output buffers
#define XMA_WRITEBUFFER_BYTE_ALIGNMENT 256u
// Decode chunk sizes for the XMA_PLAYBACK_INIT.subframesToDecode field
#define XMA_MIN_SUBFRAMES_TO_DECODE 1u
#define XMA_MAX_SUBFRAMES_TO_DECODE 8u
#define XMA_OPTIMAL_SUBFRAMES_TO_DECODE 4u
// LoopCount<255 means finite repetitions; LoopCount=255 means infinite looping
#define XMA_MAX_LOOPCOUNT 254u
#define XMA_INFINITE_LOOP 255u
/***************************************************************************
* XMA format structures
***************************************************************************/
// The currently recommended way to express format information for XMA2 files
// is the XMA2WAVEFORMATEX structure. This structure is fully compliant with
// the WAVEFORMATEX standard and contains all the information needed to parse
// and manage XMA2 files in a compact way.
#define WAVE_FORMAT_XMA2 0x166
typedef struct XMA2WAVEFORMATEX
{
WAVEFORMATEX wfx;
// Meaning of the WAVEFORMATEX fields here:
// wFormatTag; // Audio format type; always WAVE_FORMAT_XMA2
// nChannels; // Channel count of the decoded audio
// nSamplesPerSec; // Sample rate of the decoded audio
// nAvgBytesPerSec; // Used internally by the XMA encoder
// nBlockAlign; // Decoded sample size; channels * wBitsPerSample / 8
// wBitsPerSample; // Bits per decoded mono sample; always 16 for XMA
// cbSize; // Size in bytes of the rest of this structure (34)
WORD NumStreams; // Number of audio streams (1 or 2 channels each)
DWORD ChannelMask; // Spatial positions of the channels in this file,
// stored as SPEAKER_xxx values (see audiodefs.h)
DWORD SamplesEncoded; // Total number of PCM samples the file decodes to
DWORD BytesPerBlock; // XMA block size (but the last one may be shorter)
DWORD PlayBegin; // First valid sample in the decoded audio
DWORD PlayLength; // Length of the valid part of the decoded audio
DWORD LoopBegin; // Beginning of the loop region in decoded sample terms
DWORD LoopLength; // Length of the loop region in decoded sample terms
BYTE LoopCount; // Number of loop repetitions; 255 = infinite
BYTE EncoderVersion; // Version of XMA encoder that generated the file
WORD BlockCount; // XMA blocks in file (and entries in its seek table)
} XMA2WAVEFORMATEX, *PXMA2WAVEFORMATEX;
// The legacy XMA format structures are described here for reference, but they
// should not be used in new content. XMAWAVEFORMAT was the structure used in
// XMA version 1 files. XMA2WAVEFORMAT was used in early XMA2 files; it is not
// placed in the usual 'fmt' RIFF chunk but in its own 'XMA2' chunk.
#ifndef WAVE_FORMAT_XMA
#define WAVE_FORMAT_XMA 0x0165
// Values used in the ChannelMask fields below. Similar to the SPEAKER_xxx
// values defined in audiodefs.h, but modified to fit in a single byte.
#ifndef XMA_SPEAKER_LEFT
#define XMA_SPEAKER_LEFT 0x01
#define XMA_SPEAKER_RIGHT 0x02
#define XMA_SPEAKER_CENTER 0x04
#define XMA_SPEAKER_LFE 0x08
#define XMA_SPEAKER_LEFT_SURROUND 0x10
#define XMA_SPEAKER_RIGHT_SURROUND 0x20
#define XMA_SPEAKER_LEFT_BACK 0x40
#define XMA_SPEAKER_RIGHT_BACK 0x80
#endif
// Used in XMAWAVEFORMAT for per-stream data
typedef struct XMASTREAMFORMAT
{
DWORD PsuedoBytesPerSec; // Used by the XMA encoder (typo preserved for legacy reasons)
DWORD SampleRate; // The stream's decoded sample rate (in XMA2 files,
// this is the same for all streams in the file).
DWORD LoopStart; // Bit offset of the frame containing the loop start
// point, relative to the beginning of the stream.
DWORD LoopEnd; // Bit offset of the frame containing the loop end.
BYTE SubframeData; // Two 4-bit numbers specifying the exact location of
// the loop points within the
gitextract__32_xijf/ ├── .clang-format ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── config.yml │ │ ├── emulation_bug_report.yaml │ │ └── feature_report.yaml │ └── workflows/ │ ├── build.yml │ ├── build_check.yml │ ├── deploy_release.yml │ ├── determine_release_version.yml │ └── generate_pot.yml ├── .gitignore ├── .gitmodules ├── BUILD.md ├── CMakeLists.txt ├── CMakeSettings.json ├── CODING_STYLE.md ├── LICENSE.txt ├── README.md ├── bin/ │ └── resources/ │ ├── ar/ │ │ └── cemu.mo │ ├── ca/ │ │ └── cemu.mo │ ├── de/ │ │ └── cemu.mo │ ├── es/ │ │ └── cemu.mo │ ├── fr/ │ │ └── cemu.mo │ ├── he/ │ │ └── cemu.mo │ ├── hu/ │ │ └── cemu.mo │ ├── it/ │ │ └── cemu.mo │ ├── ja/ │ │ └── cemu.mo │ ├── ko/ │ │ └── cemu.mo │ ├── nb/ │ │ └── cemu.mo │ ├── nl/ │ │ └── cemu.mo │ ├── pl/ │ │ └── cemu.mo │ ├── pt/ │ │ └── cemu.mo │ ├── ru/ │ │ └── cemu.mo │ ├── sv/ │ │ └── cemu.mo │ ├── tr/ │ │ └── cemu.mo │ ├── uk/ │ │ └── cemu.mo │ └── zh/ │ └── cemu.mo ├── boost.natvis ├── cmake/ │ ├── ECMFindModuleHelpers.cmake │ ├── ECMFindModuleHelpersStub.cmake │ ├── FindGTK3.cmake │ ├── FindWayland.cmake │ ├── FindWaylandProtocols.cmake │ ├── FindWaylandScanner.cmake │ ├── FindZArchive.cmake │ ├── Findbluez.cmake │ ├── Findimgui.cmake │ ├── Findlibusb.cmake │ ├── FindwxWidgets.cmake │ └── Findzstd.cmake ├── dependencies/ │ ├── DirectX_2010/ │ │ ├── XAudio2.h │ │ ├── audiodefs.h │ │ ├── comdecl.h │ │ └── xma2defs.h │ ├── gamemode/ │ │ ├── CMakeLists.txt │ │ └── lib/ │ │ ├── client_loader.c │ │ └── gamemode_client.h │ ├── ih264d/ │ │ ├── CHANGES │ │ ├── CMakeLists.txt │ │ ├── CMakeSettings.json │ │ ├── NOTICE │ │ ├── common/ │ │ │ ├── arm/ │ │ │ │ ├── ih264_arm_memory_barrier.s │ │ │ │ ├── ih264_deblk_chroma_a9.s │ │ │ │ ├── ih264_deblk_luma_a9.s │ │ │ │ ├── ih264_default_weighted_pred_a9q.s │ │ │ │ ├── ih264_ihadamard_scaling_a9.s │ │ │ │ ├── ih264_inter_pred_chroma_a9q.s │ │ │ │ ├── ih264_inter_pred_filters_luma_horz_a9q.s │ │ │ │ ├── ih264_inter_pred_filters_luma_vert_a9q.s │ │ │ │ ├── ih264_inter_pred_luma_bilinear_a9q.s │ │ │ │ ├── ih264_inter_pred_luma_copy_a9q.s │ │ │ │ ├── ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q.s │ │ │ │ ├── ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q.s │ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_a9q.s │ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q.s │ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q.s │ │ │ │ ├── ih264_inter_pred_luma_vert_qpel_a9q.s │ │ │ │ ├── ih264_intra_pred_chroma_a9q.s │ │ │ │ ├── ih264_intra_pred_luma_16x16_a9q.s │ │ │ │ ├── ih264_intra_pred_luma_4x4_a9q.s │ │ │ │ ├── ih264_intra_pred_luma_8x8_a9q.s │ │ │ │ ├── ih264_iquant_itrans_recon_a9.s │ │ │ │ ├── ih264_iquant_itrans_recon_dc_a9.s │ │ │ │ ├── ih264_mem_fns_neon.s │ │ │ │ ├── ih264_padding_neon.s │ │ │ │ ├── ih264_platform_macros.h │ │ │ │ ├── ih264_resi_trans_quant_a9.s │ │ │ │ ├── ih264_weighted_bi_pred_a9q.s │ │ │ │ └── ih264_weighted_pred_a9q.s │ │ │ ├── armv8/ │ │ │ │ ├── ih264_deblk_chroma_av8.s │ │ │ │ ├── ih264_deblk_luma_av8.s │ │ │ │ ├── ih264_default_weighted_pred_av8.s │ │ │ │ ├── ih264_ihadamard_scaling_av8.s │ │ │ │ ├── ih264_inter_pred_chroma_av8.s │ │ │ │ ├── ih264_inter_pred_filters_luma_horz_av8.s │ │ │ │ ├── ih264_inter_pred_filters_luma_vert_av8.s │ │ │ │ ├── ih264_inter_pred_luma_copy_av8.s │ │ │ │ ├── ih264_inter_pred_luma_horz_hpel_vert_hpel_av8.s │ │ │ │ ├── ih264_inter_pred_luma_horz_hpel_vert_qpel_av8.s │ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_av8.s │ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_vert_hpel_av8.s │ │ │ │ ├── ih264_inter_pred_luma_horz_qpel_vert_qpel_av8.s │ │ │ │ ├── ih264_inter_pred_luma_vert_qpel_av8.s │ │ │ │ ├── ih264_intra_pred_chroma_av8.s │ │ │ │ ├── ih264_intra_pred_luma_16x16_av8.s │ │ │ │ ├── ih264_intra_pred_luma_4x4_av8.s │ │ │ │ ├── ih264_intra_pred_luma_8x8_av8.s │ │ │ │ ├── ih264_iquant_itrans_recon_av8.s │ │ │ │ ├── ih264_iquant_itrans_recon_dc_av8.s │ │ │ │ ├── ih264_mem_fns_neon_av8.s │ │ │ │ ├── ih264_neon_macros.s │ │ │ │ ├── ih264_padding_neon_av8.s │ │ │ │ ├── ih264_platform_macros.h │ │ │ │ ├── ih264_resi_trans_quant_av8.s │ │ │ │ ├── ih264_weighted_bi_pred_av8.s │ │ │ │ ├── ih264_weighted_pred_av8.s │ │ │ │ └── macos_arm_symbol_aliases.s │ │ │ ├── ih264_buf_mgr.c │ │ │ ├── ih264_buf_mgr.h │ │ │ ├── ih264_cabac_tables.c │ │ │ ├── ih264_cabac_tables.h │ │ │ ├── ih264_cavlc_tables.c │ │ │ ├── ih264_cavlc_tables.h │ │ │ ├── ih264_chroma_intra_pred_filters.c │ │ │ ├── ih264_common_tables.c │ │ │ ├── ih264_common_tables.h │ │ │ ├── ih264_deblk_edge_filters.c │ │ │ ├── ih264_deblk_edge_filters.h │ │ │ ├── ih264_deblk_tables.c │ │ │ ├── ih264_deblk_tables.h │ │ │ ├── ih264_debug.h │ │ │ ├── ih264_defs.h │ │ │ ├── ih264_disp_mgr.c │ │ │ ├── ih264_disp_mgr.h │ │ │ ├── ih264_dpb_mgr.c │ │ │ ├── ih264_dpb_mgr.h │ │ │ ├── ih264_error.h │ │ │ ├── ih264_ihadamard_scaling.c │ │ │ ├── ih264_inter_pred_filters.c │ │ │ ├── ih264_inter_pred_filters.h │ │ │ ├── ih264_intra_pred_filters.h │ │ │ ├── ih264_iquant_itrans_recon.c │ │ │ ├── ih264_list.c │ │ │ ├── ih264_list.h │ │ │ ├── ih264_luma_intra_pred_filters.c │ │ │ ├── ih264_macros.h │ │ │ ├── ih264_mem_fns.c │ │ │ ├── ih264_mem_fns.h │ │ │ ├── ih264_padding.c │ │ │ ├── ih264_padding.h │ │ │ ├── ih264_resi_trans.h │ │ │ ├── ih264_resi_trans_quant.c │ │ │ ├── ih264_size_defs.h │ │ │ ├── ih264_structs.h │ │ │ ├── ih264_trans_data.c │ │ │ ├── ih264_trans_data.h │ │ │ ├── ih264_trans_macros.h │ │ │ ├── ih264_trans_quant_itrans_iquant.h │ │ │ ├── ih264_typedefs.h │ │ │ ├── ih264_weighted_pred.c │ │ │ ├── ih264_weighted_pred.h │ │ │ ├── ithread.c │ │ │ ├── ithread.h │ │ │ ├── mips/ │ │ │ │ └── ih264_platform_macros.h │ │ │ └── x86/ │ │ │ ├── ih264_chroma_intra_pred_filters_ssse3.c │ │ │ ├── ih264_deblk_chroma_ssse3.c │ │ │ ├── ih264_deblk_luma_ssse3.c │ │ │ ├── ih264_ihadamard_scaling_sse42.c │ │ │ ├── ih264_ihadamard_scaling_ssse3.c │ │ │ ├── ih264_inter_pred_filters_ssse3.c │ │ │ ├── ih264_iquant_itrans_recon_dc_ssse3.c │ │ │ ├── ih264_iquant_itrans_recon_sse42.c │ │ │ ├── ih264_iquant_itrans_recon_ssse3.c │ │ │ ├── ih264_luma_intra_pred_filters_ssse3.c │ │ │ ├── ih264_mem_fns_ssse3.c │ │ │ ├── ih264_padding_ssse3.c │ │ │ ├── ih264_platform_macros.h │ │ │ ├── ih264_resi_trans_quant_sse42.c │ │ │ └── ih264_weighted_pred_sse42.c │ │ └── decoder/ │ │ ├── arm/ │ │ │ ├── ih264d_function_selector.c │ │ │ ├── ih264d_function_selector_a9q.c │ │ │ └── ih264d_function_selector_av8.c │ │ ├── ih264d.h │ │ ├── ih264d_api.c │ │ ├── ih264d_bitstrm.c │ │ ├── ih264d_bitstrm.h │ │ ├── ih264d_cabac.c │ │ ├── ih264d_cabac.h │ │ ├── ih264d_cabac_init_tables.c │ │ ├── ih264d_compute_bs.c │ │ ├── ih264d_deblocking.c │ │ ├── ih264d_deblocking.h │ │ ├── ih264d_debug.h │ │ ├── ih264d_defs.h │ │ ├── ih264d_dpb_manager.h │ │ ├── ih264d_dpb_mgr.c │ │ ├── ih264d_error_handler.h │ │ ├── ih264d_format_conv.c │ │ ├── ih264d_format_conv.h │ │ ├── ih264d_function_selector.h │ │ ├── ih264d_function_selector_generic.c │ │ ├── ih264d_inter_pred.c │ │ ├── ih264d_inter_pred.h │ │ ├── ih264d_mb_utils.c │ │ ├── ih264d_mb_utils.h │ │ ├── ih264d_mem_request.h │ │ ├── ih264d_mvpred.c │ │ ├── ih264d_mvpred.h │ │ ├── ih264d_nal.c │ │ ├── ih264d_nal.h │ │ ├── ih264d_parse_bslice.c │ │ ├── ih264d_parse_cabac.c │ │ ├── ih264d_parse_cabac.h │ │ ├── ih264d_parse_cavlc.c │ │ ├── ih264d_parse_cavlc.h │ │ ├── ih264d_parse_headers.c │ │ ├── ih264d_parse_headers.h │ │ ├── ih264d_parse_islice.c │ │ ├── ih264d_parse_islice.h │ │ ├── ih264d_parse_mb_header.c │ │ ├── ih264d_parse_mb_header.h │ │ ├── ih264d_parse_pslice.c │ │ ├── ih264d_parse_slice.c │ │ ├── ih264d_parse_slice.h │ │ ├── ih264d_process_bslice.c │ │ ├── ih264d_process_bslice.h │ │ ├── ih264d_process_intra_mb.c │ │ ├── ih264d_process_intra_mb.h │ │ ├── ih264d_process_pslice.c │ │ ├── ih264d_process_pslice.h │ │ ├── ih264d_quant_scaling.c │ │ ├── ih264d_quant_scaling.h │ │ ├── ih264d_sei.c │ │ ├── ih264d_sei.h │ │ ├── ih264d_structs.h │ │ ├── ih264d_tables.c │ │ ├── ih264d_tables.h │ │ ├── ih264d_thread_compute_bs.c │ │ ├── ih264d_thread_compute_bs.h │ │ ├── ih264d_thread_parse_decode.c │ │ ├── ih264d_thread_parse_decode.h │ │ ├── ih264d_transfer_address.h │ │ ├── ih264d_utils.c │ │ ├── ih264d_utils.h │ │ ├── ih264d_vui.c │ │ ├── ih264d_vui.h │ │ ├── iv.h │ │ ├── ivd.h │ │ ├── mips/ │ │ │ └── ih264d_function_selector.c │ │ └── x86/ │ │ ├── ih264d_function_selector.c │ │ ├── ih264d_function_selector_sse42.c │ │ └── ih264d_function_selector_ssse3.c │ ├── vcpkg_overlay_ports/ │ │ ├── .gitkeep │ │ └── wxwidgets/ │ │ ├── example/ │ │ │ └── CMakeLists.txt │ │ ├── fix-libs-export.patch │ │ ├── fix-listctrl-layout.patch │ │ ├── fix-pcre2.patch │ │ ├── gtk3-link-libraries.patch │ │ ├── install-layout.patch │ │ ├── nanosvg-ext-depend.patch │ │ ├── portfile.cmake │ │ ├── relocatable-wx-config.patch │ │ ├── sdl2.patch │ │ ├── setup.h.in │ │ ├── usage │ │ ├── vcpkg-cmake-wrapper.cmake │ │ └── vcpkg.json │ ├── vcpkg_overlay_ports_linux/ │ │ ├── .gitkeep │ │ ├── cairo/ │ │ │ ├── portfile.cmake │ │ │ └── vcpkg.json │ │ ├── glm/ │ │ │ ├── portfile.cmake │ │ │ └── vcpkg.json │ │ ├── gtk3/ │ │ │ ├── portfile.cmake │ │ │ └── vcpkg.json │ │ └── libpng/ │ │ ├── portfile.cmake │ │ └── vcpkg.json │ ├── vcpkg_overlay_ports_mac/ │ │ ├── .gitkeep │ │ └── libusb/ │ │ ├── portfile.cmake │ │ ├── usage │ │ └── vcpkg.json │ └── vcpkg_overlay_ports_win/ │ └── .gitkeep ├── dist/ │ ├── linux/ │ │ ├── appimage.sh │ │ ├── info.cemu.Cemu.desktop │ │ └── info.cemu.Cemu.metainfo.xml │ ├── network_services.xml │ └── windows/ │ └── Cemu.manifest ├── src/ │ ├── CMakeLists.txt │ ├── Cafe/ │ │ ├── Account/ │ │ │ ├── Account.cpp │ │ │ ├── Account.h │ │ │ └── AccountError.h │ │ ├── CMakeLists.txt │ │ ├── CafeSystem.cpp │ │ ├── CafeSystem.h │ │ ├── Filesystem/ │ │ │ ├── FST/ │ │ │ │ ├── FST.cpp │ │ │ │ ├── FST.h │ │ │ │ ├── KeyCache.cpp │ │ │ │ ├── KeyCache.h │ │ │ │ └── fstUtil.h │ │ │ ├── WUD/ │ │ │ │ ├── wud.cpp │ │ │ │ └── wud.h │ │ │ ├── WUHB/ │ │ │ │ ├── RomFSStructs.h │ │ │ │ ├── WUHBReader.cpp │ │ │ │ └── WUHBReader.h │ │ │ ├── fsc.cpp │ │ │ ├── fsc.h │ │ │ ├── fscDeviceHostFS.cpp │ │ │ ├── fscDeviceHostFS.h │ │ │ ├── fscDeviceRedirect.cpp │ │ │ ├── fscDeviceWua.cpp │ │ │ ├── fscDeviceWud.cpp │ │ │ └── fscDeviceWuhb.cpp │ │ ├── GamePatch.cpp │ │ ├── GamePatch.h │ │ ├── GameProfile/ │ │ │ ├── GameProfile.cpp │ │ │ └── GameProfile.h │ │ ├── GraphicPack/ │ │ │ ├── GraphicPack2.cpp │ │ │ ├── GraphicPack2.h │ │ │ ├── GraphicPack2Patches.cpp │ │ │ ├── GraphicPack2Patches.h │ │ │ ├── GraphicPack2PatchesApply.cpp │ │ │ ├── GraphicPack2PatchesParser.cpp │ │ │ └── GraphicPackError.h │ │ ├── HW/ │ │ │ ├── ACR/ │ │ │ │ └── ACR.cpp │ │ │ ├── AI/ │ │ │ │ ├── AI.cpp │ │ │ │ └── AI.h │ │ │ ├── Common/ │ │ │ │ └── HwReg.h │ │ │ ├── Espresso/ │ │ │ │ ├── Const.h │ │ │ │ ├── Debugger/ │ │ │ │ │ ├── DebugSymbolStorage.cpp │ │ │ │ │ ├── DebugSymbolStorage.h │ │ │ │ │ ├── Debugger.cpp │ │ │ │ │ ├── Debugger.h │ │ │ │ │ ├── GDBBreakpoints.cpp │ │ │ │ │ ├── GDBBreakpoints.h │ │ │ │ │ ├── GDBStub.cpp │ │ │ │ │ └── GDBStub.h │ │ │ │ ├── EspressoISA.h │ │ │ │ ├── Interpreter/ │ │ │ │ │ ├── PPCInterpreterALU.hpp │ │ │ │ │ ├── PPCInterpreterFPU.cpp │ │ │ │ │ ├── PPCInterpreterHLE.cpp │ │ │ │ │ ├── PPCInterpreterHelper.h │ │ │ │ │ ├── PPCInterpreterImpl.cpp │ │ │ │ │ ├── PPCInterpreterInternal.h │ │ │ │ │ ├── PPCInterpreterLoadStore.hpp │ │ │ │ │ ├── PPCInterpreterMain.cpp │ │ │ │ │ ├── PPCInterpreterOPC.cpp │ │ │ │ │ ├── PPCInterpreterOPC.hpp │ │ │ │ │ ├── PPCInterpreterPS.cpp │ │ │ │ │ └── PPCInterpreterSPR.hpp │ │ │ │ ├── PPCCallback.h │ │ │ │ ├── PPCScheduler.cpp │ │ │ │ ├── PPCSchedulerLLE.cpp │ │ │ │ ├── PPCState.h │ │ │ │ ├── PPCTimer.cpp │ │ │ │ └── Recompiler/ │ │ │ │ ├── BackendAArch64/ │ │ │ │ │ ├── BackendAArch64.cpp │ │ │ │ │ └── BackendAArch64.h │ │ │ │ ├── BackendX64/ │ │ │ │ │ ├── BackendX64.cpp │ │ │ │ │ ├── BackendX64.h │ │ │ │ │ ├── BackendX64AVX.cpp │ │ │ │ │ ├── BackendX64BMI.cpp │ │ │ │ │ ├── BackendX64FPU.cpp │ │ │ │ │ ├── BackendX64Gen.cpp │ │ │ │ │ ├── BackendX64GenFPU.cpp │ │ │ │ │ ├── X64Emit.hpp │ │ │ │ │ └── x86Emitter.h │ │ │ │ ├── IML/ │ │ │ │ │ ├── IML.h │ │ │ │ │ ├── IMLAnalyzer.cpp │ │ │ │ │ ├── IMLDebug.cpp │ │ │ │ │ ├── IMLInstruction.cpp │ │ │ │ │ ├── IMLInstruction.h │ │ │ │ │ ├── IMLOptimizer.cpp │ │ │ │ │ ├── IMLRegisterAllocator.cpp │ │ │ │ │ ├── IMLRegisterAllocator.h │ │ │ │ │ ├── IMLRegisterAllocatorRanges.cpp │ │ │ │ │ ├── IMLRegisterAllocatorRanges.h │ │ │ │ │ ├── IMLSegment.cpp │ │ │ │ │ └── IMLSegment.h │ │ │ │ ├── PPCFunctionBoundaryTracker.h │ │ │ │ ├── PPCRecompiler.cpp │ │ │ │ ├── PPCRecompiler.h │ │ │ │ ├── PPCRecompilerIml.h │ │ │ │ ├── PPCRecompilerImlGen.cpp │ │ │ │ ├── PPCRecompilerImlGenFPU.cpp │ │ │ │ └── PPCRecompilerIntermediate.cpp │ │ │ ├── Latte/ │ │ │ │ ├── Common/ │ │ │ │ │ ├── RegisterSerializer.cpp │ │ │ │ │ ├── RegisterSerializer.h │ │ │ │ │ ├── ShaderSerializer.cpp │ │ │ │ │ └── ShaderSerializer.h │ │ │ │ ├── Core/ │ │ │ │ │ ├── FetchShader.cpp │ │ │ │ │ ├── FetchShader.h │ │ │ │ │ ├── Latte.h │ │ │ │ │ ├── LatteAsyncCommands.cpp │ │ │ │ │ ├── LatteAsyncCommands.h │ │ │ │ │ ├── LatteBufferCache.cpp │ │ │ │ │ ├── LatteBufferCache.h │ │ │ │ │ ├── LatteBufferData.cpp │ │ │ │ │ ├── LatteCachedFBO.h │ │ │ │ │ ├── LatteCommandProcessor.cpp │ │ │ │ │ ├── LatteConst.h │ │ │ │ │ ├── LatteDefaultShaders.cpp │ │ │ │ │ ├── LatteDefaultShaders.h │ │ │ │ │ ├── LatteDraw.h │ │ │ │ │ ├── LatteGSCopyShaderParser.cpp │ │ │ │ │ ├── LatteIndices.cpp │ │ │ │ │ ├── LatteIndices.h │ │ │ │ │ ├── LatteOverlay.cpp │ │ │ │ │ ├── LatteOverlay.h │ │ │ │ │ ├── LattePM4.h │ │ │ │ │ ├── LattePerformanceMonitor.cpp │ │ │ │ │ ├── LattePerformanceMonitor.h │ │ │ │ │ ├── LatteQuery.cpp │ │ │ │ │ ├── LatteQueryObject.h │ │ │ │ │ ├── LatteRenderTarget.cpp │ │ │ │ │ ├── LatteRingBuffer.cpp │ │ │ │ │ ├── LatteRingBuffer.h │ │ │ │ │ ├── LatteShader.cpp │ │ │ │ │ ├── LatteShader.h │ │ │ │ │ ├── LatteShaderAssembly.h │ │ │ │ │ ├── LatteShaderCache.cpp │ │ │ │ │ ├── LatteShaderCache.h │ │ │ │ │ ├── LatteShaderGL.cpp │ │ │ │ │ ├── LatteSoftware.cpp │ │ │ │ │ ├── LatteSoftware.h │ │ │ │ │ ├── LatteStreamoutGPU.cpp │ │ │ │ │ ├── LatteSurfaceCopy.cpp │ │ │ │ │ ├── LatteTexture.cpp │ │ │ │ │ ├── LatteTexture.h │ │ │ │ │ ├── LatteTextureCache.cpp │ │ │ │ │ ├── LatteTextureLegacy.cpp │ │ │ │ │ ├── LatteTextureLoader.cpp │ │ │ │ │ ├── LatteTextureLoader.h │ │ │ │ │ ├── LatteTextureReadback.cpp │ │ │ │ │ ├── LatteTextureReadbackInfo.h │ │ │ │ │ ├── LatteTextureView.cpp │ │ │ │ │ ├── LatteTextureView.h │ │ │ │ │ ├── LatteThread.cpp │ │ │ │ │ ├── LatteTiming.cpp │ │ │ │ │ └── LatteTiming.h │ │ │ │ ├── ISA/ │ │ │ │ │ ├── LatteInstructions.h │ │ │ │ │ ├── LatteReg.h │ │ │ │ │ └── RegDefines.h │ │ │ │ ├── LatteAddrLib/ │ │ │ │ │ ├── AddrLibFastDecode.h │ │ │ │ │ ├── LatteAddrLib.cpp │ │ │ │ │ ├── LatteAddrLib.h │ │ │ │ │ └── LatteAddrLib_Coord.cpp │ │ │ │ ├── LegacyShaderDecompiler/ │ │ │ │ │ ├── LatteDecompiler.cpp │ │ │ │ │ ├── LatteDecompiler.h │ │ │ │ │ ├── LatteDecompilerAnalyzer.cpp │ │ │ │ │ ├── LatteDecompilerEmitGLSL.cpp │ │ │ │ │ ├── LatteDecompilerEmitGLSLAttrDecoder.cpp │ │ │ │ │ ├── LatteDecompilerEmitGLSLHeader.hpp │ │ │ │ │ ├── LatteDecompilerEmitMSL.cpp │ │ │ │ │ ├── LatteDecompilerEmitMSLAttrDecoder.cpp │ │ │ │ │ ├── LatteDecompilerEmitMSLHeader.hpp │ │ │ │ │ ├── LatteDecompilerInstructions.h │ │ │ │ │ ├── LatteDecompilerInternal.h │ │ │ │ │ └── LatteDecompilerRegisterDataTypeTracker.cpp │ │ │ │ ├── Renderer/ │ │ │ │ │ ├── Metal/ │ │ │ │ │ │ ├── CachedFBOMtl.cpp │ │ │ │ │ │ ├── CachedFBOMtl.h │ │ │ │ │ │ ├── LatteTextureMtl.cpp │ │ │ │ │ │ ├── LatteTextureMtl.h │ │ │ │ │ │ ├── LatteTextureReadbackMtl.cpp │ │ │ │ │ │ ├── LatteTextureReadbackMtl.h │ │ │ │ │ │ ├── LatteTextureViewMtl.cpp │ │ │ │ │ │ ├── LatteTextureViewMtl.h │ │ │ │ │ │ ├── LatteToMtl.cpp │ │ │ │ │ │ ├── LatteToMtl.h │ │ │ │ │ │ ├── MetalAttachmentsInfo.cpp │ │ │ │ │ │ ├── MetalAttachmentsInfo.h │ │ │ │ │ │ ├── MetalBufferAllocator.cpp │ │ │ │ │ │ ├── MetalBufferAllocator.h │ │ │ │ │ │ ├── MetalCommon.h │ │ │ │ │ │ ├── MetalCppImpl.cpp │ │ │ │ │ │ ├── MetalDepthStencilCache.cpp │ │ │ │ │ │ ├── MetalDepthStencilCache.h │ │ │ │ │ │ ├── MetalLayer.h │ │ │ │ │ │ ├── MetalLayer.mm │ │ │ │ │ │ ├── MetalLayerHandle.cpp │ │ │ │ │ │ ├── MetalLayerHandle.h │ │ │ │ │ │ ├── MetalMemoryManager.cpp │ │ │ │ │ │ ├── MetalMemoryManager.h │ │ │ │ │ │ ├── MetalOutputShaderCache.cpp │ │ │ │ │ │ ├── MetalOutputShaderCache.h │ │ │ │ │ │ ├── MetalPerformanceMonitor.h │ │ │ │ │ │ ├── MetalPipelineCache.cpp │ │ │ │ │ │ ├── MetalPipelineCache.h │ │ │ │ │ │ ├── MetalPipelineCompiler.cpp │ │ │ │ │ │ ├── MetalPipelineCompiler.h │ │ │ │ │ │ ├── MetalQuery.cpp │ │ │ │ │ │ ├── MetalQuery.h │ │ │ │ │ │ ├── MetalRenderer.cpp │ │ │ │ │ │ ├── MetalRenderer.h │ │ │ │ │ │ ├── MetalSamplerCache.cpp │ │ │ │ │ │ ├── MetalSamplerCache.h │ │ │ │ │ │ ├── MetalVoidVertexPipeline.cpp │ │ │ │ │ │ ├── MetalVoidVertexPipeline.h │ │ │ │ │ │ ├── RendererShaderMtl.cpp │ │ │ │ │ │ ├── RendererShaderMtl.h │ │ │ │ │ │ └── UtilityShaderSource.h │ │ │ │ │ ├── MetalView.h │ │ │ │ │ ├── MetalView.mm │ │ │ │ │ ├── OpenGL/ │ │ │ │ │ │ ├── CachedFBOGL.h │ │ │ │ │ │ ├── LatteTextureGL.cpp │ │ │ │ │ │ ├── LatteTextureGL.h │ │ │ │ │ │ ├── LatteTextureViewGL.cpp │ │ │ │ │ │ ├── LatteTextureViewGL.h │ │ │ │ │ │ ├── OpenGLQuery.cpp │ │ │ │ │ │ ├── OpenGLRenderer.cpp │ │ │ │ │ │ ├── OpenGLRenderer.h │ │ │ │ │ │ ├── OpenGLRendererCore.cpp │ │ │ │ │ │ ├── OpenGLRendererStreamout.cpp │ │ │ │ │ │ ├── OpenGLRendererUniformData.cpp │ │ │ │ │ │ ├── OpenGLSurfaceCopy.cpp │ │ │ │ │ │ ├── OpenGLTextureReadback.h │ │ │ │ │ │ ├── RendererShaderGL.cpp │ │ │ │ │ │ ├── RendererShaderGL.h │ │ │ │ │ │ └── TextureReadbackGL.cpp │ │ │ │ │ ├── Renderer.cpp │ │ │ │ │ ├── Renderer.h │ │ │ │ │ ├── RendererOuputShader.cpp │ │ │ │ │ ├── RendererOuputShader.h │ │ │ │ │ ├── RendererShader.cpp │ │ │ │ │ ├── RendererShader.h │ │ │ │ │ └── Vulkan/ │ │ │ │ │ ├── CachedFBOVk.cpp │ │ │ │ │ ├── CachedFBOVk.h │ │ │ │ │ ├── CocoaSurface.h │ │ │ │ │ ├── CocoaSurface.mm │ │ │ │ │ ├── LatteTextureViewVk.cpp │ │ │ │ │ ├── LatteTextureViewVk.h │ │ │ │ │ ├── LatteTextureVk.cpp │ │ │ │ │ ├── LatteTextureVk.h │ │ │ │ │ ├── RendererShaderVk.cpp │ │ │ │ │ ├── RendererShaderVk.h │ │ │ │ │ ├── SwapchainInfoVk.cpp │ │ │ │ │ ├── SwapchainInfoVk.h │ │ │ │ │ ├── TextureReadbackVk.cpp │ │ │ │ │ ├── VKRBase.h │ │ │ │ │ ├── VKRMemoryManager.cpp │ │ │ │ │ ├── VKRMemoryManager.h │ │ │ │ │ ├── VKRPipelineInfo.cpp │ │ │ │ │ ├── VsyncDriver.cpp │ │ │ │ │ ├── VsyncDriver.h │ │ │ │ │ ├── VulkanAPI.cpp │ │ │ │ │ ├── VulkanAPI.h │ │ │ │ │ ├── VulkanPipelineCompiler.cpp │ │ │ │ │ ├── VulkanPipelineCompiler.h │ │ │ │ │ ├── VulkanPipelineStableCache.cpp │ │ │ │ │ ├── VulkanPipelineStableCache.h │ │ │ │ │ ├── VulkanQuery.cpp │ │ │ │ │ ├── VulkanRenderer.cpp │ │ │ │ │ ├── VulkanRenderer.h │ │ │ │ │ ├── VulkanRendererCore.cpp │ │ │ │ │ ├── VulkanSurfaceCopy.cpp │ │ │ │ │ └── VulkanTextureReadback.h │ │ │ │ ├── ShaderInfo/ │ │ │ │ │ ├── ShaderDescription.cpp │ │ │ │ │ ├── ShaderInfo.h │ │ │ │ │ └── ShaderInstanceInfo.cpp │ │ │ │ └── Transcompiler/ │ │ │ │ ├── LatteTC.cpp │ │ │ │ ├── LatteTC.h │ │ │ │ └── LatteTCGenIR.cpp │ │ │ ├── MMU/ │ │ │ │ ├── MMU.cpp │ │ │ │ └── MMU.h │ │ │ ├── SI/ │ │ │ │ ├── SI.cpp │ │ │ │ └── si.h │ │ │ └── VI/ │ │ │ └── VI.cpp │ │ ├── IOSU/ │ │ │ ├── ODM/ │ │ │ │ ├── iosu_odm.cpp │ │ │ │ └── iosu_odm.h │ │ │ ├── PDM/ │ │ │ │ ├── iosu_pdm.cpp │ │ │ │ └── iosu_pdm.h │ │ │ ├── ccr_nfc/ │ │ │ │ ├── iosu_ccr_nfc.cpp │ │ │ │ └── iosu_ccr_nfc.h │ │ │ ├── fsa/ │ │ │ │ ├── fsa_types.h │ │ │ │ ├── iosu_fsa.cpp │ │ │ │ └── iosu_fsa.h │ │ │ ├── iosu_ipc_common.h │ │ │ ├── iosu_types_common.h │ │ │ ├── kernel/ │ │ │ │ ├── iosu_kernel.cpp │ │ │ │ └── iosu_kernel.h │ │ │ ├── legacy/ │ │ │ │ ├── iosu_acp.cpp │ │ │ │ ├── iosu_acp.h │ │ │ │ ├── iosu_act.cpp │ │ │ │ ├── iosu_act.h │ │ │ │ ├── iosu_crypto.cpp │ │ │ │ ├── iosu_crypto.h │ │ │ │ ├── iosu_fpd.cpp │ │ │ │ ├── iosu_fpd.h │ │ │ │ ├── iosu_ioctl.cpp │ │ │ │ ├── iosu_ioctl.h │ │ │ │ ├── iosu_mcp.cpp │ │ │ │ ├── iosu_mcp.h │ │ │ │ ├── iosu_nim.cpp │ │ │ │ └── iosu_nim.h │ │ │ └── nn/ │ │ │ ├── boss/ │ │ │ │ ├── boss_common.cpp │ │ │ │ ├── boss_common.h │ │ │ │ ├── boss_service.cpp │ │ │ │ └── boss_service.h │ │ │ ├── iosu_nn_service.cpp │ │ │ └── iosu_nn_service.h │ │ ├── OS/ │ │ │ ├── RPL/ │ │ │ │ ├── COSModule.cpp │ │ │ │ ├── COSModule.h │ │ │ │ ├── elf.cpp │ │ │ │ ├── rpl.cpp │ │ │ │ ├── rpl.h │ │ │ │ ├── rpl_debug_symbols.cpp │ │ │ │ ├── rpl_debug_symbols.h │ │ │ │ ├── rpl_structs.h │ │ │ │ ├── rpl_symbol_storage.cpp │ │ │ │ └── rpl_symbol_storage.h │ │ │ ├── common/ │ │ │ │ ├── OSCommon.cpp │ │ │ │ ├── OSCommon.h │ │ │ │ ├── OSUtil.h │ │ │ │ └── PPCConcurrentQueue.h │ │ │ └── libs/ │ │ │ ├── TCL/ │ │ │ │ ├── TCL.cpp │ │ │ │ └── TCL.h │ │ │ ├── avm/ │ │ │ │ ├── avm.cpp │ │ │ │ └── avm.h │ │ │ ├── camera/ │ │ │ │ ├── camera.cpp │ │ │ │ └── camera.h │ │ │ ├── coreinit/ │ │ │ │ ├── coreinit.cpp │ │ │ │ ├── coreinit.h │ │ │ │ ├── coreinit_Alarm.cpp │ │ │ │ ├── coreinit_Alarm.h │ │ │ │ ├── coreinit_Atomic.cpp │ │ │ │ ├── coreinit_Atomic.h │ │ │ │ ├── coreinit_BSP.cpp │ │ │ │ ├── coreinit_BSP.h │ │ │ │ ├── coreinit_Callbacks.cpp │ │ │ │ ├── coreinit_CodeGen.cpp │ │ │ │ ├── coreinit_CodeGen.h │ │ │ │ ├── coreinit_Coroutine.cpp │ │ │ │ ├── coreinit_Coroutine.h │ │ │ │ ├── coreinit_DynLoad.cpp │ │ │ │ ├── coreinit_DynLoad.h │ │ │ │ ├── coreinit_FG.cpp │ │ │ │ ├── coreinit_FG.h │ │ │ │ ├── coreinit_FS.cpp │ │ │ │ ├── coreinit_FS.h │ │ │ │ ├── coreinit_GHS.cpp │ │ │ │ ├── coreinit_GHS.h │ │ │ │ ├── coreinit_HWInterface.cpp │ │ │ │ ├── coreinit_HWInterface.h │ │ │ │ ├── coreinit_IM.cpp │ │ │ │ ├── coreinit_IM.h │ │ │ │ ├── coreinit_IOS.cpp │ │ │ │ ├── coreinit_IOS.h │ │ │ │ ├── coreinit_IPC.cpp │ │ │ │ ├── coreinit_IPC.h │ │ │ │ ├── coreinit_IPCBuf.cpp │ │ │ │ ├── coreinit_IPCBuf.h │ │ │ │ ├── coreinit_Init.cpp │ │ │ │ ├── coreinit_LockedCache.cpp │ │ │ │ ├── coreinit_LockedCache.h │ │ │ │ ├── coreinit_MCP.cpp │ │ │ │ ├── coreinit_MCP.h │ │ │ │ ├── coreinit_MEM.cpp │ │ │ │ ├── coreinit_MEM.h │ │ │ │ ├── coreinit_MEM_BlockHeap.cpp │ │ │ │ ├── coreinit_MEM_BlockHeap.h │ │ │ │ ├── coreinit_MEM_ExpHeap.cpp │ │ │ │ ├── coreinit_MEM_ExpHeap.h │ │ │ │ ├── coreinit_MEM_FrmHeap.cpp │ │ │ │ ├── coreinit_MEM_FrmHeap.h │ │ │ │ ├── coreinit_MEM_UnitHeap.cpp │ │ │ │ ├── coreinit_MEM_UnitHeap.h │ │ │ │ ├── coreinit_MPQueue.cpp │ │ │ │ ├── coreinit_MPQueue.h │ │ │ │ ├── coreinit_Memory.cpp │ │ │ │ ├── coreinit_Memory.h │ │ │ │ ├── coreinit_MemoryMapping.cpp │ │ │ │ ├── coreinit_MemoryMapping.h │ │ │ │ ├── coreinit_MessageQueue.cpp │ │ │ │ ├── coreinit_MessageQueue.h │ │ │ │ ├── coreinit_Misc.cpp │ │ │ │ ├── coreinit_Misc.h │ │ │ │ ├── coreinit_OSScreen.cpp │ │ │ │ ├── coreinit_OSScreen.h │ │ │ │ ├── coreinit_OSScreen_font.h │ │ │ │ ├── coreinit_OverlayArena.cpp │ │ │ │ ├── coreinit_OverlayArena.h │ │ │ │ ├── coreinit_Scheduler.cpp │ │ │ │ ├── coreinit_Scheduler.h │ │ │ │ ├── coreinit_Spinlock.cpp │ │ │ │ ├── coreinit_Spinlock.h │ │ │ │ ├── coreinit_Synchronization.cpp │ │ │ │ ├── coreinit_SysHeap.cpp │ │ │ │ ├── coreinit_SysHeap.h │ │ │ │ ├── coreinit_SystemInfo.cpp │ │ │ │ ├── coreinit_SystemInfo.h │ │ │ │ ├── coreinit_Thread.cpp │ │ │ │ ├── coreinit_Thread.h │ │ │ │ ├── coreinit_ThreadQueue.cpp │ │ │ │ ├── coreinit_Time.cpp │ │ │ │ └── coreinit_Time.h │ │ │ ├── dmae/ │ │ │ │ ├── dmae.cpp │ │ │ │ └── dmae.h │ │ │ ├── drmapp/ │ │ │ │ ├── drmapp.cpp │ │ │ │ └── drmapp.h │ │ │ ├── erreula/ │ │ │ │ ├── erreula.cpp │ │ │ │ └── erreula.h │ │ │ ├── gx2/ │ │ │ │ ├── GX2.cpp │ │ │ │ ├── GX2.h │ │ │ │ ├── GX2_AddrTest.cpp │ │ │ │ ├── GX2_Blit.cpp │ │ │ │ ├── GX2_Blit.h │ │ │ │ ├── GX2_Command.cpp │ │ │ │ ├── GX2_Command.h │ │ │ │ ├── GX2_ContextState.cpp │ │ │ │ ├── GX2_Draw.cpp │ │ │ │ ├── GX2_Draw.h │ │ │ │ ├── GX2_Event.cpp │ │ │ │ ├── GX2_Event.h │ │ │ │ ├── GX2_Memory.cpp │ │ │ │ ├── GX2_Memory.h │ │ │ │ ├── GX2_Misc.cpp │ │ │ │ ├── GX2_Misc.h │ │ │ │ ├── GX2_Query.cpp │ │ │ │ ├── GX2_Query.h │ │ │ │ ├── GX2_RenderTarget.cpp │ │ │ │ ├── GX2_Resource.cpp │ │ │ │ ├── GX2_Resource.h │ │ │ │ ├── GX2_Shader.cpp │ │ │ │ ├── GX2_Shader.h │ │ │ │ ├── GX2_State.cpp │ │ │ │ ├── GX2_State.h │ │ │ │ ├── GX2_Streamout.cpp │ │ │ │ ├── GX2_Streamout.h │ │ │ │ ├── GX2_Surface.cpp │ │ │ │ ├── GX2_Surface.h │ │ │ │ ├── GX2_Surface_Copy.cpp │ │ │ │ ├── GX2_Surface_Copy.h │ │ │ │ ├── GX2_Texture.cpp │ │ │ │ ├── GX2_Texture.h │ │ │ │ ├── GX2_TilingAperture.cpp │ │ │ │ └── GX2_shader_legacy.cpp │ │ │ ├── h264_avc/ │ │ │ │ ├── H264Dec.cpp │ │ │ │ ├── H264DecBackendAVC.cpp │ │ │ │ ├── H264DecInternal.h │ │ │ │ ├── h264dec.h │ │ │ │ └── parser/ │ │ │ │ ├── H264Parser.cpp │ │ │ │ └── H264Parser.h │ │ │ ├── mic/ │ │ │ │ ├── mic.cpp │ │ │ │ └── mic.h │ │ │ ├── nfc/ │ │ │ │ ├── TLV.cpp │ │ │ │ ├── TLV.h │ │ │ │ ├── TagV0.cpp │ │ │ │ ├── TagV0.h │ │ │ │ ├── ndef.cpp │ │ │ │ ├── ndef.h │ │ │ │ ├── nfc.cpp │ │ │ │ ├── nfc.h │ │ │ │ ├── stream.cpp │ │ │ │ └── stream.h │ │ │ ├── nlibcurl/ │ │ │ │ ├── nlibcurl.cpp │ │ │ │ ├── nlibcurl.h │ │ │ │ └── nlibcurlDebug.hpp │ │ │ ├── nlibnss/ │ │ │ │ ├── nlibnss.cpp │ │ │ │ └── nlibnss.h │ │ │ ├── nn_ac/ │ │ │ │ ├── nn_ac.cpp │ │ │ │ └── nn_ac.h │ │ │ ├── nn_acp/ │ │ │ │ ├── nn_acp.cpp │ │ │ │ └── nn_acp.h │ │ │ ├── nn_act/ │ │ │ │ ├── nn_act.cpp │ │ │ │ └── nn_act.h │ │ │ ├── nn_aoc/ │ │ │ │ ├── nn_aoc.cpp │ │ │ │ └── nn_aoc.h │ │ │ ├── nn_boss/ │ │ │ │ ├── nn_boss.cpp │ │ │ │ └── nn_boss.h │ │ │ ├── nn_ccr/ │ │ │ │ ├── nn_ccr.cpp │ │ │ │ └── nn_ccr.h │ │ │ ├── nn_client_service.h │ │ │ ├── nn_cmpt/ │ │ │ │ ├── nn_cmpt.cpp │ │ │ │ └── nn_cmpt.h │ │ │ ├── nn_common.h │ │ │ ├── nn_ec/ │ │ │ │ ├── nn_ec.cpp │ │ │ │ └── nn_ec.h │ │ │ ├── nn_fp/ │ │ │ │ ├── nn_fp.cpp │ │ │ │ └── nn_fp.h │ │ │ ├── nn_idbe/ │ │ │ │ ├── nn_idbe.cpp │ │ │ │ └── nn_idbe.h │ │ │ ├── nn_ndm/ │ │ │ │ ├── nn_ndm.cpp │ │ │ │ └── nn_ndm.h │ │ │ ├── nn_nfp/ │ │ │ │ ├── AmiiboCrypto.h │ │ │ │ ├── nn_nfp.cpp │ │ │ │ └── nn_nfp.h │ │ │ ├── nn_nim/ │ │ │ │ ├── nn_nim.cpp │ │ │ │ └── nn_nim.h │ │ │ ├── nn_olv/ │ │ │ │ ├── nn_olv.cpp │ │ │ │ ├── nn_olv.h │ │ │ │ ├── nn_olv_Common.cpp │ │ │ │ ├── nn_olv_Common.h │ │ │ │ ├── nn_olv_DownloadCommunityTypes.cpp │ │ │ │ ├── nn_olv_DownloadCommunityTypes.h │ │ │ │ ├── nn_olv_InitializeTypes.cpp │ │ │ │ ├── nn_olv_InitializeTypes.h │ │ │ │ ├── nn_olv_OfflineDB.cpp │ │ │ │ ├── nn_olv_OfflineDB.h │ │ │ │ ├── nn_olv_PostTypes.cpp │ │ │ │ ├── nn_olv_PostTypes.h │ │ │ │ ├── nn_olv_UploadCommunityTypes.cpp │ │ │ │ ├── nn_olv_UploadCommunityTypes.h │ │ │ │ ├── nn_olv_UploadFavoriteTypes.cpp │ │ │ │ └── nn_olv_UploadFavoriteTypes.h │ │ │ ├── nn_pdm/ │ │ │ │ ├── nn_pdm.cpp │ │ │ │ └── nn_pdm.h │ │ │ ├── nn_save/ │ │ │ │ ├── nn_save.cpp │ │ │ │ └── nn_save.h │ │ │ ├── nn_sl/ │ │ │ │ ├── nn_sl.cpp │ │ │ │ └── nn_sl.h │ │ │ ├── nn_spm/ │ │ │ │ ├── nn_spm.cpp │ │ │ │ └── nn_spm.h │ │ │ ├── nn_temp/ │ │ │ │ ├── nn_temp.cpp │ │ │ │ └── nn_temp.h │ │ │ ├── nn_uds/ │ │ │ │ ├── nn_uds.cpp │ │ │ │ └── nn_uds.h │ │ │ ├── nsyshid/ │ │ │ │ ├── AttachDefaultBackends.cpp │ │ │ │ ├── Backend.h │ │ │ │ ├── BackendEmulated.cpp │ │ │ │ ├── BackendEmulated.h │ │ │ │ ├── BackendLibusb.cpp │ │ │ │ ├── BackendLibusb.h │ │ │ │ ├── Dimensions.cpp │ │ │ │ ├── Dimensions.h │ │ │ │ ├── Infinity.cpp │ │ │ │ ├── Infinity.h │ │ │ │ ├── Skylander.cpp │ │ │ │ ├── Skylander.h │ │ │ │ ├── SkylanderXbox360.cpp │ │ │ │ ├── SkylanderXbox360.h │ │ │ │ ├── Whitelist.cpp │ │ │ │ ├── Whitelist.h │ │ │ │ ├── g721/ │ │ │ │ │ ├── g721.cpp │ │ │ │ │ └── g721.h │ │ │ │ ├── nsyshid.cpp │ │ │ │ └── nsyshid.h │ │ │ ├── nsyskbd/ │ │ │ │ ├── nsyskbd.cpp │ │ │ │ └── nsyskbd.h │ │ │ ├── nsysnet/ │ │ │ │ ├── nsysnet.cpp │ │ │ │ └── nsysnet.h │ │ │ ├── ntag/ │ │ │ │ ├── ntag.cpp │ │ │ │ └── ntag.h │ │ │ ├── padscore/ │ │ │ │ ├── padscore.cpp │ │ │ │ └── padscore.h │ │ │ ├── proc_ui/ │ │ │ │ ├── proc_ui.cpp │ │ │ │ └── proc_ui.h │ │ │ ├── snd_core/ │ │ │ │ ├── ax.h │ │ │ │ ├── ax_aux.cpp │ │ │ │ ├── ax_exports.cpp │ │ │ │ ├── ax_internal.h │ │ │ │ ├── ax_ist.cpp │ │ │ │ ├── ax_mix.cpp │ │ │ │ ├── ax_multivoice.cpp │ │ │ │ ├── ax_out.cpp │ │ │ │ └── ax_voice.cpp │ │ │ ├── snd_user/ │ │ │ │ ├── snd_user.cpp │ │ │ │ └── snd_user.h │ │ │ ├── swkbd/ │ │ │ │ ├── swkbd.cpp │ │ │ │ └── swkbd.h │ │ │ ├── sysapp/ │ │ │ │ ├── sysapp.cpp │ │ │ │ └── sysapp.h │ │ │ ├── vpad/ │ │ │ │ ├── vpad.cpp │ │ │ │ └── vpad.h │ │ │ └── zlib125/ │ │ │ ├── zlib125.cpp │ │ │ └── zlib125.h │ │ └── TitleList/ │ │ ├── AppType.h │ │ ├── GameInfo.h │ │ ├── ParsedMetaXml.h │ │ ├── SaveInfo.cpp │ │ ├── SaveInfo.h │ │ ├── SaveList.cpp │ │ ├── SaveList.h │ │ ├── TitleId.h │ │ ├── TitleInfo.cpp │ │ ├── TitleInfo.h │ │ ├── TitleList.cpp │ │ └── TitleList.h │ ├── Cemu/ │ │ ├── CMakeLists.txt │ │ ├── DiscordPresence/ │ │ │ ├── DiscordPresence.cpp │ │ │ ├── DiscordPresence.h │ │ │ ├── DiscordRPCLite.cpp │ │ │ └── DiscordRPCLite.h │ │ ├── ExpressionParser/ │ │ │ ├── ExpressionParser.cpp │ │ │ └── ExpressionParser.h │ │ ├── FileCache/ │ │ │ ├── FileCache.cpp │ │ │ └── FileCache.h │ │ ├── Logging/ │ │ │ ├── CemuDebugLogging.h │ │ │ ├── CemuLogging.cpp │ │ │ └── CemuLogging.h │ │ ├── PPCAssembler/ │ │ │ ├── ppcAssembler.cpp │ │ │ └── ppcAssembler.h │ │ ├── Tools/ │ │ │ └── DownloadManager/ │ │ │ ├── DownloadManager.cpp │ │ │ └── DownloadManager.h │ │ ├── napi/ │ │ │ ├── napi.h │ │ │ ├── napi_act.cpp │ │ │ ├── napi_ec.cpp │ │ │ ├── napi_helper.cpp │ │ │ ├── napi_helper.h │ │ │ ├── napi_idbe.cpp │ │ │ └── napi_version.cpp │ │ ├── ncrypto/ │ │ │ ├── ncrypto.cpp │ │ │ └── ncrypto.h │ │ └── nex/ │ │ ├── nex.cpp │ │ ├── nex.h │ │ ├── nexFriends.cpp │ │ ├── nexFriends.h │ │ ├── nexThread.cpp │ │ ├── nexThread.h │ │ ├── nexTypes.h │ │ ├── prudp.cpp │ │ └── prudp.h │ ├── Common/ │ │ ├── CMakeLists.txt │ │ ├── CafeString.h │ │ ├── ExceptionHandler/ │ │ │ ├── ELFSymbolTable.cpp │ │ │ ├── ELFSymbolTable.h │ │ │ ├── ExceptionHandler.cpp │ │ │ ├── ExceptionHandler.h │ │ │ ├── ExceptionHandler_posix.cpp │ │ │ └── ExceptionHandler_win32.cpp │ │ ├── FileStream.h │ │ ├── GLInclude/ │ │ │ ├── GLInclude.h │ │ │ ├── egl.h │ │ │ ├── glFunctions.h │ │ │ ├── glext.h │ │ │ ├── glxext.h │ │ │ ├── khrplatform.h │ │ │ └── wglext.h │ │ ├── MemPtr.h │ │ ├── StackAllocator.h │ │ ├── SysAllocator.cpp │ │ ├── SysAllocator.h │ │ ├── betype.h │ │ ├── cpu_features.cpp │ │ ├── cpu_features.h │ │ ├── enumFlags.h │ │ ├── platform.h │ │ ├── precompiled.cpp │ │ ├── precompiled.h │ │ ├── socket.h │ │ ├── unix/ │ │ │ ├── FileStream_unix.cpp │ │ │ ├── FileStream_unix.h │ │ │ ├── date.h │ │ │ ├── fast_float.h │ │ │ ├── platform.cpp │ │ │ └── platform.h │ │ ├── version.h │ │ └── windows/ │ │ ├── FileStream_win32.cpp │ │ ├── FileStream_win32.h │ │ ├── platform.cpp │ │ └── platform.h │ ├── audio/ │ │ ├── CMakeLists.txt │ │ ├── CubebAPI.cpp │ │ ├── CubebAPI.h │ │ ├── CubebInputAPI.cpp │ │ ├── CubebInputAPI.h │ │ ├── DirectSoundAPI.cpp │ │ ├── DirectSoundAPI.h │ │ ├── IAudioAPI.cpp │ │ ├── IAudioAPI.h │ │ ├── IAudioInputAPI.cpp │ │ ├── IAudioInputAPI.h │ │ ├── XAudio27API.cpp │ │ ├── XAudio27API.h │ │ ├── XAudio2API.cpp │ │ ├── XAudio2API.h │ │ └── xaudio2_7/ │ │ ├── audiodefs.h │ │ ├── comdecl.h │ │ ├── dxsdkver.h │ │ └── xma2defs.h │ ├── config/ │ │ ├── ActiveSettings.cpp │ │ ├── ActiveSettings.h │ │ ├── CMakeLists.txt │ │ ├── CemuConfig.cpp │ │ ├── CemuConfig.h │ │ ├── ConfigValue.h │ │ ├── LaunchSettings.cpp │ │ ├── LaunchSettings.h │ │ ├── NetworkSettings.cpp │ │ ├── NetworkSettings.h │ │ └── XMLConfig.h │ ├── gui/ │ │ ├── CMakeLists.txt │ │ ├── interface/ │ │ │ └── WindowSystem.h │ │ └── wxgui/ │ │ ├── AudioDebuggerWindow.cpp │ │ ├── AudioDebuggerWindow.h │ │ ├── CMakeLists.txt │ │ ├── CemuApp.cpp │ │ ├── CemuApp.h │ │ ├── CemuUpdateWindow.cpp │ │ ├── CemuUpdateWindow.h │ │ ├── ChecksumTool.cpp │ │ ├── ChecksumTool.h │ │ ├── DownloadGraphicPacksWindow.cpp │ │ ├── DownloadGraphicPacksWindow.h │ │ ├── EmulatedUSBDevices/ │ │ │ ├── EmulatedUSBDeviceFrame.cpp │ │ │ └── EmulatedUSBDeviceFrame.h │ │ ├── GameProfileWindow.cpp │ │ ├── GameProfileWindow.h │ │ ├── GameUpdateWindow.cpp │ │ ├── GameUpdateWindow.h │ │ ├── GeneralSettings2.cpp │ │ ├── GeneralSettings2.h │ │ ├── GettingStartedDialog.cpp │ │ ├── GettingStartedDialog.h │ │ ├── GraphicPacksWindow2.cpp │ │ ├── GraphicPacksWindow2.h │ │ ├── LoggingWindow.cpp │ │ ├── LoggingWindow.h │ │ ├── MainWindow.cpp │ │ ├── MainWindow.h │ │ ├── MemorySearcherTool.cpp │ │ ├── MemorySearcherTool.h │ │ ├── PadViewFrame.cpp │ │ ├── PadViewFrame.h │ │ ├── TitleManager.cpp │ │ ├── TitleManager.h │ │ ├── canvas/ │ │ │ ├── IRenderCanvas.h │ │ │ ├── MetalCanvas.cpp │ │ │ ├── MetalCanvas.h │ │ │ ├── OpenGLCanvas.cpp │ │ │ ├── OpenGLCanvas.h │ │ │ ├── VulkanCanvas.cpp │ │ │ └── VulkanCanvas.h │ │ ├── components/ │ │ │ ├── TextList.cpp │ │ │ ├── TextList.h │ │ │ ├── wxDownloadManagerList.cpp │ │ │ ├── wxDownloadManagerList.h │ │ │ ├── wxGameList.cpp │ │ │ ├── wxGameList.h │ │ │ ├── wxInputDraw.cpp │ │ │ ├── wxInputDraw.h │ │ │ ├── wxLogCtrl.cpp │ │ │ ├── wxLogCtrl.h │ │ │ ├── wxProgressDialogManager.h │ │ │ ├── wxTitleManagerList.cpp │ │ │ └── wxTitleManagerList.h │ │ ├── debugger/ │ │ │ ├── BreakpointWindow.cpp │ │ │ ├── BreakpointWindow.h │ │ │ ├── DebuggerWindow2.cpp │ │ │ ├── DebuggerWindow2.h │ │ │ ├── DisasmCtrl.cpp │ │ │ ├── DisasmCtrl.h │ │ │ ├── DumpCtrl.cpp │ │ │ ├── DumpCtrl.h │ │ │ ├── DumpWindow.cpp │ │ │ ├── DumpWindow.h │ │ │ ├── ModuleWindow.cpp │ │ │ ├── ModuleWindow.h │ │ │ ├── RegisterWindow.cpp │ │ │ ├── RegisterWindow.h │ │ │ ├── SymbolCtrl.cpp │ │ │ ├── SymbolCtrl.h │ │ │ ├── SymbolWindow.cpp │ │ │ └── SymbolWindow.h │ │ ├── dialogs/ │ │ │ ├── CreateAccount/ │ │ │ │ ├── wxCreateAccountDialog.cpp │ │ │ │ └── wxCreateAccountDialog.h │ │ │ └── SaveImport/ │ │ │ ├── SaveImportWindow.cpp │ │ │ ├── SaveImportWindow.h │ │ │ ├── SaveTransfer.cpp │ │ │ └── SaveTransfer.h │ │ ├── helpers/ │ │ │ ├── wxControlObject.h │ │ │ ├── wxCustomData.h │ │ │ ├── wxCustomEvents.cpp │ │ │ ├── wxCustomEvents.h │ │ │ ├── wxHelpers.cpp │ │ │ ├── wxHelpers.h │ │ │ ├── wxLogEvent.h │ │ │ ├── wxWayland.cpp │ │ │ └── wxWayland.h │ │ ├── input/ │ │ │ ├── HotkeySettings.cpp │ │ │ ├── HotkeySettings.h │ │ │ ├── InputAPIAddWindow.cpp │ │ │ ├── InputAPIAddWindow.h │ │ │ ├── InputSettings2.cpp │ │ │ ├── InputSettings2.h │ │ │ ├── PairingDialog.cpp │ │ │ ├── PairingDialog.h │ │ │ ├── panels/ │ │ │ │ ├── ClassicControllerInputPanel.cpp │ │ │ │ ├── ClassicControllerInputPanel.h │ │ │ │ ├── InputPanel.cpp │ │ │ │ ├── InputPanel.h │ │ │ │ ├── ProControllerInputPanel.cpp │ │ │ │ ├── ProControllerInputPanel.h │ │ │ │ ├── VPADInputPanel.cpp │ │ │ │ ├── VPADInputPanel.h │ │ │ │ ├── WiimoteInputPanel.cpp │ │ │ │ └── WiimoteInputPanel.h │ │ │ └── settings/ │ │ │ ├── DefaultControllerSettings.cpp │ │ │ ├── DefaultControllerSettings.h │ │ │ ├── WiimoteControllerSettings.cpp │ │ │ └── WiimoteControllerSettings.h │ │ ├── windows/ │ │ │ ├── PPCThreadsViewer/ │ │ │ │ ├── DebugPPCThreadsWindow.cpp │ │ │ │ └── DebugPPCThreadsWindow.h │ │ │ └── TextureRelationViewer/ │ │ │ ├── TextureRelationWindow.cpp │ │ │ └── TextureRelationWindow.h │ │ ├── wxCemuConfig.cpp │ │ ├── wxCemuConfig.h │ │ ├── wxHelper.h │ │ ├── wxWindowSystem.cpp │ │ ├── wxcomponents/ │ │ │ ├── checktree.cpp │ │ │ └── checktree.h │ │ └── wxgui.h │ ├── imgui/ │ │ ├── CMakeLists.txt │ │ ├── imgui_extension.cpp │ │ ├── imgui_extension.h │ │ ├── imgui_impl_metal.h │ │ ├── imgui_impl_metal.mm │ │ ├── imgui_impl_opengl3.cpp │ │ ├── imgui_impl_opengl3.h │ │ ├── imgui_impl_vulkan.cpp │ │ └── imgui_impl_vulkan.h │ ├── input/ │ │ ├── CMakeLists.txt │ │ ├── ControllerFactory.cpp │ │ ├── ControllerFactory.h │ │ ├── InputManager.cpp │ │ ├── InputManager.h │ │ ├── api/ │ │ │ ├── Controller.cpp │ │ │ ├── Controller.h │ │ │ ├── ControllerProvider.h │ │ │ ├── ControllerState.cpp │ │ │ ├── ControllerState.h │ │ │ ├── DSU/ │ │ │ │ ├── DSUController.cpp │ │ │ │ ├── DSUController.h │ │ │ │ ├── DSUControllerProvider.cpp │ │ │ │ ├── DSUControllerProvider.h │ │ │ │ ├── DSUMessages.cpp │ │ │ │ └── DSUMessages.h │ │ │ ├── DirectInput/ │ │ │ │ ├── DirectInputController.cpp │ │ │ │ ├── DirectInputController.h │ │ │ │ ├── DirectInputControllerProvider.cpp │ │ │ │ └── DirectInputControllerProvider.h │ │ │ ├── GameCube/ │ │ │ │ ├── GameCubeController.cpp │ │ │ │ ├── GameCubeController.h │ │ │ │ ├── GameCubeControllerProvider.cpp │ │ │ │ └── GameCubeControllerProvider.h │ │ │ ├── InputAPI.h │ │ │ ├── Keyboard/ │ │ │ │ ├── KeyboardController.cpp │ │ │ │ ├── KeyboardController.h │ │ │ │ ├── KeyboardControllerProvider.cpp │ │ │ │ └── KeyboardControllerProvider.h │ │ │ ├── SDL/ │ │ │ │ ├── SDLController.cpp │ │ │ │ ├── SDLController.h │ │ │ │ ├── SDLControllerProvider.cpp │ │ │ │ └── SDLControllerProvider.h │ │ │ ├── Wiimote/ │ │ │ │ ├── NativeWiimoteController.cpp │ │ │ │ ├── NativeWiimoteController.h │ │ │ │ ├── WiimoteControllerProvider.cpp │ │ │ │ ├── WiimoteControllerProvider.h │ │ │ │ ├── WiimoteDevice.h │ │ │ │ ├── WiimoteMessages.h │ │ │ │ ├── hidapi/ │ │ │ │ │ ├── HidapiWiimote.cpp │ │ │ │ │ └── HidapiWiimote.h │ │ │ │ └── l2cap/ │ │ │ │ ├── L2CapWiimote.cpp │ │ │ │ └── L2CapWiimote.h │ │ │ └── XInput/ │ │ │ ├── XInputController.cpp │ │ │ ├── XInputController.h │ │ │ ├── XInputControllerProvider.cpp │ │ │ └── XInputControllerProvider.h │ │ ├── emulated/ │ │ │ ├── ClassicController.cpp │ │ │ ├── ClassicController.h │ │ │ ├── EmulatedController.cpp │ │ │ ├── EmulatedController.h │ │ │ ├── ProController.cpp │ │ │ ├── ProController.h │ │ │ ├── VPADController.cpp │ │ │ ├── VPADController.h │ │ │ ├── WPADController.cpp │ │ │ ├── WPADController.h │ │ │ ├── WiimoteController.cpp │ │ │ └── WiimoteController.h │ │ └── motion/ │ │ ├── Mahony.h │ │ ├── MotionHandler.h │ │ └── MotionSample.h │ ├── main.cpp │ ├── mainLLE.cpp │ ├── resource/ │ │ ├── CMakeLists.txt │ │ ├── CafeDefaultFont.cpp │ │ ├── IconsFontAwesome5.h │ │ ├── MacOSXBundleInfo.plist.in │ │ ├── cemu.icns │ │ ├── cemu.rc │ │ ├── embedded/ │ │ │ ├── DEBUGGER_BP.hpng │ │ │ ├── DEBUGGER_BP_RED.hpng │ │ │ ├── DEBUGGER_GOTO.hpng │ │ │ ├── DEBUGGER_PAUSE.hpng │ │ │ ├── DEBUGGER_PLAY.hpng │ │ │ ├── DEBUGGER_STEP_INTO.hpng │ │ │ ├── DEBUGGER_STEP_OUT.hpng │ │ │ ├── DEBUGGER_STEP_OVER.hpng │ │ │ ├── INPUT_CONNECTED.hpng │ │ │ ├── INPUT_DISCONNECTED.hpng │ │ │ ├── INPUT_LOW_BATTERY.hpng │ │ │ ├── M_WND_ICON128.xpm │ │ │ ├── PNG_HELP.hpng │ │ │ ├── PNG_REFRESH.hpng │ │ │ ├── X_BOX.xpm │ │ │ ├── X_GAME_PROFILE.xpm │ │ │ ├── X_HOTKEY_SETTINGS.xpm │ │ │ ├── X_SETTINGS.xpm │ │ │ ├── fontawesome.S │ │ │ ├── fontawesome_macos.S │ │ │ ├── icons8-checkmark-yes-32.hpng │ │ │ ├── icons8-error-32.hpng │ │ │ ├── resources.cpp │ │ │ └── resources.h │ │ ├── installer.nsi │ │ ├── resource.h │ │ └── update.sh │ ├── tools/ │ │ └── ShaderCacheMerger.cpp │ └── util/ │ ├── CMakeLists.txt │ ├── ChunkedHeap/ │ │ └── ChunkedHeap.h │ ├── DXGIWrapper/ │ │ └── DXGIWrapper.h │ ├── EventService.h │ ├── Fiber/ │ │ ├── Fiber.h │ │ ├── FiberUnix.cpp │ │ └── FiberWin.cpp │ ├── ImageWriter/ │ │ ├── bmp.h │ │ └── tga.h │ ├── IniParser/ │ │ ├── IniParser.cpp │ │ └── IniParser.h │ ├── MemMapper/ │ │ ├── MemMapper.h │ │ ├── MemMapperUnix.cpp │ │ └── MemMapperWin.cpp │ ├── ScreenSaver/ │ │ └── ScreenSaver.h │ ├── SystemInfo/ │ │ ├── SystemInfo.cpp │ │ ├── SystemInfo.h │ │ ├── SystemInfoLinux.cpp │ │ ├── SystemInfoMac.cpp │ │ ├── SystemInfoStub.cpp │ │ ├── SystemInfoUnix.cpp │ │ └── SystemInfoWin.cpp │ ├── ThreadPool/ │ │ └── ThreadPool.h │ ├── VirtualHeap/ │ │ ├── VirtualHeap.cpp │ │ └── VirtualHeap.h │ ├── Zir/ │ │ ├── Core/ │ │ │ ├── IR.cpp │ │ │ ├── IR.h │ │ │ ├── ZirUtility.h │ │ │ ├── ZpIRBuilder.h │ │ │ ├── ZpIRDebug.h │ │ │ ├── ZpIRPasses.h │ │ │ └── ZpIRScheduler.h │ │ ├── EmitterGLSL/ │ │ │ ├── ZpIREmitGLSL.cpp │ │ │ └── ZpIREmitGLSL.h │ │ └── Passes/ │ │ ├── RegisterAllocatorForGLSL.cpp │ │ └── ZpIRRegisterAllocator.cpp │ ├── boost/ │ │ └── bluetooth.h │ ├── bootSound/ │ │ ├── BootSoundReader.cpp │ │ └── BootSoundReader.h │ ├── containers/ │ │ ├── IntervalBucketContainer.h │ │ ├── LookupTableL3.h │ │ ├── RangeStore.h │ │ ├── SmallBitset.h │ │ ├── flat_hash_map.hpp │ │ └── robin_hood.h │ ├── crypto/ │ │ ├── aes128.cpp │ │ ├── aes128.h │ │ ├── crc32.cpp │ │ ├── crc32.h │ │ ├── md5.cpp │ │ └── md5.h │ ├── helpers/ │ │ ├── ClassWrapper.h │ │ ├── ConcurrentQueue.h │ │ ├── MapAdaptor.h │ │ ├── MemoryPool.h │ │ ├── Semaphore.h │ │ ├── Serializer.cpp │ │ ├── Serializer.h │ │ ├── Singleton.h │ │ ├── StringBuf.h │ │ ├── StringHelpers.h │ │ ├── StringParser.h │ │ ├── SystemException.h │ │ ├── TempState.h │ │ ├── enum_array.hpp │ │ ├── fixedSizeList.h │ │ ├── fspinlock.h │ │ ├── helpers.cpp │ │ ├── helpers.h │ │ └── ringbuffer.h │ ├── highresolutiontimer/ │ │ ├── HighResolutionTimer.cpp │ │ └── HighResolutionTimer.h │ ├── libusbWrapper/ │ │ ├── libusbWrapper.cpp │ │ └── libusbWrapper.h │ ├── math/ │ │ ├── glm.h │ │ ├── quaternion.h │ │ ├── vector2.h │ │ └── vector3.h │ └── tinyxml2/ │ ├── tinyxml2.cpp │ └── tinyxml2.h └── vcpkg.json
Showing preview only (987K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (9937 symbols across 956 files)
FILE: dependencies/DirectX_2010/XAudio2.h
type XAUDIO2_XBOX_HWTHREAD_SPECIFIER (line 177) | typedef enum XAUDIO2_XBOX_HWTHREAD_SPECIFIER
type XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER (line 189) | typedef enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER
type XAUDIO2_DEVICE_ROLE (line 231) | typedef enum XAUDIO2_DEVICE_ROLE
type XAUDIO2_DEVICE_DETAILS (line 243) | typedef struct XAUDIO2_DEVICE_DETAILS
type XAUDIO2_VOICE_DETAILS (line 252) | typedef struct XAUDIO2_VOICE_DETAILS
type XAUDIO2_SEND_DESCRIPTOR (line 260) | typedef struct XAUDIO2_SEND_DESCRIPTOR
type XAUDIO2_VOICE_SENDS (line 267) | typedef struct XAUDIO2_VOICE_SENDS
type XAUDIO2_EFFECT_DESCRIPTOR (line 274) | typedef struct XAUDIO2_EFFECT_DESCRIPTOR
type XAUDIO2_EFFECT_CHAIN (line 282) | typedef struct XAUDIO2_EFFECT_CHAIN
type XAUDIO2_FILTER_TYPE (line 289) | typedef enum XAUDIO2_FILTER_TYPE
type XAUDIO2_FILTER_PARAMETERS (line 298) | typedef struct XAUDIO2_FILTER_PARAMETERS
type XAUDIO2_BUFFER (line 309) | typedef struct XAUDIO2_BUFFER
type XAUDIO2_BUFFER_WMA (line 332) | typedef struct XAUDIO2_BUFFER_WMA
type XAUDIO2_VOICE_STATE (line 343) | typedef struct XAUDIO2_VOICE_STATE
type XAUDIO2_PERFORMANCE_DATA (line 355) | typedef struct XAUDIO2_PERFORMANCE_DATA
type XAUDIO2_DEBUG_CONFIGURATION (line 389) | typedef struct XAUDIO2_DEBUG_CONFIGURATION
function STDMETHOD (line 479) | STDMETHOD(Initialize) (THIS_ UINT32 Flags X2DEFAULT(0),
function STDMETHOD (line 837) | STDMETHOD(Start) (THIS_ UINT32 Flags X2DEFAULT(0), UINT32 OperationSet X...
function DECLARE_INTERFACE (line 965) | DECLARE_INTERFACE(IXAudio2EngineCallback)
function DECLARE_INTERFACE (line 992) | DECLARE_INTERFACE(IXAudio2VoiceCallback)
function XAudio2DecibelsToAmplitudeRatio (line 1159) | __inline float XAudio2DecibelsToAmplitudeRatio(float Decibels)
function XAudio2AmplitudeRatioToDecibels (line 1165) | __inline float XAudio2AmplitudeRatioToDecibels(float Volume)
function XAudio2SemitonesToFrequencyRatio (line 1175) | __inline float XAudio2SemitonesToFrequencyRatio(float Semitones)
function XAudio2FrequencyRatioToSemitones (line 1183) | __inline float XAudio2FrequencyRatioToSemitones(float FrequencyRatio)
function XAudio2CutoffFrequencyToRadians (line 1194) | __inline float XAudio2CutoffFrequencyToRadians(float CutoffFrequency, UI...
function XAudio2RadiansToCutoffFrequency (line 1204) | __inline float XAudio2RadiansToCutoffFrequency(float Radians, float Samp...
function STDAPI (line 1228) | STDAPI XAudio2Create(__deref_out IXAudio2** ppXAudio2, UINT32 Flags X2DE...
FILE: dependencies/DirectX_2010/audiodefs.h
type WAVEFORMATEX (line 40) | typedef struct tWAVEFORMATEX
type WAVEFORMATEX (line 56) | typedef WAVEFORMATEX *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
type WAVEFORMATEX (line 57) | typedef const WAVEFORMATEX *PCWAVEFORMATEX, *LPCWAVEFORMATEX;
type WAVEFORMATEXTENSIBLE (line 74) | typedef struct
type WAVEFORMATEXTENSIBLE (line 90) | typedef WAVEFORMATEXTENSIBLE *PWAVEFORMATEXTENSIBLE, *LPWAVEFORMATEXTENS...
type WAVEFORMATEXTENSIBLE (line 91) | typedef const WAVEFORMATEXTENSIBLE *PCWAVEFORMATEXTENSIBLE, *LPCWAVEFORM...
type WAVEFORMAT (line 107) | typedef struct waveformat_tag
type PCMWAVEFORMAT (line 117) | typedef struct pcmwaveformat_tag
type ADPCMCOEFSET (line 131) | typedef struct adpcmcoef_tag
type ADPCMWAVEFORMAT (line 140) | typedef struct adpcmwaveformat_tag {
FILE: dependencies/DirectX_2010/xma2defs.h
type XMA2WAVEFORMATEX (line 187) | typedef struct XMA2WAVEFORMATEX
type XMASTREAMFORMAT (line 237) | typedef struct XMASTREAMFORMAT
type XMAWAVEFORMAT (line 256) | typedef struct XMAWAVEFORMAT
type XMA2STREAMFORMAT (line 272) | typedef struct XMA2STREAMFORMAT
type XMA2WAVEFORMAT (line 280) | typedef struct XMA2WAVEFORMAT
type XMA2PACKET (line 312) | typedef struct XMA2PACKET
function DWORD (line 335) | __inline DWORD GetXmaPacketFrameCount(__in_bcount(1) const BYTE* pPacket)
function DWORD (line 530) | __inline DWORD GetLastXmaFrameBitPosition
function HRESULT (line 592) | __inline HRESULT GetXmaDecodePositionForSample
function DWORD (line 626) | __inline DWORD GetXmaSampleRate(DWORD dwGeneralRate)
function DWORD (line 643) | __inline DWORD GetStandardChannelMaskFromXmaMask(BYTE bXmaMask)
function BYTE (line 659) | __inline BYTE GetXmaChannelMaskFromStandardMask(DWORD dwStandardMask)
function HRESULT (line 679) | __inline HRESULT LocalizeXma2Format(__inout XMA2WAVEFORMATEX* pXma2Format)
FILE: dependencies/gamemode/lib/gamemode_client.h
function internal_bind_libgamemode_symbol (line 116) | __attribute__((always_inline)) static inline int internal_bind_libgamemo...
function internal_load_libgamemode (line 143) | __attribute__((always_inline)) static inline int internal_load_libgamemo...
function gamemode_request_start (line 248) | __attribute__((constructor))
function gamemode_request_end (line 277) | __attribute__((destructor))
function gamemode_query_status (line 305) | __attribute__((always_inline)) static inline int gamemode_query_status(v...
function gamemode_request_start_for (line 323) | __attribute__((always_inline)) static inline int gamemode_request_start_...
function gamemode_request_end_for (line 341) | __attribute__((always_inline)) static inline int gamemode_request_end_fo...
function gamemode_query_status_for (line 359) | __attribute__((always_inline)) static inline int gamemode_query_status_f...
FILE: dependencies/ih264d/common/arm/ih264_platform_macros.h
function WORD32 (line 43) | static __inline WORD32 CLIP_U8(WORD32 x)
function WORD32 (line 49) | static __inline WORD32 CLIP_S8(WORD32 x)
function WORD32 (line 55) | static __inline WORD32 CLIP_U10(WORD32 x)
function WORD32 (line 61) | static __inline WORD32 CLIP_S10(WORD32 x)
function WORD32 (line 67) | static __inline WORD32 CLIP_U11(WORD32 x)
function WORD32 (line 73) | static __inline WORD32 CLIP_S11(WORD32 x)
function WORD32 (line 79) | static __inline WORD32 CLIP_U12(WORD32 x)
function WORD32 (line 85) | static __inline WORD32 CLIP_S12(WORD32 x)
function WORD32 (line 91) | static __inline WORD32 CLIP_U16(WORD32 x)
function WORD32 (line 96) | static __inline WORD32 CLIP_S16(WORD32 x)
function UWORD32 (line 103) | static __inline UWORD32 ITT_BIG_ENDIAN(UWORD32 x)
function INLINE (line 158) | static INLINE UWORD32 CLZ(UWORD32 u4_word)
function INLINE (line 165) | static INLINE UWORD32 CTZ(UWORD32 u4_word)
FILE: dependencies/ih264d/common/armv8/ih264_platform_macros.h
function WORD32 (line 43) | static __inline WORD32 CLIP_U8(WORD32 x)
function WORD32 (line 49) | static __inline WORD32 CLIP_S8(WORD32 x)
function WORD32 (line 55) | static __inline WORD32 CLIP_U10(WORD32 x)
function WORD32 (line 61) | static __inline WORD32 CLIP_S10(WORD32 x)
function WORD32 (line 67) | static __inline WORD32 CLIP_U11(WORD32 x)
function WORD32 (line 73) | static __inline WORD32 CLIP_S11(WORD32 x)
function WORD32 (line 79) | static __inline WORD32 CLIP_U12(WORD32 x)
function WORD32 (line 85) | static __inline WORD32 CLIP_S12(WORD32 x)
function WORD32 (line 91) | static __inline WORD32 CLIP_U16(WORD32 x)
function WORD32 (line 96) | static __inline WORD32 CLIP_S16(WORD32 x)
function UWORD32 (line 103) | static __inline UWORD32 ITT_BIG_ENDIAN(UWORD32 x)
function INLINE (line 158) | static INLINE UWORD32 CLZ(UWORD32 u4_word)
function INLINE (line 165) | static INLINE UWORD32 CTZ(UWORD32 u4_word)
FILE: dependencies/ih264d/common/ih264_buf_mgr.c
function WORD32 (line 79) | WORD32 ih264_buf_mgr_size(void)
function IH264_ERROR_T (line 107) | IH264_ERROR_T ih264_buf_mgr_lock(buf_mgr_t *ps_buf_mgr)
function IH264_ERROR_T (line 137) | IH264_ERROR_T ih264_buf_mgr_unlock(buf_mgr_t *ps_buf_mgr)
function IH264_ERROR_T (line 170) | IH264_ERROR_T ih264_buf_mgr_yield(buf_mgr_t *ps_buf_mgr)
function IH264_ERROR_T (line 206) | IH264_ERROR_T ih264_buf_mgr_free(buf_mgr_t *ps_buf_mgr)
function IH264_ERROR_T (line 288) | IH264_ERROR_T ih264_buf_mgr_add(buf_mgr_t *ps_buf_mgr,
function IH264_ERROR_T (line 394) | IH264_ERROR_T ih264_buf_mgr_check_free(buf_mgr_t *ps_buf_mgr)
function IH264_ERROR_T (line 446) | IH264_ERROR_T ih264_buf_mgr_release(buf_mgr_t *ps_buf_mgr,
function IH264_ERROR_T (line 508) | IH264_ERROR_T ih264_buf_mgr_set_status(buf_mgr_t *ps_buf_mgr,
function WORD32 (line 561) | WORD32 ih264_buf_mgr_get_status( buf_mgr_t *ps_buf_mgr, WORD32 buf_id )
function WORD32 (line 639) | WORD32 ih264_buf_mgr_get_bufid(buf_mgr_t *ps_buf_mgr, void *pv_buf)
function UWORD32 (line 681) | UWORD32 ih264_buf_mgr_get_num_active_buf(buf_mgr_t *ps_buf_mgr)
FILE: dependencies/ih264d/common/ih264_buf_mgr.h
type buf_mgr_t (line 47) | typedef struct
FILE: dependencies/ih264d/common/ih264_cabac_tables.h
type CTX_BLOCK_CAT (line 93) | typedef enum
type cabac_table_num_t (line 111) | typedef enum
type cabac_blk_cat_offset_t (line 155) | typedef enum
FILE: dependencies/ih264d/common/ih264_chroma_intra_pred_filters.c
function ih264_intra_pred_chroma_8x8_mode_dc (line 110) | void ih264_intra_pred_chroma_8x8_mode_dc(UWORD8 *pu1_src,
function ih264_intra_pred_chroma_8x8_mode_horz (line 306) | void ih264_intra_pred_chroma_8x8_mode_horz(UWORD8 *pu1_src,
function ih264_intra_pred_chroma_8x8_mode_vert (line 364) | void ih264_intra_pred_chroma_8x8_mode_vert(UWORD8 *pu1_src,
function ih264_intra_pred_chroma_8x8_mode_plane (line 428) | void ih264_intra_pred_chroma_8x8_mode_plane(UWORD8 *pu1_src,
FILE: dependencies/ih264d/common/ih264_common_tables.h
type level_tables_t (line 52) | typedef struct
FILE: dependencies/ih264d/common/ih264_deblk_edge_filters.c
function ih264_deblk_luma_vert_bs4 (line 104) | void ih264_deblk_luma_vert_bs4(UWORD8 *pu1_src,
function ih264_deblk_luma_horz_bs4 (line 224) | void ih264_deblk_luma_horz_bs4(UWORD8 *pu1_src,
function ih264_deblk_chroma_vert_bs4_bp (line 347) | void ih264_deblk_chroma_vert_bs4_bp(UWORD8 *pu1_src,
function ih264_deblk_chroma_horz_bs4_bp (line 437) | void ih264_deblk_chroma_horz_bs4_bp(UWORD8 *pu1_src,
function ih264_deblk_luma_vert_bslt4 (line 536) | void ih264_deblk_luma_vert_bslt4(UWORD8 *pu1_src,
function ih264_deblk_chroma_vert_bslt4_bp (line 652) | void ih264_deblk_chroma_vert_bslt4_bp(UWORD8 *pu1_src,
function ih264_deblk_luma_horz_bslt4 (line 766) | void ih264_deblk_luma_horz_bslt4(UWORD8 *pu1_src,
function ih264_deblk_chroma_horz_bslt4_bp (line 885) | void ih264_deblk_chroma_horz_bslt4_bp(UWORD8 *pu1_src,
function ih264_deblk_luma_vert_bs4_mbaff (line 1009) | void ih264_deblk_luma_vert_bs4_mbaff(UWORD8 *pu1_src,
function ih264_deblk_chroma_vert_bs4_mbaff_bp (line 1130) | void ih264_deblk_chroma_vert_bs4_mbaff_bp(UWORD8 *pu1_src,
function ih264_deblk_luma_vert_bslt4_mbaff (line 1219) | void ih264_deblk_luma_vert_bslt4_mbaff(UWORD8 *pu1_src,
function ih264_deblk_chroma_vert_bslt4_mbaff_bp (line 1335) | void ih264_deblk_chroma_vert_bslt4_mbaff_bp(UWORD8 *pu1_src,
function ih264_deblk_chroma_vert_bs4 (line 1453) | void ih264_deblk_chroma_vert_bs4(UWORD8 *pu1_src,
function ih264_deblk_chroma_horz_bs4 (line 1550) | void ih264_deblk_chroma_horz_bs4(UWORD8 *pu1_src,
function ih264_deblk_chroma_vert_bslt4 (line 1655) | void ih264_deblk_chroma_vert_bslt4(UWORD8 *pu1_src,
function ih264_deblk_chroma_horz_bslt4 (line 1778) | void ih264_deblk_chroma_horz_bslt4(UWORD8 *pu1_src,
function ih264_deblk_chroma_vert_bs4_mbaff (line 1910) | void ih264_deblk_chroma_vert_bs4_mbaff(UWORD8 *pu1_src,
function ih264_deblk_chroma_vert_bslt4_mbaff (line 2006) | void ih264_deblk_chroma_vert_bslt4_mbaff(UWORD8 *pu1_src,
FILE: dependencies/ih264d/common/ih264_defs.h
type IH264_LEVEL_T (line 73) | typedef enum
type PIC_TYPE_T (line 100) | typedef enum
type MBMODES_I16x16 (line 192) | typedef enum
type MBMODES_I4x4 (line 207) | typedef enum
type MBMODES_I8x8 (line 227) | typedef enum
type MBMODES_CHROMA_I8x8 (line 247) | typedef enum
type MBTYPES_T (line 262) | typedef enum
type ENTROPY_BLK_TYPE (line 295) | typedef enum
type ENTROPY_MODE (line 311) | typedef enum
type COMPONENT_TYPE (line 323) | typedef enum
type MBPART_PREDMODE_T (line 337) | typedef enum
type MBTYPE_ISLICE_T (line 351) | typedef enum
type MBTYPE_PSLICE_T (line 381) | typedef enum
type MBTYPE_BSLICE_T (line 391) | typedef enum
type SUBMBTYPE_PSLICE_T (line 420) | typedef enum
type SUBMBTYPE_BSLICE_T (line 428) | typedef enum
FILE: dependencies/ih264d/common/ih264_disp_mgr.c
function ih264_disp_mgr_init (line 66) | void ih264_disp_mgr_init(disp_mgr_t *ps_disp_mgr)
function WORD32 (line 108) | WORD32 ih264_disp_mgr_add(disp_mgr_t *ps_disp_mgr,
FILE: dependencies/ih264d/common/ih264_disp_mgr.h
type disp_mgr_t (line 43) | typedef struct
FILE: dependencies/ih264d/common/ih264_dpb_mgr.c
function ih264_dpb_mgr_init (line 87) | void ih264_dpb_mgr_init(dpb_mgr_t *ps_dpb_mgr)
function WORD32 (line 138) | WORD32 ih264_dpb_mgr_sort_short_term_fields_by_frame_num(dpb_mgr_t *ps_d...
function WORD32 (line 227) | WORD32 ih264_dpb_mgr_sort_short_term_fields_by_poc_l0(dpb_mgr_t *ps_dpb_...
function WORD32 (line 316) | WORD32 ih264_dpb_mgr_sort_short_term_fields_by_poc_l1(dpb_mgr_t *ps_dpb_...
function WORD32 (line 400) | WORD32 ih264_dpb_mgr_sort_long_term_fields_by_frame_idx(dpb_mgr_t *ps_dp...
function WORD32 (line 482) | WORD32 ih264_dpb_mgr_alternate_ref_fields(dpb_mgr_t *ps_dpb_mgr,
function WORD32 (line 586) | WORD32 ih264_dpb_mgr_insert_ref_field(dpb_mgr_t *ps_dpb_mgr,
function WORD32 (line 688) | WORD32 ih264_dpb_mgr_insert_ref_frame(dpb_mgr_t *ps_dpb_mgr,
function WORD32 (line 756) | WORD32 ih264_dpb_mgr_count_ref_frames(dpb_mgr_t *ps_dpb_mgr,
function WORD32 (line 849) | WORD32 ih264_dpb_mgr_delete_ref_frame(dpb_mgr_t *ps_dpb_mgr,
function WORD32 (line 982) | WORD32 ih264_dpb_mgr_delete_long_ref_fields_max_frame_idx(dpb_mgr_t *ps_...
function WORD32 (line 1052) | WORD32 ih264_dpb_mgr_delete_short_ref_frame(dpb_mgr_t *ps_dpb_mgr,
function WORD32 (line 1093) | WORD32 ih264_dpb_mgr_delete_all_ref_frames(dpb_mgr_t *ps_dpb_mgr)
function ih264_dpb_mgr_reset (line 1110) | void ih264_dpb_mgr_reset(dpb_mgr_t *ps_dpb_mgr, buf_mgr_t *ps_buf_mgr)
function ih264_dpb_mgr_release_pics (line 1162) | void ih264_dpb_mgr_release_pics(buf_mgr_t *ps_buf_mgr, UWORD8 u1_disp_bufs)
FILE: dependencies/ih264d/common/ih264_dpb_mgr.h
type dpb_info_t (line 50) | typedef struct dpb_info_t dpb_info_t;
type dpb_info_t (line 59) | struct dpb_info_t
type dpb_mgr_t (line 73) | typedef struct
FILE: dependencies/ih264d/common/ih264_error.h
type IH264_ERROR_T (line 47) | typedef enum
FILE: dependencies/ih264d/common/ih264_ihadamard_scaling.c
function ih264_ihadamard_scaling_4x4 (line 88) | void ih264_ihadamard_scaling_4x4(WORD16* pi2_src,
function ih264_ihadamard_scaling_2x2_uv (line 155) | void ih264_ihadamard_scaling_2x2_uv(WORD16* pi2_src,
FILE: dependencies/ih264d/common/ih264_inter_pred_filters.c
function ih264_inter_pred_luma_copy (line 110) | void ih264_inter_pred_luma_copy(UWORD8 *pu1_src,
function ih264_interleave_copy (line 170) | void ih264_interleave_copy(UWORD8 *pu1_src,
function ih264_inter_pred_luma_horz (line 227) | void ih264_inter_pred_luma_horz(UWORD8 *pu1_src,
function ih264_inter_pred_luma_vert (line 297) | void ih264_inter_pred_luma_vert(UWORD8 *pu1_src,
function ih264_inter_pred_luma_horz_hpel_vert_hpel (line 366) | void ih264_inter_pred_luma_horz_hpel_vert_hpel(UWORD8 *pu1_src,
function ih264_inter_pred_luma_horz_qpel (line 451) | void ih264_inter_pred_luma_horz_qpel(UWORD8 *pu1_src,
function ih264_inter_pred_luma_vert_qpel (line 527) | void ih264_inter_pred_luma_vert_qpel(UWORD8 *pu1_src,
function ih264_inter_pred_luma_horz_qpel_vert_qpel (line 610) | void ih264_inter_pred_luma_horz_qpel_vert_qpel(UWORD8 *pu1_src,
function ih264_inter_pred_luma_horz_qpel_vert_hpel (line 711) | void ih264_inter_pred_luma_horz_qpel_vert_hpel(UWORD8 *pu1_src,
function ih264_inter_pred_luma_horz_hpel_vert_qpel (line 826) | void ih264_inter_pred_luma_horz_hpel_vert_qpel(UWORD8 *pu1_src,
function ih264_inter_pred_luma_bilinear (line 947) | void ih264_inter_pred_luma_bilinear(UWORD8 *pu1_src1,
function ih264_inter_pred_chroma (line 1015) | void ih264_inter_pred_chroma(UWORD8 *pu1_src,
FILE: dependencies/ih264d/common/ih264_intra_pred_filters.h
type ih264_intra_pred_luma_ft (line 131) | typedef ih264_intra_pred_luma_ft ih264_intra_pred_chroma_ft;
FILE: dependencies/ih264d/common/ih264_iquant_itrans_recon.c
function ih264_iquant_itrans_recon_4x4 (line 106) | void ih264_iquant_itrans_recon_4x4(WORD16 *pi2_src,
function ih264_iquant_itrans_recon_4x4_dc (line 213) | void ih264_iquant_itrans_recon_4x4_dc(WORD16 *pi2_src,
function ih264_iquant_itrans_recon_8x8 (line 323) | void ih264_iquant_itrans_recon_8x8(WORD16 *pi2_src,
function ih264_iquant_itrans_recon_8x8_dc (line 551) | void ih264_iquant_itrans_recon_8x8_dc(WORD16 *pi2_src,
function ih264_iquant_itrans_recon_chroma_4x4 (line 684) | void ih264_iquant_itrans_recon_chroma_4x4(WORD16 *pi2_src,
function ih264_iquant_itrans_recon_chroma_4x4_dc (line 822) | void ih264_iquant_itrans_recon_chroma_4x4_dc(WORD16 *pi2_src,
FILE: dependencies/ih264d/common/ih264_list.c
function WORD32 (line 83) | WORD32 ih264_list_size(WORD32 num_entries, WORD32 entry_size)
function IH264_ERROR_T (line 116) | IH264_ERROR_T ih264_list_lock(list_t *ps_list)
function IH264_ERROR_T (line 146) | IH264_ERROR_T ih264_list_unlock(list_t *ps_list)
function IH264_ERROR_T (line 179) | IH264_ERROR_T ih264_list_yield(list_t *ps_list)
function IH264_ERROR_T (line 217) | IH264_ERROR_T ih264_list_free(list_t *ps_list)
function IH264_ERROR_T (line 309) | IH264_ERROR_T ih264_list_reset(list_t *ps_list)
function IH264_ERROR_T (line 344) | IH264_ERROR_T ih264_list_deinit(list_t *ps_list)
function IH264_ERROR_T (line 381) | IH264_ERROR_T ih264_list_terminate(list_t *ps_list)
function IH264_ERROR_T (line 425) | IH264_ERROR_T ih264_list_queue(list_t *ps_list, void *pv_buf, WORD32 blo...
function IH264_ERROR_T (line 514) | IH264_ERROR_T ih264_list_dequeue(list_t *ps_list, void *pv_buf, WORD32 b...
FILE: dependencies/ih264d/common/ih264_list.h
type list_t (line 42) | typedef struct
FILE: dependencies/ih264d/common/ih264_luma_intra_pred_filters.c
function ih264_intra_pred_luma_4x4_mode_vert (line 129) | void ih264_intra_pred_luma_4x4_mode_vert(UWORD8 *pu1_src,
function ih264_intra_pred_luma_4x4_mode_horz (line 179) | void ih264_intra_pred_luma_4x4_mode_horz(UWORD8 *pu1_src,
function ih264_intra_pred_luma_4x4_mode_dc (line 229) | void ih264_intra_pred_luma_4x4_mode_dc(UWORD8 *pu1_src,
function ih264_intra_pred_luma_4x4_mode_diag_dl (line 302) | void ih264_intra_pred_luma_4x4_mode_diag_dl(UWORD8 *pu1_src,
function ih264_intra_pred_luma_4x4_mode_diag_dr (line 370) | void ih264_intra_pred_luma_4x4_mode_diag_dr(UWORD8 *pu1_src,
function ih264_intra_pred_luma_4x4_mode_vert_r (line 443) | void ih264_intra_pred_luma_4x4_mode_vert_r(UWORD8 *pu1_src,
function ih264_intra_pred_luma_4x4_mode_horz_d (line 519) | void ih264_intra_pred_luma_4x4_mode_horz_d(UWORD8 *pu1_src,
function ih264_intra_pred_luma_4x4_mode_vert_l (line 594) | void ih264_intra_pred_luma_4x4_mode_vert_l(UWORD8 *pu1_src,
function ih264_intra_pred_luma_4x4_mode_horz_u (line 664) | void ih264_intra_pred_luma_4x4_mode_horz_u(UWORD8 *pu1_src,
function ih264_intra_pred_luma_8x8_mode_ref_filtering (line 734) | void ih264_intra_pred_luma_8x8_mode_ref_filtering(UWORD8 *pu1_left,
function ih264_intra_pred_luma_8x8_mode_vert (line 880) | void ih264_intra_pred_luma_8x8_mode_vert(UWORD8 *pu1_src,
function ih264_intra_pred_luma_8x8_mode_horz (line 935) | void ih264_intra_pred_luma_8x8_mode_horz(UWORD8 *pu1_src,
function ih264_intra_pred_luma_8x8_mode_dc (line 986) | void ih264_intra_pred_luma_8x8_mode_dc(UWORD8 *pu1_src,
function ih264_intra_pred_luma_8x8_mode_diag_dl (line 1064) | void ih264_intra_pred_luma_8x8_mode_diag_dl(UWORD8 *pu1_src,
function ih264_intra_pred_luma_8x8_mode_diag_dr (line 1153) | void ih264_intra_pred_luma_8x8_mode_diag_dr(UWORD8 *pu1_src,
function ih264_intra_pred_luma_8x8_mode_vert_r (line 1248) | void ih264_intra_pred_luma_8x8_mode_vert_r(UWORD8 *pu1_src,
function ih264_intra_pred_luma_8x8_mode_horz_d (line 1353) | void ih264_intra_pred_luma_8x8_mode_horz_d(UWORD8 *pu1_src,
function ih264_intra_pred_luma_8x8_mode_vert_l (line 1455) | void ih264_intra_pred_luma_8x8_mode_vert_l(UWORD8 *pu1_src,
function ih264_intra_pred_luma_8x8_mode_horz_u (line 1549) | void ih264_intra_pred_luma_8x8_mode_horz_u(UWORD8 *pu1_src,
function ih264_intra_pred_luma_16x16_mode_vert (line 1636) | void ih264_intra_pred_luma_16x16_mode_vert(UWORD8 *pu1_src,
function ih264_intra_pred_luma_16x16_mode_horz (line 1693) | void ih264_intra_pred_luma_16x16_mode_horz(UWORD8 *pu1_src,
function ih264_intra_pred_luma_16x16_mode_dc (line 1753) | void ih264_intra_pred_luma_16x16_mode_dc(UWORD8 *pu1_src,
function ih264_intra_pred_luma_16x16_mode_plane (line 1832) | void ih264_intra_pred_luma_16x16_mode_plane(UWORD8 *pu1_src,
FILE: dependencies/ih264d/common/ih264_mem_fns.c
function ih264_memcpy (line 85) | void ih264_memcpy(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes)
function ih264_memcpy_mul_8 (line 91) | void ih264_memcpy_mul_8(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_by...
function ih264_memset (line 121) | void ih264_memset(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes)
function ih264_memset_mul_8 (line 127) | void ih264_memset_mul_8(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes)
function ih264_memset_16bit (line 157) | void ih264_memset_16bit(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words)
function ih264_memset_16bit_mul_8 (line 166) | void ih264_memset_16bit_mul_8(UWORD16 *pu2_dst,
FILE: dependencies/ih264d/common/ih264_padding.c
function ih264_pad_top (line 90) | void ih264_pad_top(UWORD8 *pu1_src,
function ih264_pad_bottom (line 131) | void ih264_pad_bottom(UWORD8 *pu1_src,
function ih264_pad_left_luma (line 170) | void ih264_pad_left_luma(UWORD8 *pu1_src,
function ih264_pad_left_chroma (line 212) | void ih264_pad_left_chroma(UWORD8 *pu1_src,
function ih264_pad_right_luma (line 266) | void ih264_pad_right_luma(UWORD8 *pu1_src,
function ih264_pad_right_chroma (line 307) | void ih264_pad_right_chroma(UWORD8 *pu1_src,
FILE: dependencies/ih264d/common/ih264_resi_trans_quant.c
function ih264_resi_trans_quant_4x4 (line 112) | void ih264_resi_trans_quant_4x4(UWORD8 *pu1_src,
function ih264_resi_trans_quant_chroma_4x4 (line 260) | void ih264_resi_trans_quant_chroma_4x4(UWORD8 *pu1_src,
function ih264_hadamard_quant_4x4 (line 413) | void ih264_hadamard_quant_4x4(WORD16 *pi2_src,
function ih264_hadamard_quant_2x2_uv (line 542) | void ih264_hadamard_quant_2x2_uv(WORD16 *pi2_src,
function ih264_resi_trans_quant_8x8 (line 646) | void ih264_resi_trans_quant_8x8(UWORD8 *pu1_src,
FILE: dependencies/ih264d/common/ih264_structs.h
type intra_mbtype_info_t (line 44) | typedef struct
type inter_mbtype_info_t (line 54) | typedef struct
type submbtype_info_t (line 65) | typedef struct
type pic_buf_t (line 76) | typedef struct
type ref_list_t (line 121) | typedef struct
type mv_t (line 133) | typedef struct
type pu_mv_t (line 157) | typedef struct
type pu_t (line 194) | typedef struct
type mb_t (line 238) | typedef struct
type mb_top_ny_info_t (line 269) | typedef struct
type mb_ctxt_t (line 300) | typedef struct _mb_ctxt_t
type quant_params_t (line 486) | typedef struct
type nal_header_t (line 545) | typedef struct
type hrd_params_t (line 563) | typedef struct
type vui_t (line 628) | typedef struct
type sps_t (line 816) | typedef struct
type pps_t (line 1051) | typedef struct
type mmco_prms_t (line 1181) | typedef struct
type rplm_t (line 1214) | typedef struct
type slice_header_t (line 1258) | typedef struct
type tu_sblk2x2_coeff_data_t (line 1544) | typedef struct
type tu_sblk4x4_coeff_data_t (line 1565) | typedef struct
type tu_blk8x8_coeff_data_t (line 1586) | typedef struct
type tu_ipcm_coeff_data_t (line 1609) | typedef struct
type intra_mb_t (line 1618) | typedef struct
type inter_mb_t (line 1685) | typedef struct
type sei_mdcv_params_t (line 1725) | typedef struct
type sei_cll_params_t (line 1763) | typedef struct
type sei_ave_params_t (line 1780) | typedef struct
type sei_ccv_params_t (line 1804) | typedef struct
type sei_params_t (line 1874) | typedef struct
FILE: dependencies/ih264d/common/ih264_typedefs.h
type UWORD8 (line 44) | typedef uint8_t UWORD8;
type UWORD16 (line 45) | typedef uint16_t UWORD16;
type UWORD32 (line 46) | typedef uint32_t UWORD32;
type UWORD64 (line 47) | typedef uint64_t UWORD64;
type WORD8 (line 53) | typedef int8_t WORD8;
type WORD16 (line 54) | typedef int16_t WORD16;
type WORD32 (line 55) | typedef int32_t WORD32;
type WORD64 (line 56) | typedef int64_t WORD64;
type CHAR (line 61) | typedef char CHAR;
type DOUBLE (line 62) | typedef double DOUBLE;
FILE: dependencies/ih264d/common/ih264_weighted_pred.c
function ih264_default_weighted_pred_luma (line 85) | void ih264_default_weighted_pred_luma(UWORD8 *pu1_src1,
function ih264_default_weighted_pred_chroma (line 140) | void ih264_default_weighted_pred_chroma(UWORD8 *pu1_src1,
function ih264_weighted_pred_luma (line 199) | void ih264_weighted_pred_luma(UWORD8 *pu1_src,
function ih264_weighted_pred_chroma (line 273) | void ih264_weighted_pred_chroma(UWORD8 *pu1_src,
function ih264_weighted_bi_pred_luma (line 366) | void ih264_weighted_bi_pred_luma(UWORD8 *pu1_src1,
function ih264_weighted_bi_pred_chroma (line 442) | void ih264_weighted_bi_pred_chroma(UWORD8 *pu1_src1,
FILE: dependencies/ih264d/common/ithread.c
function UWORD32 (line 78) | UWORD32 ithread_get_handle_size(void)
function UWORD32 (line 83) | UWORD32 ithread_get_mutex_lock_size(void)
type _ithread_launch_param (line 88) | struct _ithread_launch_param
function DWORD (line 94) | DWORD WINAPI _ithread_WinThreadStartRoutine(LPVOID lpThreadParameter)
function WORD32 (line 105) | WORD32 ithread_create(void* thread_handle, void* attribute, void* strt, ...
function WORD32 (line 120) | WORD32 ithread_join(void* thread_handle, void** val_ptr)
function WORD32 (line 136) | WORD32 ithread_get_mutex_struct_size(void)
function WORD32 (line 141) | WORD32 ithread_mutex_init(void* mutex)
function WORD32 (line 147) | WORD32 ithread_mutex_destroy(void* mutex)
function WORD32 (line 152) | WORD32 ithread_mutex_lock(void* mutex)
function WORD32 (line 158) | WORD32 ithread_mutex_unlock(void* mutex)
function ithread_yield (line 164) | void ithread_yield(void)
function ithread_msleep (line 169) | void ithread_msleep(UWORD32 u4_time_ms)
function ithread_usleep (line 174) | void ithread_usleep(UWORD32 u4_time_us)
function UWORD32 (line 180) | UWORD32 ithread_get_sem_struct_size(void)
function WORD32 (line 187) | WORD32 ithread_sem_init(void* sem, WORD32 pshared, UWORD32 value)
function WORD32 (line 194) | WORD32 ithread_sem_post(void* sem)
function WORD32 (line 201) | WORD32 ithread_sem_wait(void* sem)
function WORD32 (line 208) | WORD32 ithread_sem_destroy(void* sem)
function ithread_set_name (line 215) | void ithread_set_name(CHAR* pc_thread_name)
function WORD32 (line 220) | WORD32 ithread_set_affinity(WORD32 core_id)
function UWORD32 (line 259) | UWORD32 ithread_get_handle_size(void)
function UWORD32 (line 264) | UWORD32 ithread_get_mutex_lock_size(void)
function WORD32 (line 269) | WORD32 ithread_create(void* thread_handle, void* attribute, void* strt, ...
function WORD32 (line 275) | WORD32 ithread_join(void* thread_handle, void** val_ptr)
function WORD32 (line 282) | WORD32 ithread_get_mutex_struct_size(void)
function WORD32 (line 286) | WORD32 ithread_mutex_init(void* mutex)
function WORD32 (line 291) | WORD32 ithread_mutex_destroy(void* mutex)
function WORD32 (line 296) | WORD32 ithread_mutex_lock(void* mutex)
function WORD32 (line 301) | WORD32 ithread_mutex_unlock(void* mutex)
function ithread_yield (line 306) | void ithread_yield(void)
function ithread_msleep (line 311) | void ithread_msleep(UWORD32 u4_time_ms)
function UWORD32 (line 316) | UWORD32 ithread_get_sem_struct_size(void)
function WORD32 (line 322) | WORD32 ithread_sem_init(void* sem, WORD32 pshared, UWORD32 value)
function WORD32 (line 327) | WORD32 ithread_sem_post(void* sem)
function WORD32 (line 333) | WORD32 ithread_sem_wait(void* sem)
function WORD32 (line 339) | WORD32 ithread_sem_destroy(void* sem)
function ithread_set_name (line 344) | void ithread_set_name(CHAR* pc_thread_name)
function WORD32 (line 349) | WORD32 ithread_set_affinity(WORD32 core_id)
FILE: dependencies/ih264d/common/mips/ih264_platform_macros.h
function UWORD32 (line 85) | static __inline UWORD32 CLZ(UWORD32 u4_word)
function UWORD32 (line 93) | static __inline UWORD32 CTZ(UWORD32 u4_word)
FILE: dependencies/ih264d/common/x86/ih264_chroma_intra_pred_filters_ssse3.c
function ATTRIBUTE_SSSE3 (line 102) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 180) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 250) | ATTRIBUTE_SSSE3
FILE: dependencies/ih264d/common/x86/ih264_deblk_chroma_ssse3.c
function ATTRIBUTE_SSSE3 (line 101) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 286) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 438) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 661) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 847) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 983) | ATTRIBUTE_SSSE3
FILE: dependencies/ih264d/common/x86/ih264_deblk_luma_ssse3.c
function ATTRIBUTE_SSSE3 (line 96) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 518) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 858) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1154) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1452) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1772) | ATTRIBUTE_SSSE3
FILE: dependencies/ih264d/common/x86/ih264_ihadamard_scaling_sse42.c
function ATTRIBUTE_SSE42 (line 96) | ATTRIBUTE_SSE42
function ATTRIBUTE_SSE42 (line 212) | ATTRIBUTE_SSE42
FILE: dependencies/ih264d/common/x86/ih264_ihadamard_scaling_ssse3.c
function ATTRIBUTE_SSSE3 (line 94) | ATTRIBUTE_SSSE3
FILE: dependencies/ih264d/common/x86/ih264_inter_pred_filters_ssse3.c
function ATTRIBUTE_SSSE3 (line 96) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 223) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 489) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 776) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1501) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1796) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 2122) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 2691) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 3302) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 4009) | ATTRIBUTE_SSSE3
FILE: dependencies/ih264d/common/x86/ih264_iquant_itrans_recon_dc_ssse3.c
function ATTRIBUTE_SSSE3 (line 107) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 234) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 396) | ATTRIBUTE_SSSE3
FILE: dependencies/ih264d/common/x86/ih264_iquant_itrans_recon_sse42.c
function ATTRIBUTE_SSE42 (line 106) | ATTRIBUTE_SSE42
function ATTRIBUTE_SSE42 (line 358) | ATTRIBUTE_SSE42
FILE: dependencies/ih264d/common/x86/ih264_iquant_itrans_recon_ssse3.c
function ATTRIBUTE_SSSE3 (line 106) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 376) | ATTRIBUTE_SSSE3
FILE: dependencies/ih264d/common/x86/ih264_luma_intra_pred_filters_ssse3.c
function ATTRIBUTE_SSSE3 (line 123) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 183) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 249) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 328) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 413) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 501) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 594) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 691) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 781) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 882) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 940) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1005) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1099) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1198) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1301) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1422) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1527) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1624) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1726) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1806) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 1904) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 2028) | ATTRIBUTE_SSSE3
FILE: dependencies/ih264d/common/x86/ih264_mem_fns_ssse3.c
function ATTRIBUTE_SSSE3 (line 87) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 127) | ATTRIBUTE_SSSE3
function ih264_memset_16bit_mul_8_ssse3 (line 166) | void ih264_memset_16bit_mul_8_ssse3(UWORD16 *pu2_dst, UWORD16 value, UWO...
FILE: dependencies/ih264d/common/x86/ih264_padding_ssse3.c
function ATTRIBUTE_SSSE3 (line 98) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 166) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 233) | ATTRIBUTE_SSSE3
function ATTRIBUTE_SSSE3 (line 301) | ATTRIBUTE_SSSE3
FILE: dependencies/ih264d/common/x86/ih264_platform_macros.h
function __builtin_clz (line 79) | static inline int __builtin_clz(unsigned x)
function __builtin_ctz (line 86) | static inline int __builtin_ctz(unsigned x) {
function __sync_synchronize (line 92) | static inline void __sync_synchronize() {
function UWORD32 (line 109) | static __inline UWORD32 CLZ(UWORD32 u4_word)
function UWORD32 (line 117) | static __inline UWORD32 CTZ(UWORD32 u4_word)
FILE: dependencies/ih264d/common/x86/ih264_resi_trans_quant_sse42.c
function ATTRIBUTE_SSE42 (line 112) | ATTRIBUTE_SSE42
function ATTRIBUTE_SSE42 (line 386) | ATTRIBUTE_SSE42
function ATTRIBUTE_SSE42 (line 674) | ATTRIBUTE_SSE42
function ATTRIBUTE_SSE42 (line 904) | ATTRIBUTE_SSE42
FILE: dependencies/ih264d/common/x86/ih264_weighted_pred_sse42.c
function ATTRIBUTE_SSE42 (line 91) | ATTRIBUTE_SSE42
function ATTRIBUTE_SSE42 (line 255) | ATTRIBUTE_SSE42
function ATTRIBUTE_SSE42 (line 386) | ATTRIBUTE_SSE42
function ATTRIBUTE_SSE42 (line 617) | ATTRIBUTE_SSE42
function ATTRIBUTE_SSE42 (line 827) | ATTRIBUTE_SSE42
function ATTRIBUTE_SSE42 (line 1115) | ATTRIBUTE_SSE42
FILE: dependencies/ih264d/decoder/arm/ih264d_function_selector.c
function ih264d_init_function_ptr (line 57) | void ih264d_init_function_ptr(dec_struct_t *ps_codec)
function ih264d_init_arch (line 86) | void ih264d_init_arch(dec_struct_t *ps_codec)
FILE: dependencies/ih264d/decoder/arm/ih264d_function_selector_a9q.c
function ih264d_init_function_ptr_a9q (line 82) | void ih264d_init_function_ptr_a9q(dec_struct_t *ps_codec)
FILE: dependencies/ih264d/decoder/arm/ih264d_function_selector_av8.c
function ih264d_init_function_ptr_av8 (line 83) | void ih264d_init_function_ptr_av8(dec_struct_t *ps_codec)
FILE: dependencies/ih264d/decoder/ih264d.h
type IH264D_ERROR_CODES_T (line 79) | typedef enum {
type ih264d_delete_ip_t (line 95) | typedef struct {
type ih264d_delete_op_t (line 100) | typedef struct{
type ih264d_create_ip_t (line 110) | typedef struct {
type ih264d_create_op_t (line 115) | typedef struct{
type ih264d_video_decode_ip_t (line 125) | typedef struct {
type ih264d_video_decode_op_t (line 130) | typedef struct{
type ih264d_get_display_frame_ip_t (line 140) | typedef struct
type ih264d_get_display_frame_op_t (line 146) | typedef struct
type ih264d_set_display_frame_ip_t (line 156) | typedef struct
type ih264d_set_display_frame_op_t (line 162) | typedef struct
type ih264d_rel_display_frame_ip_t (line 172) | typedef struct
type ih264d_rel_display_frame_op_t (line 178) | typedef struct
type IH264D_CMD_CTL_SUB_CMDS (line 184) | typedef enum {
type ih264d_ctl_flush_ip_t (line 221) | typedef struct{
type ih264d_ctl_flush_op_t (line 226) | typedef struct{
type ih264d_ctl_reset_ip_t (line 235) | typedef struct{
type ih264d_ctl_reset_op_t (line 240) | typedef struct{
type ih264d_ctl_set_config_ip_t (line 250) | typedef struct {
type ih264d_ctl_set_config_op_t (line 255) | typedef struct{
type ih264d_ctl_getbufinfo_ip_t (line 264) | typedef struct{
type ih264d_ctl_getbufinfo_op_t (line 270) | typedef struct{
type ih264d_ctl_getstatus_ip_t (line 280) | typedef struct{
type ih264d_ctl_getstatus_op_t (line 286) | typedef struct{
type ih264d_ctl_getversioninfo_ip_t (line 296) | typedef struct{
type ih264d_ctl_getversioninfo_op_t (line 302) | typedef struct{
type ih264d_ctl_degrade_ip_t (line 306) | typedef struct{
type ih264d_ctl_degrade_op_t (line 348) | typedef struct
type ih264d_ctl_disable_deblock_ip_t (line 361) | typedef struct{
type ih264d_ctl_disable_deblock_op_t (line 368) | typedef struct{
type ih264d_ctl_set_num_cores_ip_t (line 374) | typedef struct{
type ih264d_ctl_set_num_cores_op_t (line 381) | typedef struct{
type ih264d_ctl_set_processor_ip_t (line 386) | typedef struct
type ih264d_ctl_set_processor_op_t (line 416) | typedef struct
type ih264d_ctl_get_frame_dimensions_ip_t (line 428) | typedef struct{
type ih264d_ctl_get_frame_dimensions_op_t (line 435) | typedef struct{
type ih264d_ctl_get_vui_params_ip_t (line 446) | typedef struct
type ih264d_ctl_get_vui_params_op_t (line 453) | typedef struct
type ih264d_ctl_get_sei_mdcv_params_ip_t (line 486) | typedef struct
type ih264d_ctl_get_sei_mdcv_params_op_t (line 504) | typedef struct
type ih264d_ctl_get_sei_cll_params_ip_t (line 547) | typedef struct
type ih264d_ctl_get_sei_cll_params_op_t (line 565) | typedef struct
type ih264d_ctl_get_sei_ave_params_ip_t (line 588) | typedef struct
type ih264d_ctl_get_sei_ave_params_op_t (line 606) | typedef struct
type ih264d_ctl_get_sei_ccv_params_ip_t (line 636) | typedef struct
type ih264d_ctl_get_sei_ccv_params_op_t (line 654) | typedef struct
FILE: dependencies/ih264d/decoder/ih264d_api.c
function ih264d_export_sei_params (line 187) | void ih264d_export_sei_params(ivd_sei_decode_op_t *ps_sei_decode_op, dec...
function IV_API_CALL_STATUS_T (line 200) | static IV_API_CALL_STATUS_T api_check_struct_sanity(iv_obj_t *ps_handle,
function WORD32 (line 1029) | WORD32 ih264d_set_processor(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv...
function ih264d_init_decoder (line 1070) | void ih264d_init_decoder(void * ps_dec_params)
function WORD32 (line 1327) | WORD32 ih264d_free_static_bufs(iv_obj_t *dec_hdl)
function WORD32 (line 1395) | WORD32 ih264d_allocate_static_bufs(iv_obj_t **dec_hdl, void *pv_api_ip, ...
function WORD32 (line 1683) | WORD32 ih264d_create(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op)
function UWORD32 (line 1744) | UWORD32 ih264d_map_error(UWORD32 i4_err_status)
function UWORD32 (line 1840) | UWORD32 ih264d_get_outbuf_size(WORD32 pic_wd,
function WORD32 (line 1884) | WORD32 check_app_out_buf_size(dec_struct_t *ps_dec)
function WORD32 (line 1964) | WORD32 ih264d_video_decode(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_...
function WORD32 (line 2726) | WORD32 ih264d_get_version(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_a...
function WORD32 (line 2782) | WORD32 ih264d_get_display_frame(iv_obj_t *dec_hdl,
function WORD32 (line 2814) | WORD32 ih264d_set_display_frame(iv_obj_t *dec_hdl,
function WORD32 (line 2913) | WORD32 ih264d_set_flush_mode(iv_obj_t *dec_hdl, void *pv_api_ip, void *p...
function WORD32 (line 2961) | WORD32 ih264d_get_status(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_ap...
function WORD32 (line 3137) | WORD32 ih264d_get_buf_info(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_...
function WORD32 (line 3254) | WORD32 ih264d_set_params(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_ap...
function WORD32 (line 3348) | WORD32 ih264d_set_default_params(iv_obj_t *dec_hdl,
function WORD32 (line 3394) | WORD32 ih264d_delete(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op)
function WORD32 (line 3428) | WORD32 ih264d_reset(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op)
function WORD32 (line 3471) | WORD32 ih264d_ctl(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv_api_op)
function WORD32 (line 3583) | WORD32 ih264d_rel_display_frame(iv_obj_t *dec_hdl,
function WORD32 (line 3652) | WORD32 ih264d_set_degrade(iv_obj_t *ps_codec_obj,
function WORD32 (line 3673) | WORD32 ih264d_get_frame_dimensions(iv_obj_t *dec_hdl,
function WORD32 (line 3778) | WORD32 ih264d_get_vui_params(iv_obj_t *dec_hdl,
function WORD32 (line 3863) | WORD32 ih264d_get_sei_mdcv_params(iv_obj_t *dec_hdl,
function WORD32 (line 3919) | WORD32 ih264d_get_sei_cll_params(iv_obj_t *dec_hdl,
function WORD32 (line 3966) | WORD32 ih264d_get_sei_ave_params(iv_obj_t *dec_hdl,
function WORD32 (line 4014) | WORD32 ih264d_get_sei_ccv_params(iv_obj_t *dec_hdl,
function WORD32 (line 4076) | WORD32 ih264d_set_num_cores(iv_obj_t *dec_hdl, void *pv_api_ip, void *pv...
function ih264d_fill_output_struct_from_context (line 4102) | void ih264d_fill_output_struct_from_context(dec_struct_t *ps_dec,
function IV_API_CALL_STATUS_T (line 4156) | IV_API_CALL_STATUS_T ih264d_api_function(iv_obj_t *dec_hdl,
FILE: dependencies/ih264d/decoder/ih264d_bitstrm.c
function UWORD8 (line 63) | UWORD8 ih264d_get_bit_h264(dec_bit_stream_t *ps_stream)
function UWORD32 (line 90) | UWORD32 ih264d_get_bits_h264(dec_bit_stream_t *ps_bitstrm, UWORD32 u4_nu...
function UWORD32 (line 115) | UWORD32 ih264d_next_bits_h264(dec_bit_stream_t *ps_bitstrm, UWORD32 u4_n...
function WORD32 (line 150) | WORD32 ih264d_flush_bits_h264(dec_bit_stream_t *ps_bitstrm, WORD32 u4_nu...
function UWORD8 (line 175) | UWORD8 ih264d_check_byte_aligned(dec_bit_stream_t * ps_bitstrm)
FILE: dependencies/ih264d/decoder/ih264d_bitstrm.h
type dec_bit_stream_t (line 56) | typedef struct
FILE: dependencies/ih264d/decoder/ih264d_cabac.c
function WORD32 (line 62) | WORD32 ih264d_init_cabac_dec_envirnoment(decoding_envirnoment_t * ps_cab...
function ih264d_init_cabac_contexts (line 123) | void ih264d_init_cabac_contexts(UWORD8 u1_slice_type, dec_struct_t * ps_...
function UWORD32 (line 232) | UWORD32 ih264d_decode_bin(UWORD32 u4_ctx_inc,
function UWORD8 (line 313) | UWORD8 ih264d_decode_terminate(decoding_envirnoment_t * ps_cab_env,
function UWORD32 (line 388) | UWORD32 ih264d_decode_bins_tunary(UWORD8 u1_max_bins,
function UWORD32 (line 459) | UWORD32 ih264d_decode_bins(UWORD8 u1_max_bins,
function UWORD32 (line 528) | UWORD32 ih264d_decode_bins_unary(UWORD8 u1_max_bins,
function UWORD32 (line 620) | UWORD32 ih264d_decode_bypass_bins_unary(decoding_envirnoment_t *ps_cab_env,
function UWORD32 (line 713) | UWORD32 ih264d_decode_bypass_bins(decoding_envirnoment_t *ps_cab_env,
FILE: dependencies/ih264d/decoder/ih264d_cabac.h
type bin_ctxt_model_t (line 89) | typedef struct
type ctxt_inc_mb_info_t (line 94) | typedef struct
type decoding_envirnoment_t (line 116) | typedef struct
FILE: dependencies/ih264d/decoder/ih264d_compute_bs.c
function UWORD16 (line 31) | UWORD16 ih264d_update_csbp_8x8(UWORD16 u2_luma_csbp)
function ih264d_fill_bs2_horz_vert (line 110) | void ih264d_fill_bs2_horz_vert(UWORD32 *pu4_bs, /* Base pointer of BS ta...
function ih264d_fill_bs1_16x16mb_pslice (line 198) | void ih264d_fill_bs1_16x16mb_pslice(mv_pred_t *ps_cur_mv_pred,
function ih264d_fill_bs1_non16x16mb_pslice (line 339) | void ih264d_fill_bs1_non16x16mb_pslice(mv_pred_t *ps_cur_mv_pred,
function ih264d_fill_bs1_16x16mb_bslice (line 524) | void ih264d_fill_bs1_16x16mb_bslice(mv_pred_t *ps_cur_mv_pred,
function ih264d_fill_bs1_non16x16mb_bslice (line 710) | void ih264d_fill_bs1_non16x16mb_bslice(mv_pred_t *ps_cur_mv_pred,
function ih264d_fill_bs_xtra_left_edge_cur_fld (line 958) | void ih264d_fill_bs_xtra_left_edge_cur_fld(UWORD32 *pu4_bs, /* Base poin...
function ih264d_fill_bs_xtra_left_edge_cur_frm (line 1031) | void ih264d_fill_bs_xtra_left_edge_cur_frm(UWORD32 *pu4_bs, /* Base poin...
function ih264d_fill_bs_xtra_top_edge (line 1099) | void ih264d_fill_bs_xtra_top_edge(UWORD32 *pu4_bs, /* Base pointer of BS...
function ih264d_compute_bs_non_mbaff (line 1143) | void ih264d_compute_bs_non_mbaff(dec_struct_t * ps_dec,
function ih264d_compute_bs_mbaff (line 1388) | void ih264d_compute_bs_mbaff(dec_struct_t * ps_dec,
function ih264d_fill_bs_for_mb (line 1778) | void ih264d_fill_bs_for_mb(deblk_mb_t * ps_cur_mb_params,
function ih264d_fill_bs_for_extra_left_edge (line 2066) | void ih264d_fill_bs_for_extra_left_edge(deblk_mb_t *ps_cur_deblk_mb,
function ih264d_fill_bs_for_extra_top_edge (line 2206) | void ih264d_fill_bs_for_extra_top_edge(deblk_mb_t *ps_cur_mb_params,
function ih264d_fill_bs_mbedge_4 (line 2247) | void ih264d_fill_bs_mbedge_4(dec_struct_t * ps_dec,
function ih264d_fill_bs_mbedge_2 (line 2309) | void ih264d_fill_bs_mbedge_2(dec_struct_t * ps_dec,
FILE: dependencies/ih264d/decoder/ih264d_deblocking.c
function ih264d_filter_boundary_left_nonmbaff (line 77) | void ih264d_filter_boundary_left_nonmbaff(dec_struct_t *ps_dec,
function ih264d_filter_boundary_top_nonmbaff (line 301) | void ih264d_filter_boundary_top_nonmbaff(dec_struct_t *ps_dec,
function ih264d_deblock_mb_nonmbaff (line 393) | void ih264d_deblock_mb_nonmbaff(dec_struct_t *ps_dec,
function ih264d_init_deblk_tfr_ctxt (line 629) | void ih264d_init_deblk_tfr_ctxt(dec_struct_t * ps_dec,
function ih264d_deblock_picture_mbaff (line 697) | void ih264d_deblock_picture_mbaff(dec_struct_t * ps_dec)
function ih264d_deblock_picture_non_mbaff (line 985) | void ih264d_deblock_picture_non_mbaff(dec_struct_t * ps_dec)
function ih264d_deblock_picture_progressive (line 1102) | void ih264d_deblock_picture_progressive(dec_struct_t * ps_dec)
function WORD8 (line 1233) | WORD8 ih264d_set_deblocking_parameters(deblk_mb_t * ps_cur_mb,
function ih264d_copy_intra_pred_line (line 1267) | void ih264d_copy_intra_pred_line(dec_struct_t *ps_dec,
function ih264d_filter_boundary_left_mbaff (line 1338) | void ih264d_filter_boundary_left_mbaff(dec_struct_t *ps_dec,
function ih264d_filter_boundary_topmbaff (line 1552) | void ih264d_filter_boundary_topmbaff(dec_struct_t *ps_dec,
function ih264d_deblock_mb_mbaff (line 1643) | void ih264d_deblock_mb_mbaff(dec_struct_t *ps_dec,
FILE: dependencies/ih264d/decoder/ih264d_dpb_manager.h
type field_t (line 54) | struct field_t
type dpb_info_t (line 70) | struct dpb_info_t
type dpb_manager_t (line 87) | typedef struct
type MMCParams (line 113) | struct MMCParams
type dpb_commands_t (line 121) | typedef struct
type pic_buffer_t (line 137) | struct pic_buffer_t
type pic_buffer_t (line 147) | struct pic_buffer_t
FILE: dependencies/ih264d/decoder/ih264d_dpb_mgr.c
function ih264d_init_ref_bufs (line 69) | void ih264d_init_ref_bufs(dpb_manager_t *ps_dpb_mgr)
function ih264d_free_ref_pic_mv_bufs (line 106) | void ih264d_free_ref_pic_mv_bufs(void* pv_dec, UWORD8 pic_buf_id)
function WORD32 (line 135) | WORD32 ih264d_delete_lt_node(dpb_manager_t *ps_dpb_mgr,
function WORD32 (line 248) | WORD32 ih264d_insert_lt_node(dpb_manager_t *ps_dpb_mgr,
function WORD32 (line 364) | WORD32 ih264d_insert_st_node(dpb_manager_t *ps_dpb_mgr,
function WORD32 (line 453) | WORD32 ih264d_delete_st_node_or_make_lt(dpb_manager_t *ps_dpb_mgr,
function ih264d_reset_ref_bufs (line 624) | void ih264d_reset_ref_bufs(dpb_manager_t *ps_dpb_mgr)
function WORD32 (line 675) | WORD32 ih264d_update_default_index_list(dpb_manager_t *ps_dpb_mgr)
function WORD32 (line 717) | WORD32 ih264d_ref_idx_reordering(dec_struct_t *ps_dec, UWORD8 uc_lx)
function WORD32 (line 854) | WORD32 ih264d_read_mmco_commands(struct _DecStruct * ps_dec)
function WORD32 (line 996) | WORD32 ih264d_do_mmco_buffer(dpb_commands_t *ps_dpb_cmds,
function ih264d_release_pics_in_dpb (line 1404) | void ih264d_release_pics_in_dpb(void *pv_dec,
function WORD32 (line 1446) | WORD32 ih264d_delete_gap_frm_sliding(dpb_manager_t *ps_dpb_mgr,
function WORD32 (line 1600) | WORD32 ih264d_delete_gap_frm_mmco(dpb_manager_t *ps_dpb_mgr,
function WORD32 (line 1705) | WORD32 ih264d_do_mmco_for_gaps(dpb_manager_t *ps_dpb_mgr,
function WORD32 (line 1858) | WORD32 ih264d_free_node_from_dpb(dpb_manager_t *ps_dpb_mgr,
function ih264d_delete_nonref_nondisplay_pics (line 1994) | void ih264d_delete_nonref_nondisplay_pics(dpb_manager_t *ps_dpb_mgr)
function WORD32 (line 2035) | WORD32 ih264d_insert_pic_in_display_list(dpb_manager_t *ps_dpb_mgr,
FILE: dependencies/ih264d/decoder/ih264d_error_handler.h
type h264_decoder_error_code_t (line 43) | typedef enum
FILE: dependencies/ih264d/decoder/ih264d_format_conv.c
function ih264d_fmt_conv_420sp_to_rgb565 (line 108) | void ih264d_fmt_conv_420sp_to_rgb565(UWORD8 *pu1_y_src,
function ih264d_fmt_conv_420sp_to_rgba8888 (line 222) | void ih264d_fmt_conv_420sp_to_rgba8888(UWORD8 *pu1_y_src,
function ih264d_fmt_conv_420sp_to_420sp (line 373) | void ih264d_fmt_conv_420sp_to_420sp(UWORD8 *pu1_y_src,
function ih264d_fmt_conv_420sp_to_420sp_swap_uv (line 470) | void ih264d_fmt_conv_420sp_to_420sp_swap_uv(UWORD8 *pu1_y_src,
function ih264d_fmt_conv_420sp_to_420p (line 578) | void ih264d_fmt_conv_420sp_to_420p(UWORD8 *pu1_y_src,
function ih264d_format_convert (line 668) | void ih264d_format_convert(dec_struct_t *ps_dec,
FILE: dependencies/ih264d/decoder/ih264d_function_selector_generic.c
function ih264d_init_function_ptr_generic (line 81) | void ih264d_init_function_ptr_generic(dec_struct_t *ps_codec)
FILE: dependencies/ih264d/decoder/ih264d_inter_pred.c
function ih264d_copy_multiplex_data (line 55) | void ih264d_copy_multiplex_data(UWORD8 *puc_Source,
function ih264d_copy_2d1d (line 84) | void ih264d_copy_2d1d(UWORD8 *puc_src,
function ih264d_fill_pred_info (line 110) | void ih264d_fill_pred_info(WORD16 *pi2_mv,WORD32 part_width,WORD32 part_...
function WORD32 (line 172) | WORD32 ih264d_form_mb_part_info_bp(pred_info_pkd_t *ps_pred_pkd,
function WORD32 (line 449) | WORD32 ih264d_form_mb_part_info_mp(pred_info_pkd_t *ps_pred_pkd,
function ih264d_motion_compensate_bp (line 903) | void ih264d_motion_compensate_bp(dec_struct_t * ps_dec, dec_mb_info_t *p...
function ih264d_motion_compensate_mp (line 1005) | void ih264d_motion_compensate_mp(dec_struct_t * ps_dec, dec_mb_info_t *p...
function ih264d_multiplex_ref_data (line 1389) | void ih264d_multiplex_ref_data(dec_struct_t * ps_dec,
function ih264d_pad_on_demand (line 1509) | void ih264d_pad_on_demand(pred_info_t *ps_pred, UWORD8 lum_chrom_blk)
FILE: dependencies/ih264d/decoder/ih264d_mb_utils.c
function UWORD32 (line 80) | UWORD32 ih264d_get_mb_info_cavlc_nonmbaff(dec_struct_t *ps_dec,
function UWORD32 (line 210) | UWORD32 ih264d_get_mb_info_cavlc_mbaff(dec_struct_t *ps_dec,
function UWORD32 (line 362) | UWORD32 ih264d_get_mb_info_cabac_nonmbaff(dec_struct_t *ps_dec,
function UWORD32 (line 544) | UWORD32 ih264d_get_mb_info_cabac_mbaff(dec_struct_t *ps_dec,
function UWORD32 (line 874) | UWORD32 ih264d_get_cabac_context_mbaff(dec_struct_t * ps_dec,
function ih264d_update_mbaff_left_nnz (line 1169) | void ih264d_update_mbaff_left_nnz(dec_struct_t * ps_dec,
function ih264d_get_mbaff_neighbours (line 1212) | void ih264d_get_mbaff_neighbours(dec_struct_t * ps_dec,
function ih264d_transfer_mb_group_data (line 1390) | void ih264d_transfer_mb_group_data(dec_struct_t * ps_dec,
FILE: dependencies/ih264d/decoder/ih264d_mem_request.h
type MemBlock (line 45) | struct MemBlock
type MemReq (line 51) | struct MemReq
type PicMemBlock (line 57) | struct PicMemBlock
type PicMemReq (line 64) | struct PicMemReq
FILE: dependencies/ih264d/decoder/ih264d_mvpred.c
function ih264d_get_motion_vector_predictor (line 75) | void ih264d_get_motion_vector_predictor(mv_pred_t * ps_result,
function ih264d_mbaff_mv_pred (line 144) | void ih264d_mbaff_mv_pred(mv_pred_t **ps_mv_pred,
function ih264d_non_mbaff_mv_pred (line 335) | void ih264d_non_mbaff_mv_pred(mv_pred_t **ps_mv_pred,
function UWORD8 (line 458) | UWORD8 ih264d_mvpred_nonmbaffB(dec_struct_t *ps_dec,
function UWORD8 (line 693) | UWORD8 ih264d_mvpred_nonmbaff(dec_struct_t *ps_dec,
function UWORD8 (line 923) | UWORD8 ih264d_mvpred_mbaff(dec_struct_t *ps_dec,
function ih264d_rep_mv_colz (line 1168) | void ih264d_rep_mv_colz(dec_struct_t *ps_dec,
FILE: dependencies/ih264d/decoder/ih264d_mvpred.h
type col4x4_t (line 73) | typedef struct
FILE: dependencies/ih264d/decoder/ih264d_nal.c
function ih264d_check_if_aud (line 64) | void ih264d_check_if_aud(UWORD8 *pu1_buf,
function WORD32 (line 82) | WORD32 ih264d_find_start_code(UWORD8 *pu1_buf,
function WORD32 (line 152) | WORD32 ih264d_get_next_nal_unit(UWORD8 *pu1_buf,
function WORD32 (line 192) | WORD32 ih264d_process_nal_unit(dec_bit_stream_t *ps_bitstrm,
function ih264d_rbsp_to_sodb (line 367) | void ih264d_rbsp_to_sodb(dec_bit_stream_t *ps_bitstrm)
FILE: dependencies/ih264d/decoder/ih264d_parse_bslice.c
function WORD32 (line 75) | WORD32 ih264d_parse_bmb_non_direct_cavlc(dec_struct_t * ps_dec,
function WORD32 (line 398) | WORD32 ih264d_parse_bmb_non_direct_cabac(dec_struct_t * ps_dec,
function WORD32 (line 630) | WORD32 ih264d_parse_bmb_cabac(dec_struct_t * ps_dec,
function WORD32 (line 745) | WORD32 ih264d_parse_bmb_cavlc(dec_struct_t * ps_dec,
function WORD32 (line 885) | WORD32 ih264d_mv_pred_ref_tfr_nby2_bmb(dec_struct_t * ps_dec,
function ih264d_get_implicit_weights (line 1194) | void ih264d_get_implicit_weights(dec_struct_t *ps_dec)
function WORD32 (line 1349) | WORD32 ih264d_parse_bslice(dec_struct_t * ps_dec, UWORD16 u2_first_mb_in...
FILE: dependencies/ih264d/decoder/ih264d_parse_cabac.c
function UWORD8 (line 64) | UWORD8 ih264d_read_coeff4x4_cabac(dec_bit_stream_t *ps_bitstrm,
function ih264d_read_coeff8x8_cabac (line 582) | void ih264d_read_coeff8x8_cabac(dec_bit_stream_t *ps_bitstrm,
function UWORD32 (line 1066) | UWORD32 ih264d_cabac_parse_8x8block(WORD16 *pi2_coeff_block,
function WORD32 (line 1161) | WORD32 ih264d_parse_residual4x4_cabac(dec_struct_t * ps_dec,
FILE: dependencies/ih264d/decoder/ih264d_parse_cavlc.c
function UWORD32 (line 77) | UWORD32 ih264d_uev(UWORD32 *pu4_bitstrm_ofst, UWORD32 *pu4_bitstrm_buf)
function WORD32 (line 122) | WORD32 ih264d_sev(UWORD32 *pu4_bitstrm_ofst, UWORD32 *pu4_bitstrm_buf)
function UWORD32 (line 175) | UWORD32 ih264d_tev_range1(UWORD32 *pu4_bitstrm_ofst, UWORD32 *pu4_bitstr...
function WORD32 (line 205) | WORD32 ih264d_uvlc(dec_bit_stream_t *ps_bitstrm,
function WORD32 (line 302) | WORD32 ih264d_cavlc_4x4res_block_totalcoeff_1(UWORD32 u4_isdc,
function WORD32 (line 436) | WORD32 ih264d_cavlc_4x4res_block_totalcoeff_2to10(UWORD32 u4_isdc,
function WORD32 (line 724) | WORD32 ih264d_cavlc_4x4res_block_totalcoeff_11to16(UWORD32 u4_isdc,
function ih264d_rest_of_residual_cav_chroma_dc_block (line 1005) | void ih264d_rest_of_residual_cav_chroma_dc_block(UWORD32 u4_total_coeff_...
function WORD32 (line 1233) | WORD32 ih264d_cavlc_parse4x4coeff_n0to7(WORD16 *pi2_coeff_block,
function WORD32 (line 1283) | WORD32 ih264d_cavlc_parse4x4coeff_n8(WORD16 *pi2_coeff_block,
function ih264d_cavlc_parse_chroma_dc (line 1333) | void ih264d_cavlc_parse_chroma_dc(dec_mb_info_t *ps_cur_mb_info,
function ih264d_parse_pmb_ref_index_cavlc_range1 (line 1491) | void ih264d_parse_pmb_ref_index_cavlc_range1(UWORD32 u4_num_part, /* Num...
function WORD32 (line 1535) | WORD32 ih264d_parse_pmb_ref_index_cavlc(UWORD32 u4_num_part, /* Number o...
function ih264d_parse_bmb_ref_index_cavlc_range1 (line 1599) | void ih264d_parse_bmb_ref_index_cavlc_range1(UWORD32 u4_num_part, /* Num...
function WORD32 (line 1646) | WORD32 ih264d_parse_bmb_ref_index_cavlc(UWORD32 u4_num_part, /* Number o...
function WORD32 (line 1727) | WORD32 ih264d_cavlc_parse_8x8block_both_available(WORD16 *pi2_coeff_block,
function WORD32 (line 1917) | WORD32 ih264d_cavlc_parse_8x8block_left_available(WORD16 *pi2_coeff_block,
function WORD32 (line 2106) | WORD32 ih264d_cavlc_parse_8x8block_top_available(WORD16 *pi2_coeff_block,
function WORD32 (line 2295) | WORD32 ih264d_cavlc_parse_8x8block_none_available(WORD16 *pi2_coeff_block,
function WORD32 (line 2456) | WORD32 ih264d_parse_residual4x4_cavlc(dec_struct_t * ps_dec,
FILE: dependencies/ih264d/decoder/ih264d_parse_cavlc.h
type cavlcTableNum (line 42) | enum cavlcTableNum
FILE: dependencies/ih264d/decoder/ih264d_parse_headers.c
function ih264d_get_pre_sei_params (line 86) | void ih264d_get_pre_sei_params(dec_struct_t *ps_dec, UWORD8 u1_nal_unit_...
function WORD32 (line 165) | WORD32 ih264d_parse_slice_partition(dec_struct_t * ps_dec,
function WORD32 (line 196) | WORD32 ih264d_parse_sei(dec_struct_t * ps_dec, dec_bit_stream_t * ps_bit...
function WORD32 (line 225) | WORD32 ih264d_parse_filler_data(dec_struct_t * ps_dec,
function ih264d_parse_end_of_stream (line 254) | void ih264d_parse_end_of_stream(dec_struct_t * ps_dec)
function WORD32 (line 271) | WORD32 ih264d_parse_pps(dec_struct_t * ps_dec, dec_bit_stream_t * ps_bit...
function UWORD32 (line 488) | UWORD32 ih264d_correct_level_idc(UWORD32 u4_level_idc, UWORD32 u4_total_...
function WORD32 (line 571) | WORD32 ih264d_parse_sps(dec_struct_t *ps_dec, dec_bit_stream_t *ps_bitstrm)
function WORD32 (line 1183) | WORD32 ih264d_parse_end_of_sequence(dec_struct_t * ps_dec)
function WORD32 (line 1205) | WORD32 ih264d_access_unit_delimiter_rbsp(dec_struct_t * ps_dec)
function WORD32 (line 1233) | WORD32 ih264d_parse_nal_unit(iv_obj_t *dec_hdl,
FILE: dependencies/ih264d/decoder/ih264d_parse_islice.c
function WORD32 (line 88) | WORD32 ih264d_parse_imb_cavlc(dec_struct_t * ps_dec,
function WORD32 (line 482) | WORD32 ih264d_parse_imb_cabac(dec_struct_t * ps_dec,
function WORD32 (line 754) | WORD32 ih264d_parse_islice_data_cavlc(dec_struct_t * ps_dec,
function WORD32 (line 977) | WORD32 ih264d_parse_islice_data_cabac(dec_struct_t * ps_dec,
function WORD32 (line 1200) | WORD32 ih264d_parse_ipcm_mb(dec_struct_t * ps_dec,
function WORD32 (line 1370) | WORD32 ih264d_parse_islice(dec_struct_t *ps_dec,
FILE: dependencies/ih264d/decoder/ih264d_parse_mb_header.c
function UWORD8 (line 68) | UWORD8 ih264d_parse_mb_type_intra_cabac(UWORD8 u1_inter,
function UWORD32 (line 154) | UWORD32 ih264d_parse_mb_type_cabac(struct _DecStruct * ps_dec)
function UWORD32 (line 368) | UWORD32 ih264d_parse_submb_type_cabac(const UWORD8 u1_slc_type_b,
function WORD32 (line 463) | WORD32 ih264d_parse_ref_idx_cabac(const UWORD8 u1_num_part,
function WORD32 (line 534) | WORD32 ih264d_parse_mb_qp_delta_cabac(struct _DecStruct * ps_dec,
function WORD8 (line 587) | WORD8 ih264d_parse_chroma_pred_mode_cabac(struct _DecStruct * ps_dec)
function UWORD8 (line 633) | UWORD8 ih264d_parse_transform8x8flag_cabac(struct _DecStruct * ps_dec,
function WORD32 (line 691) | WORD32 ih264d_read_intra_pred_modes_cabac(dec_struct_t * ps_dec,
function UWORD32 (line 789) | UWORD32 ih264d_parse_ctx_cbp_cabac(struct _DecStruct * ps_dec)
function ih264d_get_mvd_cabac (line 1112) | void ih264d_get_mvd_cabac(UWORD8 u1_sub_mb,
function WORD16 (line 1217) | WORD16 ih264d_parse_mvd_cabac(dec_bit_stream_t * ps_bitstrm,
FILE: dependencies/ih264d/decoder/ih264d_parse_mb_header.h
type _DecStruct (line 47) | struct _DecStruct
type _DecStruct (line 49) | struct _DecStruct
type _DecStruct (line 66) | struct _DecStruct
type _DecStruct (line 68) | struct _DecStruct
type _DecStruct (line 70) | struct _DecStruct
type _DecStruct (line 72) | struct _DecStruct
FILE: dependencies/ih264d/decoder/ih264d_parse_pslice.c
function WORD32 (line 83) | WORD32 ih264d_parse_pmb_cavlc(dec_struct_t * ps_dec,
function WORD32 (line 431) | WORD32 ih264d_parse_pmb_cabac(dec_struct_t * ps_dec,
function ih264d_update_nnz_for_skipmb (line 750) | void ih264d_update_nnz_for_skipmb(dec_struct_t * ps_dec,
function WORD32 (line 801) | WORD32 ih264d_parse_inter_slice_data_cabac(dec_struct_t * ps_dec,
function WORD32 (line 1126) | WORD32 ih264d_parse_inter_slice_data_cavlc(dec_struct_t * ps_dec,
function WORD32 (line 1441) | WORD32 ih264d_mark_err_slice_skip(dec_struct_t * ps_dec,
function WORD32 (line 1920) | WORD32 ih264d_parse_pslice(dec_struct_t *ps_dec, UWORD16 u2_first_mb_in_...
FILE: dependencies/ih264d/decoder/ih264d_parse_slice.c
function ih264d_form_pred_weight_matrix (line 89) | void ih264d_form_pred_weight_matrix(dec_struct_t *ps_dec)
function WORD32 (line 162) | WORD32 ih264d_start_of_pic(dec_struct_t *ps_dec,
function WORD32 (line 759) | WORD32 ih264d_end_of_pic_dispbuf_mgr(dec_struct_t * ps_dec)
function ih264d_err_pic_dispbuf_mgr (line 886) | void ih264d_err_pic_dispbuf_mgr(dec_struct_t *ps_dec)
function ih264d_deblock_picture (line 903) | void ih264d_deblock_picture(void *ptr)
function WORD32 (line 939) | WORD32 ih264d_deblock_display(dec_struct_t *ps_dec)
function WORD32 (line 965) | WORD32 ih264d_end_of_pic(dec_struct_t *ps_dec)
function WORD32 (line 1006) | WORD32 ih264d_fix_error_in_dpb(dec_struct_t *ps_dec)
function WORD32 (line 1067) | WORD32 ih264d_parse_decode_slice(UWORD8 u1_is_idr_slice,
FILE: dependencies/ih264d/decoder/ih264d_process_bslice.c
function WORD32 (line 71) | WORD32 ih264d_decode_spatial_direct(dec_struct_t * ps_dec,
function WORD32 (line 582) | WORD32 ih264d_decode_temporal_direct(dec_struct_t * ps_dec,
function ih264d_convert_frm_to_fld_list (line 927) | void ih264d_convert_frm_to_fld_list(struct pic_buffer_t *ps_ref_pic_buf_lx,
function ih264d_convert_frm_mbaff_list (line 1116) | void ih264d_convert_frm_mbaff_list(dec_struct_t *ps_dec)
function poc_compare (line 1196) | static int poc_compare(const void *pv_pic1, const void *pv_pic2)
function ih264d_init_ref_idx_lx_b (line 1225) | void ih264d_init_ref_idx_lx_b(dec_struct_t *ps_dec)
function ih264d_one_to_one (line 1597) | void ih264d_one_to_one(dec_struct_t *ps_dec,
function ih264d_mbaff_cross_pmbair (line 1722) | void ih264d_mbaff_cross_pmbair(dec_struct_t *ps_dec,
function WORD32 (line 1937) | WORD32 ih264d_cal_col_pic(dec_struct_t *ps_dec)
function ih264d_frm_to_fld (line 2014) | void ih264d_frm_to_fld(dec_struct_t *ps_dec,
function ih264d_fld_to_frm (line 2121) | void ih264d_fld_to_frm(dec_struct_t *ps_dec,
function ih264d_mbaff_to_fld (line 2246) | void ih264d_mbaff_to_fld(dec_struct_t *ps_dec,
function ih264d_fld_to_mbaff (line 2279) | void ih264d_fld_to_mbaff(dec_struct_t *ps_dec,
FILE: dependencies/ih264d/decoder/ih264d_process_bslice.h
type pic_buffer_t (line 60) | struct pic_buffer_t
type pic_buffer_t (line 67) | struct pic_buffer_t
type pic_buffer_t (line 73) | struct pic_buffer_t
type pic_buffer_t (line 79) | struct pic_buffer_t
type pic_buffer_t (line 85) | struct pic_buffer_t
type pic_buffer_t (line 91) | struct pic_buffer_t
type pic_buffer_t (line 97) | struct pic_buffer_t
FILE: dependencies/ih264d/decoder/ih264d_process_intra_mb.c
function ih264d_itrans_recon_luma_dc (line 62) | void ih264d_itrans_recon_luma_dc(dec_struct_t *ps_dec,
function WORD32 (line 105) | WORD32 ih264d_read_intra_pred_modes(dec_struct_t * ps_dec,
function WORD32 (line 157) | WORD32 ih264d_unpack_coeff4x4_4x4blk(dec_struct_t * ps_dec,
function UWORD32 (line 196) | UWORD32 ih264d_unpack_coeff4x4_8x8blk(dec_struct_t * ps_dec,
function WORD32 (line 262) | WORD32 ih264d_unpack_coeff8x8_8x8blk_cavlc(dec_struct_t * ps_dec,
function ih264d_unpack_coeff4x4_8x8blk_chroma (line 354) | void ih264d_unpack_coeff4x4_8x8blk_chroma(dec_struct_t * ps_dec,
function UWORD32 (line 407) | UWORD32 ih264d_unpack_luma_coeff4x4_mb(dec_struct_t * ps_dec,
function ih264d_unpack_chroma_coeff4x4_mb (line 539) | void ih264d_unpack_chroma_coeff4x4_mb(dec_struct_t * ps_dec,
function UWORD32 (line 619) | UWORD32 ih264d_unpack_luma_coeff8x8_mb(dec_struct_t * ps_dec,
function WORD32 (line 716) | WORD32 ih264d_process_intra_mb(dec_struct_t * ps_dec,
FILE: dependencies/ih264d/decoder/ih264d_process_pslice.c
function ih264d_insert_pic_in_ref_pic_listx (line 64) | void ih264d_insert_pic_in_ref_pic_listx(struct pic_buffer_t *ps_ref_pic_...
function WORD32 (line 70) | WORD32 ih264d_mv_pred_ref_tfr_nby2_pmb(dec_struct_t * ps_dec,
function WORD32 (line 332) | WORD32 ih264d_decode_recon_tfr_nmb(dec_struct_t * ps_dec,
function WORD32 (line 529) | WORD32 ih264d_process_inter_mb(dec_struct_t * ps_dec,
function WORD32 (line 813) | WORD32 ih264d_parse_pred_weight_table(dec_slice_params_t * ps_cur_slice,
function pic_num_compare (line 943) | static int pic_num_compare(const void *pv_pic1, const void *pv_pic2)
function ih264d_init_ref_idx_lx_p (line 984) | void ih264d_init_ref_idx_lx_p(dec_struct_t *ps_dec)
FILE: dependencies/ih264d/decoder/ih264d_process_pslice.h
type pic_buffer_t (line 67) | struct pic_buffer_t
type pic_buffer_t (line 68) | struct pic_buffer_t
FILE: dependencies/ih264d/decoder/ih264d_quant_scaling.c
function WORD32 (line 48) | WORD32 ih264d_scaling_list(WORD16 *pi2_scaling_list,
function WORD32 (line 84) | WORD32 ih264d_form_default_scaling_matrix(dec_struct_t *ps_dec)
function WORD32 (line 121) | WORD32 ih264d_form_scaling_matrix_picture(dec_seq_params_t *ps_seq,
FILE: dependencies/ih264d/decoder/ih264d_sei.c
function WORD32 (line 71) | WORD32 ih264d_parse_buffering_period(buf_period_t *ps_buf_prd,
function WORD32 (line 148) | WORD32 ih264d_parse_pic_timing(dec_bit_stream_t *ps_bitstrm,
function WORD32 (line 232) | WORD32 ih264d_parse_recovery_point(dec_bit_stream_t *ps_bitstrm,
function WORD32 (line 273) | WORD32 ih264d_parse_mdcv(dec_bit_stream_t *ps_bitstrm,
function WORD32 (line 399) | WORD32 ih264d_parse_cll(dec_bit_stream_t *ps_bitstrm,
function WORD32 (line 446) | WORD32 ih264d_parse_ave(dec_bit_stream_t *ps_bitstrm,
function WORD32 (line 507) | WORD32 ih264d_parse_ccv(dec_bit_stream_t *ps_bitstrm,
function WORD32 (line 668) | WORD32 ih264d_parse_sei_payload(dec_bit_stream_t *ps_bitstrm,
function WORD32 (line 751) | WORD32 ih264d_parse_sei_message(dec_struct_t *ps_dec,
function WORD32 (line 837) | WORD32 ih264d_export_sei_mdcv_params(ivd_sei_decode_op_t *ps_sei_decode_op,
function WORD32 (line 880) | WORD32 ih264d_export_sei_cll_params(ivd_sei_decode_op_t *ps_sei_decode_op,
function WORD32 (line 922) | WORD32 ih264d_export_sei_ave_params(ivd_sei_decode_op_t *ps_sei_decode_op,
function WORD32 (line 965) | WORD32 ih264d_export_sei_ccv_params(ivd_sei_decode_op_t *ps_sei_decode_op,
FILE: dependencies/ih264d/decoder/ih264d_sei.h
type _DecStruct (line 73) | struct _DecStruct
type _DecStruct (line 74) | struct _DecStruct
type buf_period_t (line 76) | typedef struct
type sei_mdcv_params_t (line 87) | typedef struct
type sei_cll_params_t (line 126) | typedef struct
type sei_ave_params_t (line 144) | typedef struct
type sei_ccv_params_t (line 170) | typedef struct
type _sei (line 237) | struct _sei
type sei (line 289) | typedef struct _sei sei;
FILE: dependencies/ih264d/decoder/ih264d_structs.h
type _DecStruct (line 70) | struct _DecStruct
type _DecMbInfo (line 71) | struct _DecMbInfo
type cabac_table_num_t (line 73) | typedef enum
type cabac_blk_cat_offset_t (line 110) | typedef enum
type mv_pred_t (line 127) | typedef struct _mv_pred_t
type directmv_t (line 137) | typedef struct
type pic_buffer_t (line 147) | typedef struct pic_buffer_t
type neighbouradd_t (line 197) | typedef struct
type cavlc_cntxt_t (line 202) | typedef struct
type col_mv_buf_t (line 226) | typedef struct
type pred_info_t (line 241) | typedef struct
type pred_info_pkd_t (line 274) | typedef struct
type dec_seq_params_t (line 303) | typedef struct
type prev_seq_params_t (line 355) | typedef struct
type dec_pic_params_t (line 367) | typedef struct
type pocstruct_t (line 412) | typedef struct
type mb_neigbour_params_t (line 430) | typedef struct
type dec_mb_info_t (line 443) | typedef struct _DecMbInfo
type dec_slice_params_t (line 484) | typedef struct
type deblk_mb_t (line 539) | typedef struct
type deblkmb_neighbour_t (line 554) | typedef struct
type parse_part_params_t (line 565) | typedef struct
type parse_pmbarams_t (line 574) | typedef struct
type pad_mgr_t (line 583) | typedef struct
type dec_err_status_t (line 605) | typedef struct dec_err_status_t
type high_profile_tools_t (line 617) | typedef struct
type disp_buf_t (line 658) | typedef struct
type dec_slice_struct_t (line 665) | typedef struct _dec_slice_struct
type tu_sblk4x4_coeff_data_t (line 677) | typedef struct
type tu_blk8x8_coeff_data_t (line 693) | typedef struct
type dec_struct_t (line 708) | typedef struct _DecStruct
FILE: dependencies/ih264d/decoder/ih264d_thread_compute_bs.c
function ih264d_compute_bs_non_mbaff_thread (line 89) | void ih264d_compute_bs_non_mbaff_thread(dec_struct_t * ps_dec,
function ih264d_check_mb_map_deblk (line 318) | void ih264d_check_mb_map_deblk(dec_struct_t *ps_dec,
function ih264d_recon_deblk_slice (line 378) | void ih264d_recon_deblk_slice(dec_struct_t *ps_dec, tfr_ctxt_t *ps_tfr_cxt)
function ih264d_recon_deblk_thread (line 688) | void ih264d_recon_deblk_thread(dec_struct_t *ps_dec)
FILE: dependencies/ih264d/decoder/ih264d_thread_parse_decode.c
function ih264d_parse_tfr_nmb (line 62) | void ih264d_parse_tfr_nmb(dec_struct_t * ps_dec,
function ih264d_decode_tfr_nmb (line 167) | void ih264d_decode_tfr_nmb(dec_struct_t * ps_dec,
function WORD32 (line 200) | WORD32 ih264d_decode_recon_tfr_nmb_thread(dec_struct_t * ps_dec,
function WORD32 (line 438) | WORD32 ih264d_decode_slice_thread(dec_struct_t *ps_dec)
function ih264d_decode_picture_thread (line 593) | void ih264d_decode_picture_thread(dec_struct_t *ps_dec )
function ih264d_signal_decode_thread (line 632) | void ih264d_signal_decode_thread(dec_struct_t *ps_dec)
function ih264d_signal_bs_deblk_thread (line 640) | void ih264d_signal_bs_deblk_thread(dec_struct_t *ps_dec)
FILE: dependencies/ih264d/decoder/ih264d_transfer_address.h
type tfr_ctxt_t (line 23) | typedef struct
FILE: dependencies/ih264d/decoder/ih264d_utils.c
function UWORD8 (line 78) | UWORD8 ih264d_is_end_of_pic(UWORD16 u2_frame_num,
function WORD32 (line 153) | WORD32 ih264d_decode_pic_order_cnt(UWORD8 u1_is_idr_slice,
function WORD32 (line 530) | WORD32 ih264d_end_of_pic_processing(dec_struct_t *ps_dec)
function WORD32 (line 658) | WORD32 ih264d_get_dpb_size(dec_seq_params_t *ps_seq)
function WORD32 (line 736) | WORD32 ih264d_init_dec_mb_grp(dec_struct_t *ps_dec)
function WORD32 (line 771) | WORD32 ih264d_init_pic(dec_struct_t *ps_dec,
function WORD32 (line 976) | WORD32 ih264d_get_next_display_field(dec_struct_t * ps_dec,
function ih264d_release_display_field (line 1201) | void ih264d_release_display_field(dec_struct_t *ps_dec,
function WORD32 (line 1273) | WORD32 ih264d_assign_display_seq(dec_struct_t *ps_dec)
function ih264d_release_display_bufs (line 1349) | void ih264d_release_display_bufs(dec_struct_t *ps_dec)
function ih264d_assign_pic_num (line 1439) | void ih264d_assign_pic_num(dec_struct_t *ps_dec)
function WORD32 (line 1529) | WORD32 ih264d_update_qp(dec_struct_t * ps_dec, const WORD8 i1_qp)
function WORD32 (line 1579) | WORD32 ih264d_decode_gaps_in_frame_num(dec_struct_t *ps_dec,
function WORD32 (line 1748) | WORD32 ih264d_create_pic_buffers(UWORD8 u1_num_of_buf,
function WORD16 (line 1902) | WORD16 ih264d_allocate_dynamic_bufs(dec_struct_t * ps_dec)
function WORD16 (line 2270) | WORD16 ih264d_free_dynamic_bufs(dec_struct_t * ps_dec)
function WORD32 (line 2347) | WORD32 ih264d_create_mv_bank(void *pv_dec,
function ih264d_unpack_coeff4x4_dc_4x4blk (line 2401) | void ih264d_unpack_coeff4x4_dc_4x4blk(tu_sblk4x4_coeff_data_t *ps_tu_4x4,
FILE: dependencies/ih264d/decoder/ih264d_vui.c
function WORD32 (line 68) | WORD32 ih264d_parse_hrd_parametres(hrd_t *ps_hrd,
function WORD32 (line 125) | WORD32 ih264d_parse_vui_parametres(vui_t *ps_vu4,
FILE: dependencies/ih264d/decoder/ih264d_vui.h
type hrd_t (line 48) | typedef struct
type vui_t (line 62) | typedef struct
FILE: dependencies/ih264d/decoder/iv.h
type IV_API_CALL_STATUS_T (line 63) | typedef enum {
type IV_COLOR_FORMAT_T (line 73) | typedef enum {
type IV_PICTURE_CODING_TYPE_T (line 92) | typedef enum {
type IV_FLD_TYPE_T (line 117) | typedef enum {
type IV_CONTENT_TYPE_T (line 126) | typedef enum {
type IV_API_COMMAND_TYPE_T (line 138) | typedef enum {
type iv_obj_t (line 149) | typedef struct {
type iv_yuv_buf_t (line 169) | typedef struct {
FILE: dependencies/ih264d/decoder/ivd.h
type IVD_ARCH_T (line 67) | typedef enum
type IVD_SOC_T (line 88) | typedef enum
type IVD_FRAME_SKIP_MODE_T (line 97) | typedef enum {
type IVD_VIDEO_DECODE_MODE_T (line 113) | typedef enum {
type IVD_DISPLAY_FRAME_OUT_MODE_T (line 129) | typedef enum {
type IVD_API_COMMAND_TYPE_T (line 141) | typedef enum {
type IVD_CONTROL_API_COMMAND_TYPE_T (line 154) | typedef enum {
type IVD_ERROR_BITS_T (line 174) | typedef enum {
type IVD_ERROR_CODES_T (line 201) | typedef enum {
type ivd_out_bufdesc_t (line 255) | typedef struct {
type ivd_create_ip_t (line 281) | typedef struct {
type ivd_create_op_t (line 325) | typedef struct{
type ivd_delete_ip_t (line 352) | typedef struct {
type ivd_delete_op_t (line 366) | typedef struct{
type ivd_sei_decode_op_t (line 384) | typedef struct {
type ivd_video_decode_ip_t (line 398) | typedef struct {
type ivd_video_decode_op_t (line 432) | typedef struct{
type ivd_get_display_frame_ip_t (line 549) | typedef struct
type ivd_get_display_frame_op_t (line 569) | typedef struct
type ivd_set_display_frame_ip_t (line 629) | typedef struct
type ivd_set_display_frame_op_t (line 654) | typedef struct
type ivd_rel_display_frame_ip_t (line 675) | typedef struct
type ivd_rel_display_frame_op_t (line 694) | typedef struct
type ivd_ctl_flush_ip_t (line 715) | typedef struct{
type ivd_ctl_flush_op_t (line 733) | typedef struct{
type ivd_ctl_reset_ip_t (line 752) | typedef struct{
type ivd_ctl_reset_op_t (line 771) | typedef struct{
type ivd_ctl_set_config_ip_t (line 793) | typedef struct {
type ivd_ctl_set_config_op_t (line 831) | typedef struct{
type ivd_ctl_getbufinfo_ip_t (line 851) | typedef struct{
type ivd_ctl_getbufinfo_op_t (line 869) | typedef struct{
type ivd_ctl_getstatus_ip_t (line 916) | typedef struct{
type ivd_ctl_getstatus_op_t (line 934) | typedef struct{
type ivd_ctl_getversioninfo_ip_t (line 1011) | typedef struct{
type ivd_ctl_getversioninfo_op_t (line 1039) | typedef struct{
FILE: dependencies/ih264d/decoder/mips/ih264d_function_selector.c
function ih264d_init_function_ptr (line 59) | void ih264d_init_function_ptr(dec_struct_t *ps_codec)
function ih264d_init_arch (line 63) | void ih264d_init_arch(dec_struct_t *ps_codec)
FILE: dependencies/ih264d/decoder/x86/ih264d_function_selector.c
function ih264d_init_function_ptr (line 60) | void ih264d_init_function_ptr(dec_struct_t *ps_codec)
function __cpuid2 (line 83) | void __cpuid2(signed int* cpuInfo, unsigned int level)
function ih264d_init_arch (line 94) | void ih264d_init_arch(dec_struct_t *ps_codec)
FILE: dependencies/ih264d/decoder/x86/ih264d_function_selector_sse42.c
function ATTRIBUTE_SSE42 (line 88) | ATTRIBUTE_SSE42
FILE: dependencies/ih264d/decoder/x86/ih264d_function_selector_ssse3.c
function ATTRIBUTE_SSSE3 (line 88) | ATTRIBUTE_SSSE3
FILE: src/Cafe/Account/Account.cpp
function uint16 (line 36) | uint16 FFLCalculateCRC16(uint8* input, sint32 length)
function OnlineAccountError (line 245) | OnlineAccountError Account::GetOnlineAccountError() const
function Account (line 367) | const Account& Account::GetAccount(uint32 persistent_id)
function Account (line 378) | const Account& Account::GetCurrentAccount()
function uint32 (line 383) | uint32 Account::GetNextPersistentId()
function OnlineValidator (line 422) | OnlineValidator Account::ValidateOnlineFiles() const
class FileStream (line 462) | class FileStream
function makePWHash (line 549) | void makePWHash(uint8* input, sint32 length, uint32 magic, uint8* output)
function actPwTest (line 572) | void actPwTest()
FILE: src/Cafe/Account/Account.h
function OnlineAccountError (line 11) | enum class OnlineAccountError
function class (line 46) | class Account
function SetBirthYear (line 89) | void SetBirthYear(uint16 birth_year) { m_birth_year = birth_year; }
function SetBirthMonth (line 90) | void SetBirthMonth(uint8 birth_month) { m_birth_month = birth_month; }
function SetBirthDay (line 91) | void SetBirthDay(uint8 birth_day) { m_birth_day = birth_day; }
function SetGender (line 92) | void SetGender(uint8 gender) { m_gender = gender; }
function SetEmail (line 93) | void SetEmail(std::string_view email) { m_email = email; }
function SetCountry (line 94) | void SetCountry(uint32 country) { m_country = country; }
function SetTimeZoneId (line 95) | void SetTimeZoneId(std::string_view timezone_id) { m_timezone_id = timez...
function SetUtcOffset (line 96) | void SetUtcOffset(sint64 utc_offset) { m_utc_offset = utc_offset; }
FILE: src/Cafe/Account/AccountError.h
function AccountErrc (line 5) | enum class AccountErrc
FILE: src/Cafe/CafeSystem.cpp
function uint32 (line 88) | uint32 generateHashFromRawRPXData(uint8* rpxData, sint32 size)
function ScanForRPX (line 100) | bool ScanForRPX()
function SetEntryPoint (line 125) | void SetEntryPoint(MPTR entryPoint)
function LoadMainExecutable (line 131) | void LoadMainExecutable()
function getTitleSavePath (line 196) | fs::path getTitleSavePath()
function InfoLog_TitleLoaded (line 202) | void InfoLog_TitleLoaded()
function InfoLog_PrintActiveSettings (line 237) | void InfoLog_PrintActiveSettings()
type SharedDataEntry (line 269) | struct SharedDataEntry
function uint32 (line 297) | uint32 LoadSharedData()
function cemu_initForGame (line 366) | void cemu_initForGame()
type CafeSystem (line 436) | namespace CafeSystem
function _CheckForWine (line 453) | static void _CheckForWine()
function logCPUAndMemoryInfo (line 468) | void logCPUAndMemoryInfo()
function GetWindowsNamedVersion (line 499) | std::string GetWindowsNamedVersion(uint32& buildNumber)
function logPlatformInfo (line 520) | void logPlatformInfo()
function Initialize (line 569) | void Initialize()
function SetImplementation (line 610) | void SetImplementation(SystemImplementation* impl)
function Shutdown (line 615) | void Shutdown()
function GetInternalVirtualCodeFolder (line 632) | std::string GetInternalVirtualCodeFolder()
function MountBaseDirectories (line 637) | void MountBaseDirectories()
function UnmountBaseDirectories (line 644) | void UnmountBaseDirectories()
function PREPARE_STATUS_CODE (line 650) | PREPARE_STATUS_CODE LoadAndMountForegroundTitle(TitleId titleId)
function UnmountForegroundTitle (line 711) | void UnmountForegroundTitle()
function PREPARE_STATUS_CODE (line 736) | PREPARE_STATUS_CODE PrepareExecutable()
function SetupMemorySpace (line 770) | void SetupMemorySpace()
function DestroyMemorySpace (line 776) | void DestroyMemorySpace()
function PREPARE_STATUS_CODE (line 781) | PREPARE_STATUS_CODE PrepareForegroundTitle(TitleId titleId)
function PREPARE_STATUS_CODE (line 806) | PREPARE_STATUS_CODE PrepareForegroundTitleFromStandaloneRPX(const fs::...
function _LaunchTitleThread (line 849) | void _LaunchTitleThread()
function LaunchForegroundTitle (line 861) | void LaunchForegroundTitle()
function IsTitleRunning (line 871) | bool IsTitleRunning()
function TitleId (line 876) | TitleId GetForegroundTitleId()
function uint16 (line 882) | uint16 GetForegroundTitleVersion()
function uint32 (line 889) | uint32 GetForegroundTitleSDKVersion()
function CafeConsoleRegion (line 896) | CafeConsoleRegion GetForegroundTitleRegion()
function GetForegroundTitleName (line 903) | std::string GetForegroundTitleName()
function uint32 (line 916) | uint32 GetForegroundTitleOlvAccesskey()
function GetForegroundTitleArgStr (line 923) | std::string GetForegroundTitleArgStr()
function CosCapabilityBits (line 933) | CosCapabilityBits GetForegroundTitleCosCapabilities(CosCapabilityGroup...
function GetOverrideArgStr (line 955) | bool GetOverrideArgStr(std::vector<std::string>& args)
function SetOverrideArgs (line 964) | void SetOverrideArgs(std::span<std::string> args)
function UnsetOverrideArgs (line 969) | void UnsetOverrideArgs()
function CafeConsoleRegion (line 975) | CafeConsoleRegion GetPlatformRegion()
function UnmountCurrentTitle (line 988) | void UnmountCurrentTitle()
function ShutdownTitle (line 994) | void ShutdownTitle()
function InitVirtualMlcStorage (line 1021) | void InitVirtualMlcStorage()
function GetMlcStoragePath (line 1046) | std::string GetMlcStoragePath(TitleId titleId)
function MlcStorageMountTitle (line 1056) | void MlcStorageMountTitle(TitleInfo& titleInfo)
function MlcStorageMountTitle (line 1077) | void MlcStorageMountTitle(TitleId titleId)
function MlcStorageMountAllTitles (line 1085) | void MlcStorageMountAllTitles()
function MlcStorageUnmountAllTitles (line 1092) | void MlcStorageUnmountAllTitles()
function uint32 (line 1102) | uint32 GetRPXHashBase()
function uint32 (line 1107) | uint32 GetRPXHashUpdated()
function RequestRecreateCanvas (line 1112) | void RequestRecreateCanvas()
FILE: src/Cafe/CafeSystem.h
type class (line 7) | enum class
type class (line 8) | enum class
function namespace (line 10) | namespace CafeSystem
FILE: src/Cafe/Filesystem/FST/FST.cpp
class FSTDataSource (line 18) | class FSTDataSource
method FSTDataSource (line 25) | FSTDataSource() {}
class FSTDataSourceWUD (line 30) | class FSTDataSourceWUD : public FSTDataSource
method FSTDataSourceWUD (line 34) | static FSTDataSourceWUD* Open(const fs::path& path)
method SetBaseOffset (line 44) | void SetBaseOffset(uint64 baseOffset)
method uint64 (line 49) | uint64 GetBaseOffset() const
method uint64 (line 54) | uint64 readData(uint16 clusterIndex, uint64 clusterOffset, uint64 offs...
method FSTDataSourceWUD (line 67) | FSTDataSourceWUD() {}
class FSTDataSourceApp (line 73) | class FSTDataSourceApp : public FSTDataSource
method FSTDataSourceApp (line 76) | static FSTDataSourceApp* Open(fs::path path, NCrypto::TMDParser& tmd)
method uint64 (line 96) | uint64 readData(uint16 clusterIndex, uint64 clusterOffset, uint64 offs...
method FSTDataSourceApp (line 113) | FSTDataSourceApp(std::vector<std::unique_ptr<FileStream>>&& clusterFiles)
type DiscHeaderA (line 123) | struct DiscHeaderA
type DiscHeaderB (line 129) | struct DiscHeaderB
type DiscPartitionTableHeader (line 139) | struct DiscPartitionTableHeader
type DiscPartitionTableEntry (line 152) | struct DiscPartitionTableEntry
type DiscPartitionHeader (line 162) | struct DiscPartitionHeader
function FSTVolume (line 223) | FSTVolume* FSTVolume::OpenFromDiscImage(const fs::path& path, ErrorCode*...
function FSTVolume (line 237) | FSTVolume* FSTVolume::OpenFromDiscImage(const fs::path& path, NCrypto::A...
function FSTVolume (line 399) | FSTVolume* FSTVolume::OpenFromContentFolder(fs::path folderPath, ErrorCo...
function FSTVolume (line 458) | FSTVolume* FSTVolume::OpenFST(FSTDataSource* dataSource, uint64 fstOffse...
function FSTVolume (line 552) | FSTVolume* FSTVolume::OpenFST(std::unique_ptr<FSTDataSource> dataSource,...
type DirHierachyInfo (line 567) | struct DirHierachyInfo
method DirHierachyInfo (line 569) | DirHierachyInfo(uint32 parentIndex, uint32 endIndex) : parentIndex(par...
function uint32 (line 672) | uint32 FSTVolume::GetFileCount() const
function uint32 (line 798) | uint32 FSTVolume::GetFileSize(const FSTFileHandle& fileHandle) const
function uint32 (line 805) | uint32 FSTVolume::ReadFile(FSTFileHandle& fileHandle, uint32 offset, uin...
type FSTRawBlock (line 824) | struct FSTRawBlock
type FSTHashedBlock (line 829) | struct FSTHashedBlock
method uint8 (line 833) | uint8* getHashData()
method uint8 (line 838) | uint8* getH0Hash(uint32 index)
method uint8 (line 844) | uint8* getH1Hash(uint32 index)
method uint8 (line 850) | uint8* getH2Hash(uint32 index)
method uint8 (line 856) | uint8* getFileData()
method uint8 (line 861) | uint8* getH0Hash(size_t index)
type FSTCachedRawBlock (line 870) | struct FSTCachedRawBlock
type FSTCachedHashedBlock (line 877) | struct FSTCachedHashedBlock
function FSTCachedRawBlock (line 959) | FSTCachedRawBlock* FSTVolume::GetDecryptedRawBlock(uint32 clusterIndex, ...
function FSTCachedHashedBlock (line 1024) | FSTCachedHashedBlock* FSTVolume::GetDecryptedHashedBlock(uint32 clusterI...
function uint32 (line 1073) | uint32 FSTVolume::ReadFile_HashModeRaw(uint32 clusterIndex, FSTEntry& en...
function uint32 (line 1097) | uint32 FSTVolume::ReadFile_HashModeHashed(uint32 clusterIndex, FSTEntry&...
function FSTVolumeTest (line 1274) | void FSTVolumeTest()
FILE: src/Cafe/Filesystem/FST/FST.h
type FSTFileHandle (line 5) | struct FSTFileHandle
type FSTDirectoryIterator (line 12) | struct FSTDirectoryIterator
function class (line 27) | class FSTVolume
FILE: src/Cafe/Filesystem/FST/KeyCache.cpp
type KeyCacheEntry (line 12) | struct KeyCacheEntry
function strishex (line 19) | bool strishex(std::string_view str)
function uint8 (line 35) | uint8* KeyCache_GetAES128(sint32 index)
function KeyCache_AddKey128 (line 43) | void KeyCache_AddKey128(uint8* key)
function KeyCache_Prepare (line 52) | void KeyCache_Prepare()
FILE: src/Cafe/Filesystem/FST/fstUtil.h
function class (line 10) | class FSCPath
type NODETYPE (line 126) | enum NODETYPE : uint8
type node_t (line 132) | struct node_t
function node_t (line 163) | node_t* getSubnode(node_t* parentNode, std::string_view name)
function node_t (line 173) | node_t* newNode(node_t* parentNode, NODETYPE type, std::string_view name)
function class (line 183) | class DirectoryIterator : public FSCVirtualFile
function addFile (line 230) | bool addFile(std::string_view path, size_t fileSize, F* custom)
function getFile (line 246) | bool getFile(std::string_view path, F* &custom)
function getDirectory (line 260) | bool getDirectory(std::string_view path, FSCVirtualFile*& dirIterator)
function removeFile (line 274) | bool removeFile(std::string_view path)
FILE: src/Cafe/Filesystem/WUD/wud.cpp
function wud_t (line 7) | wud_t* wud_open(const fs::path& path)
function wud_close (line 64) | void wud_close(wud_t* wud)
function wud_isWUXCompressed (line 72) | bool wud_isWUXCompressed(wud_t* wud)
function wud_readData (line 81) | unsigned int wud_readData(wud_t* wud, void* buffer, unsigned int length,...
function wud_getWUDSize (line 125) | long long wud_getWUDSize(wud_t* wud)
FILE: src/Cafe/Filesystem/WUD/wud.h
type wuxHeader_t (line 3) | struct wuxHeader_t
type wud_t (line 12) | struct wud_t
FILE: src/Cafe/Filesystem/WUHB/RomFSStructs.h
type romfs_header_t (line 3) | struct romfs_header_t
type romfs_direntry_t (line 18) | struct romfs_direntry_t
type romfs_fentry_t (line 29) | struct romfs_fentry_t
FILE: src/Cafe/Filesystem/WUHB/WUHBReader.cpp
function WUHBReader (line 2) | WUHBReader* WUHBReader::FromPath(const fs::path& path)
function romfs_direntry_t (line 87) | romfs_direntry_t WUHBReader::GetDirEntry(uint32 offset) const
function romfs_fentry_t (line 91) | romfs_fentry_t WUHBReader::GetFileEntry(uint32 offset) const
function uint64 (line 96) | uint64 WUHBReader::GetFileSize(uint32 entryOffset) const
function uint64 (line 101) | uint64 WUHBReader::ReadFromFile(uint32 entryOffset, uint64 fileOffset, u...
function uint32 (line 112) | uint32 WUHBReader::GetHashTableEntryOffset(uint32 hash, bool isFile) const
function uint32 (line 147) | uint32 WUHBReader::Lookup(const std::filesystem::path& path, bool isFile...
function uint32 (line 213) | uint32 WUHBReader::CalcPathHash(uint32 parent, const char* path, uint32 ...
FILE: src/Cafe/Filesystem/WUHB/WUHBReader.h
function class (line 4) | class WUHBReader
FILE: src/Cafe/Filesystem/fsc.cpp
type FSCMountPathNode (line 4) | struct FSCMountPathNode
method FSCMountPathNode (line 16) | FSCMountPathNode(FSCMountPathNode* parent) : parent(parent)
method AssignDevice (line 20) | void AssignDevice(fscDeviceC* device, void* ctx, std::string_view devi...
method UnassignDevice (line 27) | void UnassignDevice()
method IsRootNode (line 34) | bool IsRootNode() const
function FSA_CompareNodeName (line 48) | bool FSA_CompareNodeName(std::string_view a, std::string_view b)
function fsc_reset (line 76) | void fsc_reset()
function FSCMountPathNode (line 97) | FSCMountPathNode* fsc_createMountPath(const FSCPath& mountPath, sint32 p...
method FSCMountPathNode (line 16) | FSCMountPathNode(FSCMountPathNode* parent) : parent(parent)
method AssignDevice (line 20) | void AssignDevice(fscDeviceC* device, void* ctx, std::string_view devi...
method UnassignDevice (line 27) | void UnassignDevice()
method IsRootNode (line 34) | bool IsRootNode() const
function sint32 (line 143) | sint32 fsc_mount(std::string_view mountPath, std::string_view targetPath...
function fsc_unmount (line 168) | bool fsc_unmount(std::string_view mountPath, sint32 priority)
function fsc_unmountAll (line 194) | void fsc_unmountAll()
function fsc_lookupPath (line 202) | bool fsc_lookupPath(const char* path, std::string& devicePathOut, fscDev...
function FSCMountPathNode (line 254) | FSCMountPathNode* fsc_lookupPathVirtualNode(const char* path, sint32 pri...
method FSCMountPathNode (line 16) | FSCMountPathNode(FSCMountPathNode* parent) : parent(parent)
method AssignDevice (line 20) | void AssignDevice(fscDeviceC* device, void* ctx, std::string_view devi...
method UnassignDevice (line 27) | void UnassignDevice()
method IsRootNode (line 34) | bool IsRootNode() const
class FSCVirtualFileDirectoryIterator (line 285) | class FSCVirtualFileDirectoryIterator : public FSCVirtualFile
method sint32 (line 288) | sint32 fscGetType() override
method FSCVirtualFileDirectoryIterator (line 293) | FSCVirtualFileDirectoryIterator(std::string_view path, std::span<FSCVi...
method fscDirNext (line 306) | bool fscDirNext(FSCDirEntry* dirEntry) override
method fscRewindDir (line 321) | bool fscRewindDir() override
method addUniqueDirEntry (line 330) | void addUniqueDirEntry(const FSCDirEntry& dirEntry)
method PopulateIterationList (line 342) | void PopulateIterationList()
function FSCVirtualFile (line 378) | FSCVirtualFile* fsc_open(const char* path, FSC_ACCESS_FLAG accessFlags, ...
function FSCVirtualFile (line 444) | FSCVirtualFile* fsc_openDirIterator(const char* path, sint32* fscStatus)
function fsc_nextDir (line 453) | bool fsc_nextDir(FSCVirtualFile* fscFile, FSCDirEntry* dirEntry)
function fsc_createDir (line 470) | bool fsc_createDir(const char* path, sint32* fscStatus)
function fsc_rename (line 490) | bool fsc_rename(const char* srcPath, const char* dstPath, sint32* fscSta...
function fsc_remove (line 510) | bool fsc_remove(const char* path, sint32* fscStatus)
function fsc_close (line 526) | void fsc_close(FSCVirtualFile* fscFile)
function uint32 (line 536) | uint32 fsc_getFileSize(FSCVirtualFile* fscFile)
function uint32 (line 544) | uint32 fsc_getFileSeek(FSCVirtualFile* fscFile)
function fsc_setFileSeek (line 553) | void fsc_setFileSeek(FSCVirtualFile* fscFile, uint32 newSeek)
function fsc_setFileLength (line 564) | void fsc_setFileLength(FSCVirtualFile* fscFile, uint32 newEndOffset)
function fsc_isDirectory (line 582) | bool fsc_isDirectory(FSCVirtualFile* fscFile)
function fsc_isFile (line 590) | bool fsc_isFile(FSCVirtualFile* fscFile)
function fsc_isWritable (line 598) | bool fsc_isWritable(FSCVirtualFile* fscFile)
function uint32 (line 607) | uint32 fsc_readFile(FSCVirtualFile* fscFile, void* buffer, uint32 size)
function uint32 (line 619) | uint32 fsc_writeFile(FSCVirtualFile* fscFile, void* buffer, uint32 size)
function uint8 (line 636) | uint8* fsc_extractFile(const char* path, uint32* fileSize, sint32 maxPri...
function fsc_extractFile (line 664) | std::optional<std::vector<uint8>> fsc_extractFile(const char* path, sint...
function fsc_doesFileExist (line 698) | bool fsc_doesFileExist(const char* path, sint32 maxPriority)
function fsc_doesDirectoryExist (line 715) | bool fsc_doesDirectoryExist(const char* path, sint32 maxPriority)
function fsc_init (line 732) | void fsc_init()
FILE: src/Cafe/Filesystem/fsc.h
type FSCVirtualFile (line 3) | struct FSCVirtualFile
function FSC_ACCESS_FLAG (line 12) | enum class FSC_ACCESS_FLAG : uint8
FILE: src/Cafe/Filesystem/fscDeviceHostFS.cpp
function sint32 (line 15) | sint32 FSCVirtualFile_Host::fscGetType()
function uint32 (line 20) | uint32 FSCVirtualFile_Host::fscDeviceHostFSFile_getFileSize()
function uint64 (line 36) | uint64 FSCVirtualFile_Host::fscQueryValueU64(uint32 id)
function uint32 (line 58) | uint32 FSCVirtualFile_Host::fscWriteData(void* buffer, uint32 size)
function uint32 (line 73) | uint32 FSCVirtualFile_Host::fscReadData(void* buffer, uint32 size)
function uint64 (line 99) | uint64 FSCVirtualFile_Host::fscGetSeek()
function FSCVirtualFile (line 160) | FSCVirtualFile* FSCVirtualFile_Host::OpenFile(const fs::path& path, FSC_...
class fscDeviceHostFSC (line 221) | class fscDeviceHostFSC : public fscDeviceC
method FSCVirtualFile (line 224) | FSCVirtualFile* fscDeviceOpenByPath(std::string_view path, FSC_ACCESS_...
method fscDeviceCreateDir (line 232) | bool fscDeviceCreateDir(std::string_view path, void* ctx, sint32* fscS...
method fscDeviceRemoveFileOrDir (line 250) | bool fscDeviceRemoveFileOrDir(std::string_view path, void* ctx, sint32...
method fscDeviceRename (line 268) | bool fscDeviceRename(std::string_view srcPath, std::string_view dstPat...
method fscDeviceHostFSC (line 285) | static fscDeviceHostFSC& instance()
function FSCDeviceHostFS_Mount (line 292) | bool FSCDeviceHostFS_Mount(std::string_view mountPath, std::string_view ...
FILE: src/Cafe/Filesystem/fscDeviceHostFS.h
function class (line 3) | class FSCVirtualFile_Host : public FSCVirtualFile
FILE: src/Cafe/Filesystem/fscDeviceRedirect.cpp
type RedirectEntry (line 5) | struct RedirectEntry
method RedirectEntry (line 7) | RedirectEntry(const fs::path& dstPath, sint32 priority) : dstPath(dstP...
function fscDeviceRedirect_add (line 14) | void fscDeviceRedirect_add(std::string_view virtualSourcePath, size_t fi...
class fscDeviceTypeRedirect (line 30) | class fscDeviceTypeRedirect : public fscDeviceC
method FSCVirtualFile (line 32) | FSCVirtualFile* fscDeviceOpenByPath(std::string_view path, FSC_ACCESS_...
method fscDeviceTypeRedirect (line 48) | static fscDeviceTypeRedirect& instance()
function fscDeviceRedirect_map (line 57) | void fscDeviceRedirect_map()
FILE: src/Cafe/Filesystem/fscDeviceWua.cpp
class FSCDeviceWuaFileCtx (line 4) | class FSCDeviceWuaFileCtx : public FSCVirtualFile
method FSCDeviceWuaFileCtx (line 9) | FSCDeviceWuaFileCtx(ZArchiveReader* archive, ZArchiveNodeHandle fstFil...
method sint32 (line 18) | sint32 fscGetType() override
method uint32 (line 23) | uint32 fscDeviceWuaFile_getFileSize()
method uint64 (line 28) | uint64 fscQueryValueU64(uint32 id) override
method uint32 (line 46) | uint32 fscWriteData(void* buffer, uint32 size) override
method uint32 (line 52) | uint32 fscReadData(void* buffer, uint32 size) override
method fscSetSeek (line 64) | void fscSetSeek(uint64 seek) override
method uint64 (line 72) | uint64 fscGetSeek() override
method fscDirNext (line 79) | bool fscDirNext(FSCDirEntry* dirEntry) override
class fscDeviceWUAC (line 120) | class fscDeviceWUAC : public fscDeviceC
method FSCVirtualFile (line 122) | FSCVirtualFile* fscDeviceOpenByPath(std::string_view path, FSC_ACCESS_...
method fscDeviceWUAC (line 163) | static fscDeviceWUAC& instance()
function FSCDeviceWUA_Mount (line 170) | bool FSCDeviceWUA_Mount(std::string_view mountPath, std::string_view des...
FILE: src/Cafe/Filesystem/fscDeviceWud.cpp
class FSCDeviceWudFileCtx (line 4) | class FSCDeviceWudFileCtx : public FSCVirtualFile
method FSCDeviceWudFileCtx (line 9) | FSCDeviceWudFileCtx(FSTVolume* _volume, FSTFileHandle _fstFileHandle)
method FSCDeviceWudFileCtx (line 17) | FSCDeviceWudFileCtx(FSTVolume* _volume, FSTDirectoryIterator _dirItera...
method sint32 (line 25) | sint32 fscGetType() override
method uint32 (line 30) | uint32 fscDeviceWudFile_getFileSize()
method uint64 (line 35) | uint64 fscQueryValueU64(uint32 id) override
method uint32 (line 53) | uint32 fscWriteData(void* buffer, uint32 size) override
method uint32 (line 59) | uint32 fscReadData(void* buffer, uint32 size) override
method fscSetSeek (line 71) | void fscSetSeek(uint64 seek) override
method uint64 (line 79) | uint64 fscGetSeek() override
method fscDirNext (line 86) | bool fscDirNext(FSCDirEntry* dirEntry) override
class fscDeviceWUDC (line 121) | class fscDeviceWUDC : public fscDeviceC
method FSCVirtualFile (line 123) | FSCVirtualFile* fscDeviceOpenByPath(std::string_view path, FSC_ACCESS_...
method fscDeviceWUDC (line 152) | static fscDeviceWUDC& instance()
function FSCDeviceWUD_Mount (line 159) | bool FSCDeviceWUD_Mount(std::string_view mountPath, std::string_view des...
FILE: src/Cafe/Filesystem/fscDeviceWuhb.cpp
class FSCDeviceWuhbFileCtx (line 5) | class FSCDeviceWuhbFileCtx : public FSCVirtualFile
method FSCDeviceWuhbFileCtx (line 8) | FSCDeviceWuhbFileCtx(WUHBReader* reader, uint32 entryOffset, uint32 fs...
method sint32 (line 19) | sint32 fscGetType() override
method uint64 (line 23) | uint64 fscQueryValueU64(uint32 id) override
method uint32 (line 40) | uint32 fscWriteData(void* buffer, uint32 size) override
method uint32 (line 45) | uint32 fscReadData(void* buffer, uint32 size) override
method fscSetSeek (line 53) | void fscSetSeek(uint64 seek) override
method uint64 (line 57) | uint64 fscGetSeek() override
method fscSetFileLength (line 63) | void fscSetFileLength(uint64 endOffset) override
method fscDirNext (line 67) | bool fscDirNext(FSCDirEntry* dirEntry) override
class fscDeviceWUHB (line 108) | class fscDeviceWUHB : public fscDeviceC
method FSCVirtualFile (line 110) | FSCVirtualFile* fscDeviceOpenByPath(std::string_view path, FSC_ACCESS_...
method fscDeviceWUHB (line 141) | static fscDeviceWUHB& instance()
function FSCDeviceWUHB_Mount (line 148) | bool FSCDeviceWUHB_Mount(std::string_view mountPath, std::string_view de...
FILE: src/Cafe/GamePatch.cpp
function hleExport_breathOfTheWild_busyLoop (line 7) | void hleExport_breathOfTheWild_busyLoop(PPCInterpreter_t* hCPU)
function hleExport_breathOfTheWild_busyLoop2 (line 21) | void hleExport_breathOfTheWild_busyLoop2(PPCInterpreter_t* hCPU)
function hleExport_ffl_swapEndianFloatArray (line 35) | void hleExport_ffl_swapEndianFloatArray(PPCInterpreter_t* hCPU)
function hleExport_xcx_enterCriticalSection (line 53) | void hleExport_xcx_enterCriticalSection(PPCInterpreter_t* hCPU)
function hleExport_mh3u_raceConditionWorkaround (line 96) | void hleExport_mh3u_raceConditionWorkaround(PPCInterpreter_t* hCPU) // n...
function hleExport_pmcs_yellowPaintStarCrashWorkaround (line 108) | void hleExport_pmcs_yellowPaintStarCrashWorkaround(PPCInterpreter_t* hCPU)
function hle_scan (line 124) | void hle_scan(uint8* data, sint32 dataLength, char* hleFunctionName)
function MPTR (line 150) | MPTR hle_locate(uint8* data, sint32 dataLength)
function compareMasked (line 166) | bool compareMasked(uint8* mem, uint8* compare, uint8* mask, sint32 length)
function MPTR (line 181) | MPTR hle_locate(uint8* data, uint8* mask, sint32 dataLength)
function GamePatch_IsNonReturnFunction (line 292) | bool GamePatch_IsNonReturnFunction(uint32 hleIndex)
function GamePatch_scan (line 305) | void GamePatch_scan()
FILE: src/Cafe/GameProfile/GameProfile.cpp
type gameProfileBooleanOption_t (line 14) | struct gameProfileBooleanOption_t
function gameProfile_loadBooleanOption (line 25) | bool gameProfile_loadBooleanOption(IniParser* iniParser, char* optionNam...
function gameProfile_loadBooleanOption2 (line 51) | bool gameProfile_loadBooleanOption2(IniParser& iniParser, const char* op...
function gameProfile_loadBooleanOption2 (line 71) | bool gameProfile_loadBooleanOption2(IniParser& iniParser, const char* op...
function gameProfile_loadIntegerOption (line 84) | bool gameProfile_loadIntegerOption(IniParser* iniParser, const char* opt...
function gameProfile_loadIntegerOption (line 107) | bool gameProfile_loadIntegerOption(IniParser& iniParser, const char* opt...
function gameProfile_loadEnumOption (line 134) | bool gameProfile_loadEnumOption(IniParser& iniParser, const char* option...
function gameProfile_loadEnumOption (line 160) | bool gameProfile_loadEnumOption(IniParser& iniParser, const char* option...
function gameProfile_load (line 169) | void gameProfile_load()
FILE: src/Cafe/GameProfile/GameProfile.h
type gameProfileIntegerOption_t (line 6) | struct gameProfileIntegerOption_t
function class (line 12) | class GameProfile
FILE: src/Cafe/GraphicPack/GraphicPack2.cpp
function RendererOutputShader (line 1113) | RendererOutputShader* GraphicPack2::GetOuputShader(bool render_upside_down)
function RendererOutputShader (line 1137) | RendererOutputShader* GraphicPack2::GetUpscalingShader(bool render_upsid...
function RendererOutputShader (line 1161) | RendererOutputShader* GraphicPack2::GetDownscalingShader(bool render_ups...
FILE: src/Cafe/GraphicPack/GraphicPack2.h
function class (line 14) | class GraphicPack2
function HasActivePreset (line 133) | [[nodiscard]] bool HasActivePreset() const;
function std (line 169) | static const std::vector<std::shared_ptr<GraphicPack2>>& GetGraphicPacks...
function std (line 170) | static const std::vector<std::shared_ptr<GraphicPack2>>& GetActiveGraphi...
FILE: src/Cafe/GraphicPack/GraphicPack2Patches.cpp
class PatchGroup (line 11) | class PatchGroup
FILE: src/Cafe/GraphicPack/GraphicPack2Patches.h
type PatchContext_t (line 7) | struct PatchContext_t
function PATCH_RESOLVE_RESULT (line 38) | enum class PATCH_RESOLVE_RESULT
function class (line 158) | class PatchEntryInstruction : public PatchEntry
function uint32 (line 187) | uint32 getRelocatedAddr()
function uint8 (line 204) | uint8* m_dataWithRelocs{}
function uint8 (line 205) | uint8* m_dataBackup{}
function sint32 (line 206) | sint32 m_length{}
function m_addrRelocated (line 212) | bool m_addrRelocated{}
function GPCallbackType (line 215) | enum class GPCallbackType {
function uint32 (line 239) | uint32 getCodeCaveBase()
function uint32 (line 244) | uint32 getCodeCaveSize()
function setApplied (line 254) | void setApplied() { m_isApplied = true; }
function resetApplied (line 255) | void resetApplied() { m_isApplied = false; }
function m_isApplied (line 266) | bool m_isApplied{}
function m_isRpxOnlyTarget (line 267) | bool m_isRpxOnlyTarget{}
FILE: src/Cafe/GraphicPack/GraphicPack2PatchesApply.cpp
function _relocateAddress (line 9) | bool _relocateAddress(PatchGroup* group, PatchContext_t* ctx, uint32 add...
function T (line 53) | T _expressionFuncHA(T input)
function T (line 61) | T _expressionFuncHI(T input)
function T (line 69) | T _expressionFuncLO(T input)
function T (line 77) | T _expressionFuncReloc(T input)
function _cbResolveConstant (line 89) | double _cbResolveConstant(std::string_view varname)
function _cbResolveFunction (line 209) | double _cbResolveFunction(std::string_view funcname, double input)
function EXPRESSION_RESOLVE_RESULT (line 239) | EXPRESSION_RESOLVE_RESULT _resolveExpression(PatchContext_t& ctx, std::s...
function PATCH_RESOLVE_RESULT (line 262) | PATCH_RESOLVE_RESULT translateExpressionResult(EXPRESSION_RESOLVE_RESULT...
function PATCH_RESOLVE_RESULT (line 274) | PATCH_RESOLVE_RESULT PatchEntryInstruction::resolveReloc(PatchContext_t&...
function PATCH_RESOLVE_RESULT (line 434) | PATCH_RESOLVE_RESULT PatchEntryInstruction::resolve(PatchContext_t& ctx)
function registerU32Variable (line 494) | bool registerU32Variable(PatchContext_t& ctx, std::string& name, uint32 ...
function PATCH_RESOLVE_RESULT (line 508) | PATCH_RESOLVE_RESULT PatchEntryCemuhookSymbolValue::resolve(PatchContext...
function PATCH_RESOLVE_RESULT (line 531) | PATCH_RESOLVE_RESULT PatchEntryLabel::resolve(PatchContext_t& ctx)
function PATCH_RESOLVE_RESULT (line 550) | PATCH_RESOLVE_RESULT PatchEntryVariableValue::resolve(PatchContext_t& ctx)
type UnresolvedPatches_t (line 568) | struct UnresolvedPatches_t
function _resolverPass (line 575) | bool _resolverPass(PatchContext_t& patchContext, std::vector<UnresolvedP...
FILE: src/Cafe/GraphicPack/GraphicPack2PatchesParser.cpp
function sint32 (line 7) | sint32 GraphicPack2::GetLengthWithoutComment(const char* str, size_t len...
function reset (line 235) | void reset()
function setOrigin (line 241) | void setOrigin(uint32 origin)
function setOriginCodeCave (line 246) | void setOriginCodeCave()
function isValidOrigin (line 251) | bool isValidOrigin()
function incrementOrigin (line 256) | void incrementOrigin(uint32 size)
FILE: src/Cafe/GraphicPack/GraphicPackError.h
type class (line 6) | enum class
function setCurrentGraphicPack (line 13) | void setCurrentGraphicPack(class GraphicPack2* gp)
function setStage (line 18) | void setStage(STAGE s)
function class (line 28) | class GraphicPack2* m_gp{}
function m_anyErrorTriggered (line 29) | bool m_anyErrorTriggered{}
function STAGE (line 30) | STAGE m_stage{ STAGE::PARSER };
FILE: src/Cafe/HW/ACR/ACR.cpp
type HW_ACR (line 4) | namespace HW_ACR
function ACR_VIDATA_R32 (line 26) | HWREG::ACR_VI_DATA ACR_VIDATA_R32(PAddr addr)
function ACR_VIDATA_W32 (line 32) | void ACR_VIDATA_W32(PAddr addr, HWREG::ACR_VI_DATA newValue)
function ACR_VIADDR_R32 (line 38) | HWREG::ACR_VI_ADDR ACR_VIADDR_R32(PAddr addr)
function ACR_VIADDR_W32 (line 43) | void ACR_VIADDR_W32(PAddr addr, HWREG::ACR_VI_ADDR newValue)
function ACR_VICONTROL_R32 (line 49) | HWREG::ACR_VI_CTRL ACR_VICONTROL_R32(PAddr addr)
function ACR_VICONTROL_W32 (line 54) | void ACR_VICONTROL_W32(PAddr addr, HWREG::ACR_VI_CTRL newValue)
FILE: src/Cafe/HW/AI/AI.cpp
type HW_AI (line 4) | namespace HW_AI
function AI_STATUS_W16 (line 7) | void AI_STATUS_W16(uint32 addr, uint16 value)
FILE: src/Cafe/HW/Common/HwReg.h
function namespace (line 3) | namespace HWREG
FILE: src/Cafe/HW/Espresso/Const.h
function namespace (line 3) | namespace Espresso
FILE: src/Cafe/HW/Espresso/Debugger/DebugSymbolStorage.h
function DEBUG_SYMBOL_TYPE (line 4) | enum class DEBUG_SYMBOL_TYPE
FILE: src/Cafe/HW/Espresso/Debugger/Debugger.cpp
function DebuggerBreakpoint (line 20) | DebuggerBreakpoint* debugger_getFirstBP(uint32 address)
function DebuggerBreakpoint (line 30) | DebuggerBreakpoint* debugger_getFirstBP(uint32 address, uint8 bpType)
function debuggerBPChain_hasType (line 49) | bool debuggerBPChain_hasType(DebuggerBreakpoint* bp, uint8 bpType)
function debuggerBPChain_add (line 60) | void debuggerBPChain_add(uint32 address, DebuggerBreakpoint* bp)
function uint32 (line 75) | uint32 debugger_getAddressOriginalOpcode(uint32 address)
function debugger_updateMemoryU32 (line 87) | void debugger_updateMemoryU32(uint32 address, uint32 newValue)
function debugger_updateExecutionBreakpoint (line 97) | void debugger_updateExecutionBreakpoint(uint32 address, bool forceRestore)
function debugger_createCodeBreakpoint (line 127) | void debugger_createCodeBreakpoint(uint32 address, uint8 bpType)
type coreinit (line 141) | namespace coreinit
function debugger_updateMemoryBreakpoint (line 146) | void debugger_updateMemoryBreakpoint(DebuggerBreakpoint* bp)
function debugger_handleSingleStepException (line 191) | void debugger_handleSingleStepException(uint64 dr6)
function debugger_createMemoryBreakpoint (line 232) | void debugger_createMemoryBreakpoint(uint32 address, bool onRead, bool o...
function debugger_handleEntryBreakpoint (line 255) | void debugger_handleEntryBreakpoint(uint32 address)
function debugger_deleteBreakpoint (line 263) | void debugger_deleteBreakpoint(DebuggerBreakpoint* bp)
function debugger_toggleExecuteBreakpoint (line 301) | void debugger_toggleExecuteBreakpoint(uint32 address)
function debugger_toggleLoggingBreakpoint (line 316) | void debugger_toggleLoggingBreakpoint(uint32 address)
function debugger_forceBreak (line 331) | void debugger_forceBreak()
function debugger_isTrapped (line 336) | bool debugger_isTrapped()
function debugger_resume (line 341) | void debugger_resume()
function debugger_toggleBreakpoint (line 347) | void debugger_toggleBreakpoint(uint32 address, bool state, DebuggerBreak...
function debugger_createPatch (line 388) | void debugger_createPatch(uint32 address, std::span<uint8> patchData)
function debugger_hasPatch (line 469) | bool debugger_hasPatch(uint32 address)
function debugger_removePatch (line 479) | void debugger_removePatch(uint32 address)
function debugger_stepInto (line 507) | void debugger_stepInto(PPCInterpreter_t* hCPU, bool updateDebuggerWindow...
function debugger_stepOver (line 521) | bool debugger_stepOver(PPCInterpreter_t* hCPU)
function debugger_createPPCStateSnapshot (line 552) | void debugger_createPPCStateSnapshot(PPCInterpreter_t* hCPU)
function debugger_enterTW (line 561) | void debugger_enterTW(PPCInterpreter_t* hCPU)
function debugger_shouldBreak (line 694) | void debugger_shouldBreak(PPCInterpreter_t* hCPU)
function debugger_addParserSymbols (line 708) | void debugger_addParserSymbols(class ExpressionParser& ep)
FILE: src/Cafe/HW/Espresso/Debugger/Debugger.h
function class (line 18) | class DebuggerCallbacks
function class (line 31) | class DebuggerDispatcher
type DebuggerBreakpoint (line 88) | struct DebuggerBreakpoint
type DebuggerPatch (line 126) | struct DebuggerPatch
type PPCSnapshot (line 134) | struct PPCSnapshot
type debuggerState_t (line 142) | typedef struct
FILE: src/Cafe/HW/Espresso/Debugger/GDBBreakpoints.cpp
function DRType (line 10) | DRType _GetDR(pid_t tid, int drIndex)
function _SetDR (line 22) | void _SetDR(pid_t tid, int drIndex, DRType newValue)
function DRType (line 31) | DRType _ReadDR6()
function uint32 (line 119) | uint32 GDBServer::ExecutionBreakpoint::GetVisibleOpCode() const
type coreinit (line 141) | namespace coreinit
FILE: src/Cafe/HW/Espresso/Debugger/GDBBreakpoints.h
type DRType (line 9) | typedef unsigned long DRType;
type class (line 16) | enum class
function class (line 24) | class GDBServer::ExecutionBreakpoint {
type class (line 82) | enum class
function class (line 89) | class GDBServer::AccessBreakpoint {
FILE: src/Cafe/HW/Espresso/Debugger/GDBStub.cpp
function findNextInstruction (line 18) | static std::vector<MPTR> findNextInstruction(MPTR currAddress, uint32 lr...
function selectThread (line 54) | static void selectThread(sint64 selectorId, F&& action_for_thread)
function selectAndBreakThread (line 88) | static void selectAndBreakThread(sint64 selectorId, F&& action_for_thread)
function selectAndResumeThread (line 139) | static void selectAndResumeThread(sint64 selectorId)
function waitForBrokenThreads (line 171) | static void waitForBrokenThreads(std::unique_ptr<GDBServer::CommandConte...
function breakThreads (line 193) | static void breakThreads(sint64 trappedThread)
type sockaddr (line 308) | struct sockaddr
FILE: src/Cafe/HW/Espresso/Debugger/GDBStub.h
function class (line 9) | class GDBServer {
FILE: src/Cafe/HW/Espresso/EspressoISA.h
type CR_BIT (line 5) | enum CR_BIT
type class (line 13) | enum class
type class (line 25) | enum class
function Opcode19 (line 90) | enum class Opcode19
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterALU.hpp
function PPCInterpreter_setXerOV (line 2) | static void PPCInterpreter_setXerOV(PPCInterpreter_t* hCPU, bool hasOver...
function checkAdditionOverflow (line 15) | static bool checkAdditionOverflow(uint32 x, uint32 y, uint32 r)
function PPCInterpreter_ADD (line 33) | static void PPCInterpreter_ADD(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDO (line 42) | static void PPCInterpreter_ADDO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDC (line 54) | static void PPCInterpreter_ADDC(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDCO (line 68) | static void PPCInterpreter_ADDCO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDE (line 85) | static void PPCInterpreter_ADDE(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDEO (line 102) | static void PPCInterpreter_ADDEO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDI (line 121) | static void PPCInterpreter_ADDI(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDIC (line 130) | static void PPCInterpreter_ADDIC(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDIC_ (line 145) | static void PPCInterpreter_ADDIC_(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDIS (line 161) | static void PPCInterpreter_ADDIS(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDZE (line 170) | static void PPCInterpreter_ADDZE(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDZEO (line 186) | static void PPCInterpreter_ADDZEO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDME (line 203) | static void PPCInterpreter_ADDME(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ADDMEO (line 219) | static void PPCInterpreter_ADDMEO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SUBF (line 236) | static void PPCInterpreter_SUBF(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SUBFO (line 245) | static void PPCInterpreter_SUBFO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SUBFC (line 258) | static void PPCInterpreter_SUBFC(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SUBFCO (line 274) | static void PPCInterpreter_SUBFCO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SUBFIC (line 293) | static void PPCInterpreter_SUBFIC(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SUBFE (line 307) | static void PPCInterpreter_SUBFE(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SUBFEO (line 324) | static void PPCInterpreter_SUBFEO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SUBFZE (line 343) | static void PPCInterpreter_SUBFZE(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SUBFZEO (line 359) | static void PPCInterpreter_SUBFZEO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SUBFME (line 376) | static void PPCInterpreter_SUBFME(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SUBFMEO (line 393) | static void PPCInterpreter_SUBFMEO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_MULHW_ (line 411) | static void PPCInterpreter_MULHW_(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_MULHWU_ (line 423) | static void PPCInterpreter_MULHWU_(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_MULLW (line 435) | static void PPCInterpreter_MULLW(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_MULLWO (line 445) | static void PPCInterpreter_MULLWO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_MULLI (line 458) | static void PPCInterpreter_MULLI(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_DIVW (line 467) | static void PPCInterpreter_DIVW(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_DIVWO (line 483) | static void PPCInterpreter_DIVWO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_DIVWU (line 508) | static void PPCInterpreter_DIVWU(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_DIVWUO (line 524) | static void PPCInterpreter_DIVWUO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CREQV (line 549) | static void PPCInterpreter_CREQV(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CRAND (line 556) | static void PPCInterpreter_CRAND(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CRANDC (line 563) | static void PPCInterpreter_CRANDC(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CRNAND (line 570) | static void PPCInterpreter_CRNAND(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CROR (line 577) | static void PPCInterpreter_CROR(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CRORC (line 584) | static void PPCInterpreter_CRORC(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CRNOR (line 591) | static void PPCInterpreter_CRNOR(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CRXOR (line 598) | static void PPCInterpreter_CRXOR(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_NEG (line 605) | static void PPCInterpreter_NEG(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_NEGO (line 615) | static void PPCInterpreter_NEGO(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ANDX (line 626) | static void PPCInterpreter_ANDX(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ANDCX (line 635) | static void PPCInterpreter_ANDCX(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ANDI_ (line 644) | static void PPCInterpreter_ANDI_(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ANDIS_ (line 654) | static void PPCInterpreter_ANDIS_(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_NANDX (line 664) | static void PPCInterpreter_NANDX(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_OR (line 673) | static void PPCInterpreter_OR(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ORC (line 682) | static void PPCInterpreter_ORC(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ORI (line 691) | static void PPCInterpreter_ORI(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_ORIS (line 700) | static void PPCInterpreter_ORIS(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_NORX (line 709) | static void PPCInterpreter_NORX(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_XOR (line 718) | static void PPCInterpreter_XOR(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_XORI (line 727) | static void PPCInterpreter_XORI(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_XORIS (line 736) | static void PPCInterpreter_XORIS(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_EQV (line 745) | static void PPCInterpreter_EQV(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_RLWIMI (line 754) | static void PPCInterpreter_RLWIMI(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_RLWINM (line 766) | static void PPCInterpreter_RLWINM(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_RLWNM (line 778) | static void PPCInterpreter_RLWNM(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SLWX (line 790) | static void PPCInterpreter_SLWX(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SRAW (line 803) | static void PPCInterpreter_SRAW(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SRWX (line 827) | static void PPCInterpreter_SRWX(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_SRAWI (line 840) | static void PPCInterpreter_SRAWI(PPCInterpreter_t* hCPU, uint32 opcode)
function uint32 (line 872) | static uint32 _CNTLZW(uint32 v)
function PPCInterpreter_CNTLZW (line 886) | static void PPCInterpreter_CNTLZW(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_EXTSB (line 896) | static void PPCInterpreter_EXTSB(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_EXTSH (line 906) | static void PPCInterpreter_EXTSH(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CMP (line 916) | static void PPCInterpreter_CMP(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CMPL (line 938) | static void PPCInterpreter_CMPL(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CMPI (line 960) | static void PPCInterpreter_CMPI(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_CMPLI (line 983) | static void PPCInterpreter_CMPLI(PPCInterpreter_t* hCPU, uint32 opcode)
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterFPU.cpp
function ATTR_MS_ABI (line 35) | ATTR_MS_ABI double frsqrte_espresso(double input)
function ATTR_MS_ABI (line 114) | ATTR_MS_ABI double fres_espresso(double input)
function fcmpu_espresso (line 167) | void fcmpu_espresso(PPCInterpreter_t* hCPU, int crfD, double a, double b)
function PPCInterpreter_FMR (line 203) | void PPCInterpreter_FMR(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FSEL (line 215) | void PPCInterpreter_FSEL(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FCTIWZ (line 230) | void PPCInterpreter_FCTIWZ(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FCTIW (line 259) | void PPCInterpreter_FCTIW(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FNEG (line 295) | void PPCInterpreter_FNEG(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FRSP (line 310) | void PPCInterpreter_FRSP(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FRSQRTE (line 331) | void PPCInterpreter_FRSQRTE(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FRES (line 344) | void PPCInterpreter_FRES(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FABS (line 362) | void PPCInterpreter_FABS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FNABS (line 375) | void PPCInterpreter_FNABS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FADD (line 388) | void PPCInterpreter_FADD(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FDIV (line 401) | void PPCInterpreter_FDIV(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FSUB (line 414) | void PPCInterpreter_FSUB(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FMUL (line 427) | void PPCInterpreter_FMUL(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FMADD (line 440) | void PPCInterpreter_FMADD(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FNMADD (line 452) | void PPCInterpreter_FNMADD(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FMSUB (line 464) | void PPCInterpreter_FMSUB(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FNMSUB (line 476) | void PPCInterpreter_FNMSUB(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_MFFS (line 490) | void PPCInterpreter_MFFS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_MTFSF (line 502) | void PPCInterpreter_MTFSF(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FADDS (line 526) | void PPCInterpreter_FADDS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FSUBS (line 543) | void PPCInterpreter_FSUBS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FDIVS (line 558) | void PPCInterpreter_FDIVS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FMULS (line 573) | void PPCInterpreter_FMULS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FMADDS (line 588) | void PPCInterpreter_FMADDS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FNMADDS (line 602) | void PPCInterpreter_FNMADDS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FMSUBS (line 616) | void PPCInterpreter_FMSUBS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FNMSUBS (line 630) | void PPCInterpreter_FNMSUBS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FCMPO (line 646) | void PPCInterpreter_FCMPO(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_FCMPU (line 690) | void PPCInterpreter_FCMPU(PPCInterpreter_t* hCPU, uint32 Opcode)
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterHLE.cpp
function PPCInterpreter_handleUnsupportedHLECall (line 7) | void PPCInterpreter_handleUnsupportedHLECall(PPCInterpreter_t* hCPU)
function HLEIDX (line 25) | HLEIDX PPCInterpreter_registerHLECall(HLECALL hleCall, std::string hleName)
function HLECALL (line 47) | HLECALL PPCInterpreter_getHLECall(HLEIDX funcIndex)
function PPCInterpreter_virtualHLE (line 56) | void PPCInterpreter_virtualHLE(PPCInterpreter_t* hCPU, unsigned int opcode)
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterHelper.h
function uint32 (line 16) | static inline uint32 ppc_mask(int MB, int ME)
function ppc_carry_3 (line 24) | static inline bool ppc_carry_3(uint32 a, uint32 b, uint32 c)
function dequantize (line 67) | static float dequantize(uint32 data, sint32 type, uint8 scale)
function uint32 (line 97) | static uint32 quantize(float data, sint32 type, uint8 scale)
function uint64 (line 138) | static inline uint64 ConvertToDoubleNoFTZ(uint32 value)
function uint32 (line 171) | static inline uint32 ConvertToSingleNoFTZ(uint64 x)
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterImpl.cpp
class PPCItpCafeOSUsermode (line 6) | class PPCItpCafeOSUsermode
method uint32 (line 12) | inline static uint32 memory_readCodeU32(PPCInterpreter_t* hCPU, uint32...
method ppcMem_writeDataDouble (line 17) | inline static void ppcMem_writeDataDouble(PPCInterpreter_t* hCPU, uint...
method ppcMem_writeDataU64 (line 27) | inline static void ppcMem_writeDataU64(PPCInterpreter_t* hCPU, uint32 ...
method ppcMem_writeDataU32 (line 32) | inline static void ppcMem_writeDataU32(PPCInterpreter_t* hCPU, uint32 ...
method ppcMem_writeDataU16 (line 37) | inline static void ppcMem_writeDataU16(PPCInterpreter_t* hCPU, uint32 ...
method ppcMem_writeDataU8 (line 42) | inline static void ppcMem_writeDataU8(PPCInterpreter_t* hCPU, uint32 a...
method ppcMem_readDataDouble (line 47) | inline static double ppcMem_readDataDouble(PPCInterpreter_t* hCPU, uin...
method ppcMem_readDataFloat (line 57) | inline static float ppcMem_readDataFloat(PPCInterpreter_t* hCPU, uint3...
method uint64 (line 64) | inline static uint64 ppcMem_readDataU64(PPCInterpreter_t* hCPU, uint32...
method uint32 (line 70) | inline static uint32 ppcMem_readDataU32(PPCInterpreter_t* hCPU, uint32...
method uint16 (line 76) | inline static uint16 ppcMem_readDataU16(PPCInterpreter_t* hCPU, uint32...
method uint8 (line 82) | inline static uint8 ppcMem_readDataU8(PPCInterpreter_t* hCPU, uint32 a...
method uint64 (line 87) | inline static uint64 ppcMem_readDataFloatEx(PPCInterpreter_t* hCPU, ui...
method ppcMem_writeDataFloatEx (line 92) | inline static void ppcMem_writeDataFloatEx(PPCInterpreter_t* hCPU, uin...
method uint64 (line 97) | inline static uint64 getTB(PPCInterpreter_t* hCPU)
function generateDSIException (line 105) | void generateDSIException(PPCInterpreter_t* hCPU, uint32 dataAddress)
class PPCItpSupervisorWithMMU (line 129) | class PPCItpSupervisorWithMMU
method uint32 (line 135) | inline static uint32 ppcMem_translateVirtualDataToPhysicalAddr(PPCInte...
method uint32 (line 258) | inline static uint32 ppcMem_translateVirtualCodeToPhysicalAddr(PPCInte...
method uint32 (line 301) | static uint32 memory_readCodeU32(PPCInterpreter_t* hCPU, uint32 address)
method uint8 (line 306) | inline static uint8* ppcMem_getDataPtr(PPCInterpreter_t* hCPU, uint32 ...
method ppcMem_writeDataDouble (line 311) | inline static void ppcMem_writeDataDouble(PPCInterpreter_t* hCPU, uint...
method ppcMem_writeDataU64 (line 321) | inline static void ppcMem_writeDataU64(PPCInterpreter_t* hCPU, uint32 ...
method ppcMem_writeDataU32 (line 326) | inline static void ppcMem_writeDataU32(PPCInterpreter_t* hCPU, uint32 ...
method ppcMem_writeDataU16 (line 340) | inline static void ppcMem_writeDataU16(PPCInterpreter_t* hCPU, uint32 ...
method ppcMem_writeDataU8 (line 345) | inline static void ppcMem_writeDataU8(PPCInterpreter_t* hCPU, uint32 a...
method ppcMem_readDataDouble (line 350) | inline static double ppcMem_readDataDouble(PPCInterpreter_t* hCPU, uin...
method ppcMem_readDataFloat (line 360) | inline static float ppcMem_readDataFloat(PPCInterpreter_t* hCPU, uint3...
method uint64 (line 367) | inline static uint64 ppcMem_readDataU64(PPCInterpreter_t* hCPU, uint32...
method uint32 (line 373) | inline static uint32 ppcMem_readDataU32(PPCInterpreter_t* hCPU, uint32...
method uint16 (line 398) | inline static uint16 ppcMem_readDataU16(PPCInterpreter_t* hCPU, uint32...
method uint8 (line 404) | inline static uint8 ppcMem_readDataU8(PPCInterpreter_t* hCPU, uint32 a...
method uint64 (line 415) | inline static uint64 ppcMem_readDataFloatEx(PPCInterpreter_t* hCPU, ui...
method ppcMem_writeDataFloatEx (line 420) | inline static void ppcMem_writeDataFloatEx(PPCInterpreter_t* hCPU, uin...
method uint64 (line 425) | inline static uint64 getTB(PPCInterpreter_t* hCPU)
class PPCInterpreterContainer (line 432) | class PPCInterpreterContainer
method executeInstruction (line 440) | static void executeInstruction(PPCInterpreter_t* hCPU)
function PPCInterpreterSlim_executeInstruction (line 1255) | void PPCInterpreterSlim_executeInstruction(PPCInterpreter_t* hCPU)
function PPCInterpreterFull_executeInstruction (line 1262) | void PPCInterpreterFull_executeInstruction(PPCInterpreter_t* hCPU)
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterInternal.h
function ppc_update_cr0 (line 119) | static inline void ppc_update_cr0(PPCInterpreter_t* hCPU, uint32 r)
function uint8 (line 128) | static inline uint8 ppc_getCRBit(PPCInterpreter_t* hCPU, uint32 r)
function ppc_MTCRFMaskHasCRFieldSet (line 133) | static inline bool ppc_MTCRFMaskHasCRFieldSet(const uint32 mtcrfMask, co...
function uint32 (line 141) | static inline uint32 ppc_MTCRFMaskToCRBitMask(const uint32 mtcrfMask)
function ppc_setCRBit (line 152) | static inline void ppc_setCRBit(PPCInterpreter_t* hCPU, uint32 r, uint8 v)
function ppc_setCR (line 157) | static inline void ppc_setCR(PPCInterpreter_t* hCPU, uint32 cr)
function uint32 (line 167) | static inline uint32 ppc_getCR(PPCInterpreter_t* hCPU)
function roundTo25BitAccuracy (line 187) | inline double roundTo25BitAccuracy(double d)
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterLoadStore.hpp
function PPCInterpreter_STW (line 16) | static void PPCInterpreter_STW(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STWU (line 32) | static void PPCInterpreter_STWU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STWX (line 43) | static void PPCInterpreter_STWX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STWCX (line 51) | static void PPCInterpreter_STWCX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STWUX (line 104) | static void PPCInterpreter_STWUX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STWBRX (line 114) | static void PPCInterpreter_STWBRX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STMW (line 122) | static void PPCInterpreter_STMW(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STH (line 137) | static void PPCInterpreter_STH(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STHU (line 146) | static void PPCInterpreter_STHU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STHX (line 157) | static void PPCInterpreter_STHX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STHUX (line 165) | static void PPCInterpreter_STHUX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STHBRX (line 175) | static void PPCInterpreter_STHBRX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STB (line 183) | static void PPCInterpreter_STB(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STBU (line 192) | static void PPCInterpreter_STBU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STBX (line 202) | static void PPCInterpreter_STBX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STBUX (line 210) | static void PPCInterpreter_STBUX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STSWI (line 220) | static void PPCInterpreter_STSWI(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STSWX (line 246) | static void PPCInterpreter_STSWX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LWZ (line 280) | static void PPCInterpreter_LWZ(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LWZU (line 291) | static void PPCInterpreter_LWZU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LMW (line 301) | static void PPCInterpreter_LMW(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LWZX (line 316) | static void PPCInterpreter_LWZX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LWZXU (line 324) | static void PPCInterpreter_LWZXU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LWBRX (line 335) | static void PPCInterpreter_LWBRX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LWARX (line 344) | static void PPCInterpreter_LWARX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LHZ (line 356) | static void PPCInterpreter_LHZ(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LHZU (line 365) | static void PPCInterpreter_LHZU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LHZX (line 376) | static void PPCInterpreter_LHZX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LHZUX (line 384) | static void PPCInterpreter_LHZUX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LHBRX (line 395) | static void PPCInterpreter_LHBRX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LHA (line 403) | static void PPCInterpreter_LHA(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LHAU (line 413) | static void PPCInterpreter_LHAU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LHAUX (line 425) | static void PPCInterpreter_LHAUX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LHAX (line 437) | static void PPCInterpreter_LHAX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LBZ (line 447) | static void PPCInterpreter_LBZ(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LBZX (line 456) | static void PPCInterpreter_LBZX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LBZXU (line 464) | static void PPCInterpreter_LBZXU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LBZU (line 475) | static void PPCInterpreter_LBZU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LSWI (line 489) | static void PPCInterpreter_LSWI(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LSWX (line 527) | static void PPCInterpreter_LSWX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LFS (line 573) | static void PPCInterpreter_LFS(PPCInterpreter_t* hCPU, uint32 Opcode) //...
function PPCInterpreter_LFSX (line 592) | static void PPCInterpreter_LFSX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LFSUX (line 608) | static void PPCInterpreter_LFSUX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LFSU (line 627) | static void PPCInterpreter_LFSU(PPCInterpreter_t* hCPU, uint32 Opcode) /...
function PPCInterpreter_LFD (line 650) | static void PPCInterpreter_LFD(PPCInterpreter_t* hCPU, uint32 Opcode) //...
function PPCInterpreter_LFDU (line 660) | static void PPCInterpreter_LFDU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LFDX (line 673) | static void PPCInterpreter_LFDX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_LFDUX (line 682) | static void PPCInterpreter_LFDUX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STFS (line 693) | static void PPCInterpreter_STFS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STFSU (line 706) | static void PPCInterpreter_STFSU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STFSX (line 723) | static void PPCInterpreter_STFSX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STFSUX (line 737) | static void PPCInterpreter_STFSUX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STFD (line 756) | static void PPCInterpreter_STFD(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STFDU (line 774) | static void PPCInterpreter_STFDU(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STFDX (line 801) | static void PPCInterpreter_STFDX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STFDUX (line 818) | static void PPCInterpreter_STFDUX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_STFIWX (line 839) | static void PPCInterpreter_STFIWX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PSQ_ST (line 870) | static void PPCInterpreter_PSQ_ST(PPCInterpreter_t* hCPU, unsigned int o...
function PPCInterpreter_PSQ_STU (line 904) | static void PPCInterpreter_PSQ_STU(PPCInterpreter_t* hCPU, unsigned int ...
function PPCInterpreter_PSQ_STX (line 943) | static void PPCInterpreter_PSQ_STX(PPCInterpreter_t* hCPU, unsigned int ...
function PPCInterpreter_PSQ_L (line 978) | static void PPCInterpreter_PSQ_L(PPCInterpreter_t* hCPU, unsigned int op...
function PPCInterpreter_PSQ_LU (line 1040) | static void PPCInterpreter_PSQ_LU(PPCInterpreter_t* hCPU, unsigned int o...
function PPCInterpreter_PSQ_LX (line 1092) | static void PPCInterpreter_PSQ_LX(PPCInterpreter_t* hCPU, unsigned int o...
function PPCInterpreter_DCBZ (line 1143) | static void PPCInterpreter_DCBZ(PPCInterpreter_t* hCPU, uint32 Opcode)
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterMain.cpp
function PPCInterpreter_t (line 15) | PPCInterpreter_t* PPCInterpreter_createInstance(unsigned int Entrypoint)
function TLS_WORKAROUND_NOINLINE (line 31) | TLS_WORKAROUND_NOINLINE PPCInterpreter_t* PPCInterpreter_getCurrentInsta...
function TLS_WORKAROUND_NOINLINE (line 36) | TLS_WORKAROUND_NOINLINE void PPCInterpreter_setCurrentInstance(PPCInterp...
function uint64 (line 41) | uint64 PPCInterpreter_getMainCoreCycleCounter()
function PPCInterpreter_nextInstruction (line 46) | void PPCInterpreter_nextInstruction(PPCInterpreter_t* cpuInterpreter)
function PPCInterpreter_jumpToInstruction (line 51) | void PPCInterpreter_jumpToInstruction(PPCInterpreter_t* cpuInterpreter, ...
function PPCInterpreter_setDEC (line 56) | void PPCInterpreter_setDEC(PPCInterpreter_t* hCPU, uint32 newValue)
function uint32 (line 63) | uint32 PPCInterpreter_getXER(PPCInterpreter_t* hCPU)
function PPCInterpreter_setXER (line 78) | void PPCInterpreter_setXER(PPCInterpreter_t* hCPU, uint32 v)
function uint32 (line 87) | uint32 PPCInterpreter_getCoreIndex(PPCInterpreter_t* hCPU)
function uint32 (line 92) | uint32 PPCInterpreter_getCurrentCoreIndex()
function uint8 (line 97) | uint8* PPCInterpreterGetStackPointer()
function uint8 (line 102) | uint8* PPCInterpreter_PushAndReturnStackPointer(sint32 offset)
function PPCInterpreterModifyStackPointer (line 110) | void PPCInterpreterModifyStackPointer(sint32 offset)
function uint32 (line 118) | uint32 PPCInterpreter_makeCallableExportDepr(void (*ppcCallableExport)(P...
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterOPC.cpp
function PPCInterpreter_MFMSR (line 12) | void PPCInterpreter_MFMSR(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_MTMSR (line 28) | void PPCInterpreter_MTMSR(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_MTFSB1X (line 43) | void PPCInterpreter_MTFSB1X(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_MCRF (line 61) | void PPCInterpreter_MCRF(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_MFCR (line 73) | void PPCInterpreter_MFCR(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_MTCRF (line 92) | void PPCInterpreter_MTCRF(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_MCRXR (line 116) | void PPCInterpreter_MCRXR(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_TLBIE (line 139) | void PPCInterpreter_TLBIE(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_TLBSYNC (line 147) | void PPCInterpreter_TLBSYNC(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_BX (line 155) | void PPCInterpreter_BX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_BCX (line 174) | void PPCInterpreter_BCX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_BCLRX (line 203) | void PPCInterpreter_BCLRX(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_BCCTR (line 239) | void PPCInterpreter_BCCTR(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_DCBT (line 267) | void PPCInterpreter_DCBT(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_DCBST (line 275) | void PPCInterpreter_DCBST(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_DCBF (line 288) | void PPCInterpreter_DCBF(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_DCBZL (line 301) | void PPCInterpreter_DCBZL(PPCInterpreter_t* hCPU, uint32 Opcode) //Undoc...
function PPCInterpreter_DCBI (line 307) | void PPCInterpreter_DCBI(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_ICBI (line 313) | void PPCInterpreter_ICBI(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_EIEIO (line 323) | void PPCInterpreter_EIEIO(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_SC (line 330) | void PPCInterpreter_SC(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_SYNC (line 337) | void PPCInterpreter_SYNC(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_ISYNC (line 344) | void PPCInterpreter_ISYNC(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_RFI (line 351) | void PPCInterpreter_RFI(PPCInterpreter_t* hCPU, uint32 Opcode)
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterOPC.hpp
function PPCInterpreter_MFSPR (line 2) | static void PPCInterpreter_MFSPR(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_MTSPR (line 13) | static void PPCInterpreter_MTSPR(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_MFSR (line 23) | static void PPCInterpreter_MFSR(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_MTSR (line 32) | static void PPCInterpreter_MTSR(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_MFTB (line 41) | static void PPCInterpreter_MFTB(PPCInterpreter_t* hCPU, uint32 opcode)
function PPCInterpreter_TW (line 65) | static void PPCInterpreter_TW(PPCInterpreter_t* hCPU, uint32 opcode)
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterPS.cpp
function PPCInterpreter_PS_ADD (line 5) | void PPCInterpreter_PS_ADD(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_SUB (line 20) | void PPCInterpreter_PS_SUB(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MUL (line 35) | void PPCInterpreter_PS_MUL(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_DIV (line 50) | void PPCInterpreter_PS_DIV(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MADD (line 66) | void PPCInterpreter_PS_MADD(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_NMADD (line 85) | void PPCInterpreter_PS_NMADD(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MSUB (line 104) | void PPCInterpreter_PS_MSUB(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_NMSUB (line 123) | void PPCInterpreter_PS_NMSUB(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MADDS0 (line 142) | void PPCInterpreter_PS_MADDS0(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MADDS1 (line 162) | void PPCInterpreter_PS_MADDS1(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_SEL (line 182) | void PPCInterpreter_PS_SEL(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_SUM0 (line 206) | void PPCInterpreter_PS_SUM0(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_SUM1 (line 225) | void PPCInterpreter_PS_SUM1(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MULS0 (line 244) | void PPCInterpreter_PS_MULS0(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MULS1 (line 263) | void PPCInterpreter_PS_MULS1(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MR (line 282) | void PPCInterpreter_PS_MR(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_NEG (line 296) | void PPCInterpreter_PS_NEG(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_ABS (line 310) | void PPCInterpreter_PS_ABS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_NABS (line 324) | void PPCInterpreter_PS_NABS(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_RSQRTE (line 338) | void PPCInterpreter_PS_RSQRTE(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MERGE00 (line 352) | void PPCInterpreter_PS_MERGE00(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MERGE01 (line 369) | void PPCInterpreter_PS_MERGE01(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MERGE10 (line 387) | void PPCInterpreter_PS_MERGE10(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_MERGE11 (line 405) | void PPCInterpreter_PS_MERGE11(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_RES (line 423) | void PPCInterpreter_PS_RES(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_CMPO0 (line 439) | void PPCInterpreter_PS_CMPO0(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_CMPU0 (line 484) | void PPCInterpreter_PS_CMPU0(PPCInterpreter_t* hCPU, uint32 Opcode)
function PPCInterpreter_PS_CMPU1 (line 495) | void PPCInterpreter_PS_CMPU1(PPCInterpreter_t* hCPU, uint32 Opcode)
FILE: src/Cafe/HW/Espresso/Interpreter/PPCInterpreterSPR.hpp
function uint32 (line 58) | static uint32 getPVR(PPCInterpreter_t* hCPU)
function uint32 (line 63) | static uint32 getFPECR(PPCInterpreter_t* hCPU)
function setFPECR (line 68) | static void setFPECR(PPCInterpreter_t* hCPU, uint32 newValue)
function setDEC (line 73) | static void setDEC(PPCInterpreter_t* hCPU, uint32 newValue)
function uint32 (line 79) | static uint32 getSPRG(PPCInterpreter_t* hCPU, uint32 sprgIndex)
function setSPRG (line 84) | static void setSPRG(PPCInterpreter_t* hCPU, uint32 sprgIndex, uint32 new...
function uint32 (line 89) | static uint32 getDAR(PPCInterpreter_t* hCPU)
function uint32 (line 94) | static uint32 getDSISR(PPCInterpreter_t* hCPU)
function uint32 (line 99) | static uint32 getHID0(PPCInterpreter_t* hCPU)
function setHID0 (line 104) | static void setHID0(PPCInterpreter_t* hCPU, uint32 newValue)
function uint32 (line 110) | static uint32 getHID1(PPCInterpreter_t* hCPU)
function uint32 (line 116) | static uint32 getHID2(PPCInterpreter_t* hCPU)
function setHID2 (line 122) | static void setHID2(PPCInterpreter_t* hCPU, uint32 newValue)
function uint32 (line 128) | static uint32 getHID4(PPCInterpreter_t* hCPU)
function setHID4 (line 134) | static void setHID4(PPCInterpreter_t* hCPU, uint32 newValue)
function uint32 (line 140) | static uint32 getHID5(PPCInterpreter_t* hCPU)
function setHID5 (line 147) | static void setHID5(PPCInterpreter_t* hCPU, uint32 newValue)
function uint32 (line 154) | static uint32 getSCR(PPCInterpreter_t* hCPU)
function setSCR (line 160) | static void setSCR(PPCInterpreter_t* hCPU, uint32 newValue)
function uint32 (line 189) | static uint32 getCAR(PPCInterpreter_t* hCPU)
function setCAR (line 196) | static void setCAR(PPCInterpreter_t* hCPU, uint32 newValue)
function uint32 (line 203) | static uint32 getBCR(PPCInterpreter_t* hCPU)
function setBCR (line 210) | static void setBCR(PPCInterpreter_t* hCPU, uint32 newValue)
function uint32 (line 218) | static uint32 getL2CR(PPCInterpreter_t* hCPU)
function setL2CR (line 223) | static void setL2CR(PPCInterpreter_t* hCPU, uint32 newValue)
function setSRR0 (line 228) | static void setSRR0(PPCInterpreter_t* hCPU, uint32 newValue)
function setSRR1 (line 233) | static void setSRR1(PPCInterpreter_t* hCPU, uint32 newValue)
function setDMAU (line 238) | static void setDMAU(PPCInterpreter_t* hCPU, uint32 newValue)
function setDMAL (line 243) | static void setDMAL(PPCInterpreter_t* hCPU, uint32 newValue)
function setDBATL (line 282) | static void setDBATL(PPCInterpreter_t* hCPU, uint32 index, uint32 newValue)
function setDBATU (line 288) | static void setDBATU(PPCInterpreter_t* hCPU, uint32 index, uint32 newValue)
function setIBATL (line 294) | static void setIBATL(PPCInterpreter_t* hCPU, uint32 index, uint32 newValue)
function setIBATU (line 300) | static void setIBATU(PPCInterpreter_t* hCPU, uint32 index, uint32 newValue)
function uint32 (line 306) | static uint32 getDBATL(PPCInterpreter_t* hCPU, uint32 index)
function uint32 (line 311) | static uint32 getDBATU(PPCInterpreter_t* hCPU, uint32 index)
function uint32 (line 316) | static uint32 getIBATL(PPCInterpreter_t* hCPU, uint32 index)
function uint32 (line 321) | static uint32 getIBATU(PPCInterpreter_t* hCPU, uint32 index)
function setSR (line 326) | static void setSR(PPCInterpreter_t* hCPU, uint32 index, uint32 newValue)
function uint32 (line 332) | static uint32 getSR(PPCInterpreter_t* hCPU, uint32 index)
function setSDR1 (line 337) | static void setSDR1(PPCInterpreter_t* hCPU, uint32 newValue)
function setTBL (line 343) | static void setTBL(PPCInterpreter_t* hCPU, uint32 newValue)
function setTBU (line 351) | static void setTBU(PPCInterpreter_t* hCPU, uint32 newValue)
function PPCSprSupervisor_set (line 359) | static void PPCSprSupervisor_set(PPCInterpreter_t* hCPU, uint32 spr, uin...
function PPCSpr_set (line 569) | static void PPCSpr_set(PPCInterpreter_t* hCPU, uint32 spr, uint32 newValue)
function uint32 (line 608) | static uint32 PPCSprSupervisor_get(PPCInterpreter_t* hCPU, uint32 spr)
function uint32 (line 793) | static uint32 PPCSpr_get(PPCInterpreter_t* hCPU, uint32 spr)
FILE: src/Cafe/HW/Espresso/PPCCallback.h
type PPCCoreCallbackData_t (line 4) | struct PPCCoreCallbackData_t
function _PPCCoreCallback_writeGPRArg (line 11) | inline void _PPCCoreCallback_writeGPRArg(PPCCoreCallbackData_t& data, PP...
function uint32 (line 31) | inline uint32 PPCCoreCallback(MPTR function, const PPCCoreCallbackData_t...
function PPCCoreCallbackData_t (line 83) | PPCCoreCallbackData_t data{}
function PPCCoreCallbackData_t (line 91) | PPCCoreCallbackData_t data{}
FILE: src/Cafe/HW/Espresso/PPCScheduler.cpp
function PPCInterpreter_relinquishTimeslice (line 12) | void PPCInterpreter_relinquishTimeslice()
function PPCCore_boostQuantum (line 22) | void PPCCore_boostQuantum(sint32 numCycles)
function PPCCore_deboostQuantum (line 28) | void PPCCore_deboostQuantum(sint32 numCycles)
type coreinit (line 34) | namespace coreinit
function PPCCore_switchToScheduler (line 39) | void PPCCore_switchToScheduler()
function PPCCore_switchToSchedulerWithLock (line 48) | void PPCCore_switchToSchedulerWithLock()
function _PPCCore_callbackExit (line 55) | void _PPCCore_callbackExit(PPCInterpreter_t* hCPU)
function PPCInterpreter_t (line 61) | PPCInterpreter_t* PPCCore_executeCallbackInternal(uint32 functionMPTR)
function PPCCore_init (line 106) | void PPCCore_init()
FILE: src/Cafe/HW/Espresso/PPCSchedulerLLE.cpp
type PPCInterpreterLLEContext_t (line 2) | struct PPCInterpreterLLEContext_t
function PPCCoreLLE_initCore (line 10) | void PPCCoreLLE_initCore(PPCInterpreter_t* hCPU, uint32 coreIndex)
function PPCCoreLLE_setupBootParamBlock (line 90) | void PPCCoreLLE_setupBootParamBlock()
function smdpArea_pushResult (line 153) | void smdpArea_pushResult(smdpArea_t* smdpArea, MPTR result)
function smdpArea_processCommand (line 160) | void smdpArea_processCommand(smdpArea_t* smdpArea, smdpCommand_t* cmd)
function smdpArea_thread (line 175) | void smdpArea_thread()
function PPCCoreLLE_startSingleCoreScheduler (line 201) | void PPCCoreLLE_startSingleCoreScheduler(uint32 entrypoint)
FILE: src/Cafe/HW/Espresso/PPCState.h
type PPCInterpreterGlobal_t (line 33) | typedef struct
type PPCInterpreter_t (line 44) | struct PPCInterpreter_t
function uint32 (line 111) | static uint32 PPCInterpreter_getCallParamU32(PPCInterpreter_t* hCPU, uin...
function uint64 (line 118) | static uint64 PPCInterpreter_getCallParamU64(PPCInterpreter_t* hCPU, uin...
function flushDenormalToZero (line 225) | static inline float flushDenormalToZero(float f)
FILE: src/Cafe/HW/Espresso/PPCTimer.cpp
type uint128_t (line 15) | struct uint128_t
function uint64 (line 25) | uint64 muldiv64(uint64 a, uint64 b, uint64 d)
function uint64 (line 34) | uint64 PPCTimer_estimateRDTSCFrequency()
function PPCTimer_initThread (line 72) | int PPCTimer_initThread()
function PPCTimer_init (line 78) | void PPCTimer_init()
function PPCTimer_start (line 87) | void PPCTimer_start()
function uint64 (line 93) | uint64 PPCTimer_getRawTsc()
function uint64 (line 98) | uint64 PPCTimer_microsecondsToTsc(uint64 us)
function uint64 (line 103) | uint64 PPCTimer_tscToMicroseconds(uint64 us)
function PPCTimer_isReady (line 114) | bool PPCTimer_isReady()
function PPCTimer_waitForInit (line 119) | void PPCTimer_waitForInit()
function uint64 (line 127) | uint64 PPCTimer_getFromRDTSC()
FILE: src/Cafe/HW/Espresso/Recompiler/BackendAArch64/BackendAArch64.cpp
type FPReg (line 28) | struct FPReg
method FPReg (line 30) | explicit FPReg(size_t index)
type GPReg (line 43) | struct GPReg
method GPReg (line 45) | explicit GPReg(size_t index)
class AArch64Allocator (line 63) | class AArch64Allocator : public Allocator
method AArch64Allocator (line 75) | AArch64Allocator()
method uint32 (line 78) | uint32* alloc(size_t size) override
method setFreeDisabled (line 83) | void setFreeDisabled(bool disabled)
method free (line 88) | void free(uint32* p) override
method useProtect (line 94) | [[nodiscard]] bool useProtect() const override
type UnconditionalJumpInfo (line 100) | struct UnconditionalJumpInfo
type ConditionalRegJumpInfo (line 105) | struct ConditionalRegJumpInfo
type NegativeRegValueJumpInfo (line 112) | struct NegativeRegValueJumpInfo
type AArch64GenContext_t (line 123) | struct AArch64GenContext_t : CodeGenerator
method prepareJump (line 157) | void prepareJump(JumpInfo&& jumpInfo)
method storeSegmentStart (line 165) | void storeSegmentStart(IMLSegment* imlSegment)
method processAllJumps (line 170) | bool processAllJumps()
method handleJump (line 192) | bool handleJump(sint64 addressOffset, const UnconditionalJumpInfo& jump)
method handleJump (line 206) | bool handleJump(sint64 addressOffset, const ConditionalRegJumpInfo& jump)
method handleJump (line 250) | bool handleJump(sint64 addressOffset, const NegativeRegValueJumpInfo& ...
function T (line 287) | T fpReg(const IMLReg& imlReg)
function T (line 296) | T gpReg(const IMLReg& imlReg)
function To (line 312) | To aliasAs(const From& reg)
function To (line 318) | To aliasAs(const From& reg)
function uint64 (line 328) | constexpr uint64 ones(uint32 size)
function isAdrImmValidFPR (line 333) | constexpr bool isAdrImmValidFPR(sint32 imm, uint32 bits)
function isAdrImmValidGPR (line 340) | constexpr bool isAdrImmValidGPR(sint32 imm, uint32 bits = 32)
function isAdrImmRangeValid (line 347) | constexpr bool isAdrImmRangeValid(sint32 rangeStart, sint32 rangeOffset,...
function isAdrImmRangeValidGPR (line 355) | constexpr bool isAdrImmRangeValidGPR(sint32 rangeStart, sint32 rangeOffs...
function isAdrImmRangeValidFpr (line 360) | constexpr bool isAdrImmRangeValidFpr(sint32 rangeStart, sint32 rangeOffs...
function Cond (line 799) | Cond ImlCondToArm64Cond(IMLCondition condition)
function Cond (line 1400) | Cond ImlFPCondToArm64Cond(IMLCondition cond)
function PPCRecompiler_generateAArch64Code (line 1438) | bool PPCRecompiler_generateAArch64Code(struct PPCRecFunction_t* PPCRecFu...
function PPCRecompiler_cleanupAArch64Code (line 1622) | void PPCRecompiler_cleanupAArch64Code(void* code, size_t size)
function PPCRecompilerAArch64Gen_generateRecompilerInterfaceFunctions (line 1678) | void PPCRecompilerAArch64Gen_generateRecompilerInterfaceFunctions()
FILE: src/Cafe/HW/Espresso/Recompiler/BackendAArch64/BackendAArch64.h
type PPCRecFunction_t (line 6) | struct PPCRecFunction_t
type ppcImlGenContext_t (line 6) | struct ppcImlGenContext_t
function namespace (line 12) | namespace IMLArchAArch64
FILE: src/Cafe/HW/Espresso/Recompiler/BackendX64/BackendX64.cpp
function _reg32 (line 12) | static x86Assembler64::GPR32 _reg32(IMLReg physReg)
function uint32 (line 20) | static uint32 _reg64(IMLReg physReg)
function uint32 (line 28) | uint32 _regF64(IMLReg physReg)
function _reg8 (line 37) | static x86Assembler64::GPR8_REX _reg8(IMLReg physReg)
function _reg32_from_reg8 (line 43) | static x86Assembler64::GPR32 _reg32_from_reg8(x86Assembler64::GPR8_REX r...
function _reg8_from_reg32 (line 48) | static x86Assembler64::GPR8_REX _reg8_from_reg32(x86Assembler64::GPR32 r...
function _reg8_from_reg64 (line 53) | static x86Assembler64::GPR8_REX _reg8_from_reg64(uint32 regId)
function _reg64_from_reg32 (line 58) | static x86Assembler64::GPR64 _reg64_from_reg32(x86Assembler64::GPR32 regId)
function X86Cond (line 63) | X86Cond _x86Cond(IMLCondition imlCond)
function X86Cond (line 86) | X86Cond _x86CondInverted(IMLCondition imlCond)
function X86Cond (line 109) | X86Cond _x86Cond(IMLCondition imlCond, bool condIsInverted)
function PPCRecompilerX64Gen_rememberRelocatableOffset (line 120) | void PPCRecompilerX64Gen_rememberRelocatableOffset(x64GenContext_t* x64G...
function PPCRecompilerX64Gen_redirectRelativeJump (line 125) | void PPCRecompilerX64Gen_redirectRelativeJump(x64GenContext_t* x64GenCon...
function PPCRecompilerX64Gen_imlInstruction_macro (line 176) | bool PPCRecompilerX64Gen_imlInstruction_macro(PPCRecFunction_t* PPCRecFu...
function PPCRecompilerX64Gen_imlInstruction_load (line 333) | bool PPCRecompilerX64Gen_imlInstruction_load(PPCRecFunction_t* PPCRecFun...
function PPCRecompilerX64Gen_imlInstruction_store (line 435) | bool PPCRecompilerX64Gen_imlInstruction_store(PPCRecFunction_t* PPCRecFu...
function PPCRecompilerX64Gen_imlInstruction_atomic_cmp_store (line 514) | void PPCRecompilerX64Gen_imlInstruction_atomic_cmp_store(PPCRecFunction_...
function PPCRecompilerX64Gen_imlInstruction_call_imm (line 533) | void PPCRecompilerX64Gen_imlInstruction_call_imm(PPCRecFunction_t* PPCRe...
function PPCRecompilerX64Gen_imlInstruction_r_r (line 544) | bool PPCRecompilerX64Gen_imlInstruction_r_r(PPCRecFunction_t* PPCRecFunc...
function PPCRecompilerX64Gen_imlInstruction_r_s32 (line 618) | bool PPCRecompilerX64Gen_imlInstruction_r_s32(PPCRecFunction_t* PPCRecFu...
function PPCRecompilerX64Gen_imlInstruction_r_r_r (line 644) | bool PPCRecompilerX64Gen_imlInstruction_r_r_r(PPCRecFunction_t* PPCRecFu...
function PPCRecompilerX64Gen_imlInstruction_r_r_r_carry (line 903) | bool PPCRecompilerX64Gen_imlInstruction_r_r_r_carry(PPCRecFunction_t* PP...
function PPCRecompilerX64Gen_IsSameCompare (line 943) | bool PPCRecompilerX64Gen_IsSameCompare(IMLInstruction* imlInstructionA, ...
function PPCRecompilerX64Gen_imlInstruction_compare_x (line 954) | bool PPCRecompilerX64Gen_imlInstruction_compare_x(PPCRecFunction_t* PPCR...
function PPCRecompilerX64Gen_imlInstruction_cjump2 (line 1012) | bool PPCRecompilerX64Gen_imlInstruction_cjump2(PPCRecFunction_t* PPCRecF...
function PPCRecompilerX64Gen_imlInstruction_x86_eflags_jcc (line 1022) | void PPCRecompilerX64Gen_imlInstruction_x86_eflags_jcc(PPCRecFunction_t*...
function PPCRecompilerX64Gen_imlInstruction_jump2 (line 1029) | bool PPCRecompilerX64Gen_imlInstruction_jump2(PPCRecFunction_t* PPCRecFu...
function PPCRecompilerX64Gen_imlInstruction_r_r_s32 (line 1036) | bool PPCRecompilerX64Gen_imlInstruction_r_r_s32(PPCRecFunction_t* PPCRec...
function PPCRecompilerX64Gen_imlInstruction_r_r_s32_carry (line 1098) | bool PPCRecompilerX64Gen_imlInstruction_r_r_s32_carry(PPCRecFunction_t* ...
function PPCRecompilerX64Gen_imlInstruction_conditionalJumpCycleCheck (line 1136) | bool PPCRecompilerX64Gen_imlInstruction_conditionalJumpCycleCheck(PPCRec...
function PPCRecompilerX64Gen_imlInstruction_r_name (line 1150) | void PPCRecompilerX64Gen_imlInstruction_r_name(PPCRecFunction_t* PPCRecF...
function PPCRecompilerX64Gen_imlInstruction_name_r (line 1227) | void PPCRecompilerX64Gen_imlInstruction_name_r(PPCRecFunction_t* PPCRecF...
function uint8 (line 1313) | uint8* PPCRecompilerX86_allocateExecutableMemory(sint32 size)
function PPCRecompiler_generateX64Code (line 1334) | bool PPCRecompiler_generateX64Code(PPCRecFunction_t* PPCRecFunction, ppc...
function PPCRecompilerX64Gen_generateEnterRecompilerCode (line 1573) | void PPCRecompilerX64Gen_generateEnterRecompilerCode()
function PPCRecompilerX64Gen_generateRecompilerInterfaceFunctions (line 1665) | void PPCRecompilerX64Gen_generateRecompilerInterfaceFunctions()
FILE: src/Cafe/HW/Espresso/Recompiler/BackendX64/BackendX64.h
type x64RelocEntry_t (line 6) | struct x64RelocEntry_t
function x64GenContext_t (line 14) | struct x64GenContext_t
type PPCRecFunction_t (line 74) | struct PPCRecFunction_t
FILE: src/Cafe/HW/Espresso/Recompiler/BackendX64/BackendX64AVX.cpp
function _x64Gen_vex128_nds (line 5) | void _x64Gen_vex128_nds(x64GenContext_t* x64GenContext, uint8 opcodeMap,...
function x64Gen_avx_VPUNPCKHQDQ_xmm_xmm_xmm (line 28) | void x64Gen_avx_VPUNPCKHQDQ_xmm_xmm_xmm(x64GenContext_t* x64GenContext, ...
function x64Gen_avx_VUNPCKHPD_xmm_xmm_xmm (line 35) | void x64Gen_avx_VUNPCKHPD_xmm_xmm_xmm(x64GenContext_t* x64GenContext, si...
function x64Gen_avx_VSUBPD_xmm_xmm_xmm (line 42) | void x64Gen_avx_VSUBPD_xmm_xmm_xmm(x64GenContext_t* x64GenContext, sint3...
FILE: src/Cafe/HW/Espresso/Recompiler/BackendX64/BackendX64BMI.cpp
function x64Gen_movBEZeroExtend_reg64_mem32Reg64PlusReg64 (line 5) | void x64Gen_movBEZeroExtend_reg64_mem32Reg64PlusReg64(x64GenContext_t* x...
function x64Gen_movBEZeroExtend_reg64Low16_mem16Reg64PlusReg64 (line 29) | void x64Gen_movBEZeroExtend_reg64Low16_mem16Reg64PlusReg64(x64GenContext...
function x64Gen_movBETruncate_mem32Reg64PlusReg64_reg64 (line 37) | void x64Gen_movBETruncate_mem32Reg64PlusReg64_reg64(x64GenContext_t* x64...
function x64Gen_shrx_reg64_reg64_reg64 (line 61) | void x64Gen_shrx_reg64_reg64_reg64(x64GenContext_t* x64GenContext, sint3...
function x64Gen_shrx_reg32_reg32_reg32 (line 71) | void x64Gen_shrx_reg32_reg32_reg32(x64GenContext_t* x64GenContext, sint3...
function x64Gen_sarx_reg64_reg64_reg64 (line 80) | void x64Gen_sarx_reg64_reg64_reg64(x64GenContext_t* x64GenContext, sint3...
function x64Gen_sarx_reg32_reg32_reg32 (line 90) | void x64Gen_sarx_reg32_reg32_reg32(x64GenContext_t* x64GenContext, sint3...
function x64Gen_shlx_reg64_reg64_reg64 (line 99) | void x64Gen_shlx_reg64_reg64_reg64(x64GenContext_t* x64GenContext, sint3...
function x64Gen_shlx_reg32_reg32_reg32 (line 109) | void x64Gen_shlx_reg32_reg32_reg32(x64GenContext_t* x64GenContext, sint3...
FILE: src/Cafe/HW/Espresso/Recompiler/BackendX64/BackendX64FPU.cpp
function uint32 (line 8) | uint32 _regI32(IMLReg r)
function _reg32 (line 14) | static x86Assembler64::GPR32 _reg32(sint8 physRegId)
function _reg8 (line 19) | static x86Assembler64::GPR8_REX _reg8(IMLReg r)
function _reg32_from_reg8 (line 25) | static x86Assembler64::GPR32 _reg32_from_reg8(x86Assembler64::GPR8_REX r...
function _reg8_from_reg32 (line 30) | static x86Assembler64::GPR8_REX _reg8_from_reg32(x86Assembler64::GPR32 r...
function PPCRecompilerX64Gen_imlInstruction_fpr_load (line 36) | bool PPCRecompilerX64Gen_imlInstruction_fpr_load(PPCRecFunction_t* PPCRe...
function PPCRecompilerX64Gen_imlInstruction_fpr_store (line 144) | bool PPCRecompilerX64Gen_imlInstruction_fpr_store(PPCRecFunction_t* PPCR...
function PPCRecompilerX64Gen_imlInstruction_fpr_r_r (line 228) | void PPCRecompilerX64Gen_imlInstruction_fpr_r_r(PPCRecFunction_t* PPCRec...
function PPCRecompilerX64Gen_imlInstruction_fpr_r_r_r (line 302) | void PPCRecompilerX64Gen_imlInstruction_fpr_r_r_r(PPCRecFunction_t* PPCR...
function PPCRecompilerX64Gen_imlInstruction_fpr_r_r_r_r (line 366) | void PPCRecompilerX64Gen_imlInstruction_fpr_r_r_r_r(PPCRecFunction_t* PP...
function PPCRecompilerX64Gen_imlInstruction_fpr_r (line 392) | void PPCRecompilerX64Gen_imlInstruction_fpr_r(PPCRecFunction_t* PPCRecFu...
function PPCRecompilerX64Gen_imlInstruction_fpr_compare (line 430) | void PPCRecompilerX64Gen_imlInstruction_fpr_compare(PPCRecFunction_t* PP...
FILE: src/Cafe/HW/Espresso/Recompiler/BackendX64/BackendX64Gen.cpp
function x64Gen_writeU8 (line 8) | void x64Gen_writeU8(x64GenContext_t* x64GenContext, uint8 v)
function x64Gen_writeU16 (line 13) | void x64Gen_writeU16(x64GenContext_t* x64GenContext, uint32 v)
function x64Gen_writeU32 (line 18) | void x64Gen_writeU32(x64GenContext_t* x64GenContext, uint32 v)
function x64Gen_writeU64 (line 23) | void x64Gen_writeU64(x64GenContext_t* x64GenContext, uint64 v)
function _x64Gen_writeMODRMDeprecated (line 30) | void _x64Gen_writeMODRMDeprecated(x64GenContext_t* x64GenContext, sint32...
function x64Emit_mov_reg32_mem32 (line 131) | void x64Emit_mov_reg32_mem32(x64GenContext_t* x64GenContext, sint32 dest...
function x64Emit_mov_mem32_reg32 (line 136) | void x64Emit_mov_mem32_reg32(x64GenContext_t* x64GenContext, sint32 memB...
function x64Emit_mov_mem64_reg64 (line 141) | void x64Emit_mov_mem64_reg64(x64GenContext_t* x64GenContext, sint32 memB...
function x64Emit_mov_reg64_mem64 (line 146) | void x64Emit_mov_reg64_mem64(x64GenContext_t* x64GenContext, sint32 dest...
function x64Emit_mov_reg64_mem32 (line 151) | void x64Emit_mov_reg64_mem32(x64GenContext_t* x64GenContext, sint32 dest...
function x64Emit_mov_mem32_reg64 (line 156) | void x64Emit_mov_mem32_reg64(x64GenContext_t* x64GenContext, sint32 memB...
function x64Emit_mov_reg64_mem64 (line 161) | void x64Emit_mov_reg64_mem64(x64GenContext_t* x64GenContext, sint32 dest...
function x64Emit_mov_reg32_mem32 (line 166) | void x64Emit_mov_reg32_mem32(x64GenContext_t* x64GenContext, sint32 dest...
function x64Emit_mov_reg64b_mem8 (line 171) | void x64Emit_mov_reg64b_mem8(x64GenContext_t* x64GenContext, sint32 dest...
function x64Emit_movZX_reg32_mem8 (line 176) | void x64Emit_movZX_reg32_mem8(x64GenContext_t* x64GenContext, sint32 des...
function x64Emit_movZX_reg64_mem8 (line 181) | void x64Emit_movZX_reg64_mem8(x64GenContext_t* x64GenContext, sint32 des...
function x64Gen_movSignExtend_reg64Low32_mem8Reg64PlusReg64 (line 186) | void x64Gen_movSignExtend_reg64Low32_mem8Reg64PlusReg64(x64GenContext_t*...
function x64Gen_mov_mem64Reg64PlusReg64_reg64 (line 211) | void x64Gen_mov_mem64Reg64PlusReg64_reg64(x64GenContext_t* x64GenContext...
function x64Gen_movZeroExtend_reg64Low16_mem16Reg64PlusReg64 (line 234) | void x64Gen_movZeroExtend_reg64Low16_mem16Reg64PlusReg64(x64GenContext_t...
function x64Gen_movTruncate_mem32Reg64PlusReg64_reg64 (line 241) | void x64Gen_movTruncate_mem32Reg64PlusReg64_reg64(x64GenContext_t* x64Ge...
function x64Gen_movTruncate_mem16Reg64PlusReg64_reg64 (line 263) | void x64Gen_movTruncate_mem16Reg64PlusReg64_reg64(x64GenContext_t* x64Ge...
function x64Gen_movTruncate_mem8Reg64PlusReg64_reg64 (line 270) | void x64Gen_movTruncate_mem8Reg64PlusReg64_reg64(x64GenContext_t* x64Gen...
function x64Gen_mov_mem32Reg64_imm32 (line 291) | void x64Gen_mov_mem32Reg64_imm32(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_mov_mem64Reg64_imm32 (line 321) | void x64Gen_mov_mem64Reg64_imm32(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_mov_mem8Reg64_imm8 (line 353) | void x64Gen_mov_mem8Reg64_imm8(x64GenContext_t* x64GenContext, sint32 me...
function x64Gen_mov_reg64_imm64 (line 381) | void x64Gen_mov_reg64_imm64(x64GenContext_t* x64GenContext, sint32 destR...
function x64Gen_mov_reg64Low32_imm32 (line 389) | void x64Gen_mov_reg64Low32_imm32(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_mov_reg64_reg64 (line 399) | void x64Gen_mov_reg64_reg64(x64GenContext_t* x64GenContext, sint32 destR...
function x64Gen_xchg_reg64_reg64 (line 414) | void x64Gen_xchg_reg64_reg64(x64GenContext_t* x64GenContext, sint32 dest...
function x64Gen_mov_reg64Low32_reg64Low32 (line 429) | void x64Gen_mov_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext, si...
function x64Gen_cmovcc_reg64Low32_reg64Low32 (line 442) | void x64Gen_cmovcc_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext,...
function x64Gen_movSignExtend_reg64Low32_reg64Low16 (line 485) | void x64Gen_movSignExtend_reg64Low32_reg64Low16(x64GenContext_t* x64GenC...
function x64Gen_movZeroExtend_reg64Low32_reg64Low16 (line 499) | void x64Gen_movZeroExtend_reg64Low32_reg64Low16(x64GenContext_t* x64GenC...
function x64Gen_movSignExtend_reg64Low32_reg64Low8 (line 513) | void x64Gen_movSignExtend_reg64Low32_reg64Low8(x64GenContext_t* x64GenCo...
function x64Gen_movZeroExtend_reg64Low32_reg64Low8 (line 529) | void x64Gen_movZeroExtend_reg64Low32_reg64Low8(x64GenContext_t* x64GenCo...
function x64Gen_lea_reg64Low32_reg64Low32PlusReg64Low32 (line 545) | void x64Gen_lea_reg64Low32_reg64Low32PlusReg64Low32(x64GenContext_t* x64...
function _x64_op_reg64Low_mem8Reg64 (line 587) | void _x64_op_reg64Low_mem8Reg64(x64GenContext_t* x64GenContext, sint32 d...
function x64Gen_or_reg64Low8_mem8Reg64 (line 600) | void x64Gen_or_reg64Low8_mem8Reg64(x64GenContext_t* x64GenContext, sint3...
function x64Gen_and_reg64Low8_mem8Reg64 (line 605) | void x64Gen_and_reg64Low8_mem8Reg64(x64GenContext_t* x64GenContext, sint...
function x64Gen_mov_mem8Reg64_reg64Low8 (line 610) | void x64Gen_mov_mem8Reg64_reg64Low8(x64GenContext_t* x64GenContext, sint...
function x64Gen_add_reg64_reg64 (line 615) | void x64Gen_add_reg64_reg64(x64GenContext_t* x64GenContext, sint32 destR...
function x64Gen_add_reg64_imm32 (line 623) | void x64Gen_add_reg64_imm32(x64GenContext_t* x64GenContext, sint32 srcRe...
function x64Gen_add_reg64Low32_reg64Low32 (line 644) | void x64Gen_add_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext, si...
function x64Gen_add_reg64Low32_imm32 (line 657) | void x64Gen_add_reg64Low32_imm32(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_sub_reg64Low32_reg64Low32 (line 684) | void x64Gen_sub_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext, si...
function x64Gen_sub_reg64Low32_imm32 (line 697) | void x64Gen_sub_reg64Low32_imm32(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_sub_reg64_imm32 (line 724) | void x64Gen_sub_reg64_imm32(x64GenContext_t* x64GenContext, sint32 srcRe...
function x64Gen_sub_mem32reg64_imm32 (line 745) | void x64Gen_sub_mem32reg64_imm32(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_dec_mem32 (line 781) | void x64Gen_dec_mem32(x64GenContext_t* x64GenContext, sint32 memoryRegis...
function x64Gen_imul_reg64Low32_reg64Low32 (line 803) | void x64Gen_imul_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext, s...
function x64Gen_idiv_reg64Low32 (line 817) | void x64Gen_idiv_reg64Low32(x64GenContext_t* x64GenContext, sint32 opera...
function x64Gen_div_reg64Low32 (line 826) | void x64Gen_div_reg64Low32(x64GenContext_t* x64GenContext, sint32 operan...
function x64Gen_imul_reg64Low32 (line 835) | void x64Gen_imul_reg64Low32(x64GenContext_t* x64GenContext, sint32 opera...
function x64Gen_mul_reg64Low32 (line 844) | void x64Gen_mul_reg64Low32(x64GenContext_t* x64GenContext, sint32 operan...
function x64Gen_and_reg64Low32_imm32 (line 853) | void x64Gen_and_reg64Low32_imm32(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_and_reg64Low32_reg64Low32 (line 880) | void x64Gen_and_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext, si...
function x64Gen_test_reg64Low32_reg64Low32 (line 893) | void x64Gen_test_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext, s...
function x64Gen_test_reg64Low32_imm32 (line 906) | void x64Gen_test_reg64Low32_imm32(x64GenContext_t* x64GenContext, sint32...
function x64Gen_cmp_reg64Low32_imm32 (line 924) | void x64Gen_cmp_reg64Low32_imm32(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_cmp_reg64Low32_reg64Low32 (line 951) | void x64Gen_cmp_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext, si...
function x64Gen_cmp_reg64Low32_mem32reg64 (line 964) | void x64Gen_cmp_reg64Low32_mem32reg64(x64GenContext_t* x64GenContext, si...
function x64Gen_or_reg64Low32_imm32 (line 984) | void x64Gen_or_reg64Low32_imm32(x64GenContext_t* x64GenContext, sint32 s...
function x64Gen_or_reg64Low32_reg64Low32 (line 1011) | void x64Gen_or_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext, sin...
function x64Gen_xor_reg32_reg32 (line 1024) | void x64Gen_xor_reg32_reg32(x64GenContext_t* x64GenContext, sint32 destR...
function x64Gen_xor_reg64Low32_reg64Low32 (line 1031) | void x64Gen_xor_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext, si...
function x64Gen_xor_reg64Low32_imm32 (line 1044) | void x64Gen_xor_reg64Low32_imm32(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_rol_reg64Low32_imm8 (line 1071) | void x64Gen_rol_reg64Low32_imm8(x64GenContext_t* x64GenContext, sint32 s...
function x64Gen_rol_reg64Low32_cl (line 1089) | void x64Gen_rol_reg64Low32_cl(x64GenContext_t* x64GenContext, sint32 src...
function x64Gen_rol_reg64Low16_imm8 (line 1097) | void x64Gen_rol_reg64Low16_imm8(x64GenContext_t* x64GenContext, sint32 s...
function x64Gen_rol_reg64_imm8 (line 1116) | void x64Gen_rol_reg64_imm8(x64GenContext_t* x64GenContext, sint32 srcReg...
function x64Gen_shl_reg64Low32_imm8 (line 1136) | void x64Gen_shl_reg64Low32_imm8(x64GenContext_t* x64GenContext, sint32 s...
function x64Gen_shr_reg64Low32_imm8 (line 1154) | void x64Gen_shr_reg64Low32_imm8(x64GenContext_t* x64GenContext, sint32 s...
function x64Gen_sar_reg64Low32_imm8 (line 1172) | void x64Gen_sar_reg64Low32_imm8(x64GenContext_t* x64GenContext, sint32 s...
function x64Gen_not_reg64Low32 (line 1190) | void x64Gen_not_reg64Low32(x64GenContext_t* x64GenContext, sint32 destRe...
function x64Gen_neg_reg64Low32 (line 1198) | void x64Gen_neg_reg64Low32(x64GenContext_t* x64GenContext, sint32 destRe...
function x64Gen_cdq (line 1206) | void x64Gen_cdq(x64GenContext_t* x64GenContext)
function x64Gen_bswap_reg64Lower32bit (line 1211) | void x64Gen_bswap_reg64Lower32bit(x64GenContext_t* x64GenContext, sint32...
function x64Gen_lzcnt_reg64Low32_reg64Low32 (line 1219) | void x64Gen_lzcnt_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext, ...
function x64Gen_bsr_reg64Low32_reg64Low32 (line 1235) | void x64Gen_bsr_reg64Low32_reg64Low32(x64GenContext_t* x64GenContext, si...
function x64Gen_setcc_mem8 (line 1249) | void x64Gen_setcc_mem8(x64GenContext_t* x64GenContext, sint32 conditionT...
function x64Gen_setcc_reg64b (line 1461) | void x64Gen_setcc_reg64b(x64GenContext_t* x64GenContext, sint32 conditio...
function x64Gen_bt_mem8 (line 1488) | void x64Gen_bt_mem8(x64GenContext_t* x64GenContext, sint32 memoryRegiste...
function x64Gen_cmc (line 1514) | void x64Gen_cmc(x64GenContext_t* x64GenContext)
function x64Gen_jmp_imm32 (line 1519) | void x64Gen_jmp_imm32(x64GenContext_t* x64GenContext, uint32 destImm32)
function x64Gen_jmp_memReg64 (line 1525) | void x64Gen_jmp_memReg64(x64GenContext_t* x64GenContext, sint32 memRegis...
function x64Gen_jmpc_far (line 1553) | void x64Gen_jmpc_far(x64GenContext_t* x64GenContext, sint32 conditionTyp...
function x64Gen_jmpc_near (line 1645) | void x64Gen_jmpc_near(x64GenContext_t* x64GenContext, sint32 conditionTy...
function x64Gen_push_reg64 (line 1709) | void x64Gen_push_reg64(x64GenContext_t* x64GenContext, sint32 srcRegister)
function x64Gen_pop_reg64 (line 1716) | void x64Gen_pop_reg64(x64GenContext_t* x64GenContext, sint32 destRegister)
function x64Gen_jmp_reg64 (line 1723) | void x64Gen_jmp_reg64(x64GenContext_t* x64GenContext, sint32 srcRegister)
function x64Gen_call_reg64 (line 1731) | void x64Gen_call_reg64(x64GenContext_t* x64GenContext, sint32 srcRegister)
function x64Gen_ret (line 1739) | void x64Gen_ret(x64GenContext_t* x64GenContext)
function x64Gen_int3 (line 1744) | void x64Gen_int3(x64GenContext_t* x64GenContext)
FILE: src/Cafe/HW/Espresso/Recompiler/BackendX64/BackendX64GenFPU.cpp
function x64Gen_genSSEVEXPrefix2 (line 3) | void x64Gen_genSSEVEXPrefix2(x64GenContext_t* x64GenContext, sint32 xmmR...
function x64Gen_genSSEVEXPrefix1 (line 17) | void x64Gen_genSSEVEXPrefix1(x64GenContext_t* x64GenContext, sint32 xmmR...
function x64Gen_movaps_xmmReg_xmmReg (line 29) | void x64Gen_movaps_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_movupd_xmmReg_memReg128 (line 40) | void x64Gen_movupd_xmmReg_memReg128(x64GenContext_t* x64GenContext, sint...
function x64Gen_movupd_memReg128_xmmReg (line 72) | void x64Gen_movupd_memReg128_xmmReg(x64GenContext_t* x64GenContext, sint...
function x64Gen_movddup_xmmReg_memReg64 (line 103) | void x64Gen_movddup_xmmReg_memReg64(x64GenContext_t* x64GenContext, sint...
function x64Gen_movddup_xmmReg_xmmReg (line 150) | void x64Gen_movddup_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32...
function x64Gen_movhlps_xmmReg_xmmReg (line 161) | void x64Gen_movhlps_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32...
function x64Gen_movsd_xmmReg_xmmReg (line 171) | void x64Gen_movsd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 x...
function x64Gen_movsd_memReg64_xmmReg (line 182) | void x64Gen_movsd_memReg64_xmmReg(x64GenContext_t* x64GenContext, sint32...
function x64Gen_movsd_xmmReg_memReg64 (line 216) | void x64Gen_movsd_xmmReg_memReg64(x64GenContext_t* x64GenContext, sint32...
function x64Gen_movlpd_xmmReg_memReg64 (line 247) | void x64Gen_movlpd_xmmReg_memReg64(x64GenContext_t* x64GenContext, sint3...
function x64Gen_unpcklpd_xmmReg_xmmReg (line 279) | void x64Gen_unpcklpd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint3...
function x64Gen_unpckhpd_xmmReg_xmmReg (line 289) | void x64Gen_unpckhpd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint3...
function x64Gen_shufpd_xmmReg_xmmReg_imm8 (line 299) | void x64Gen_shufpd_xmmReg_xmmReg_imm8(x64GenContext_t* x64GenContext, si...
function x64Gen_addsd_xmmReg_xmmReg (line 311) | void x64Gen_addsd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 x...
function x64Gen_addpd_xmmReg_xmmReg (line 322) | void x64Gen_addpd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 x...
function x64Gen_subsd_xmmReg_xmmReg (line 333) | void x64Gen_subsd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 x...
function x64Gen_subpd_xmmReg_xmmReg (line 344) | void x64Gen_subpd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 x...
function x64Gen_mulsd_xmmReg_xmmReg (line 355) | void x64Gen_mulsd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 x...
function x64Gen_mulpd_xmmReg_xmmReg (line 366) | void x64Gen_mulpd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 x...
function x64Gen_mulpd_xmmReg_memReg128 (line 377) | void x64Gen_mulpd_xmmReg_memReg128(x64GenContext_t* x64GenContext, sint3...
function x64Gen_divsd_xmmReg_xmmReg (line 399) | void x64Gen_divsd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 x...
function x64Gen_divpd_xmmReg_xmmReg (line 410) | void x64Gen_divpd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 x...
function x64Gen_comisd_xmmReg_xmmReg (line 421) | void x64Gen_comisd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_comisd_xmmReg_mem64Reg64 (line 432) | void x64Gen_comisd_xmmReg_mem64Reg64(x64GenContext_t* x64GenContext, sin...
function x64Gen_ucomisd_xmmReg_xmmReg (line 449) | void x64Gen_ucomisd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32...
function x64Gen_comiss_xmmReg_mem64Reg64 (line 460) | void x64Gen_comiss_xmmReg_mem64Reg64(x64GenContext_t* x64GenContext, sin...
function x64Gen_orps_xmmReg_mem128Reg64 (line 476) | void x64Gen_orps_xmmReg_mem128Reg64(x64GenContext_t* x64GenContext, sint...
function x64Gen_xorps_xmmReg_mem128Reg64 (line 492) | void x64Gen_xorps_xmmReg_mem128Reg64(x64GenContext_t* x64GenContext, sin...
function x64Gen_andpd_xmmReg_memReg128 (line 508) | void x64Gen_andpd_xmmReg_memReg128(x64GenContext_t* x64GenContext, sint3...
function x64Gen_andps_xmmReg_mem128Reg64 (line 530) | void x64Gen_andps_xmmReg_mem128Reg64(x64GenContext_t* x64GenContext, sin...
function x64Gen_andps_xmmReg_xmmReg (line 546) | void x64Gen_andps_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 x...
function x64Gen_pcmpeqd_xmmReg_mem128Reg64 (line 556) | void x64Gen_pcmpeqd_xmmReg_mem128Reg64(x64GenContext_t* x64GenContext, s...
function x64Gen_cvttpd2dq_xmmReg_xmmReg (line 573) | void x64Gen_cvttpd2dq_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint...
function x64Gen_cvttsd2si_xmmReg_xmmReg (line 584) | void x64Gen_cvttsd2si_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint...
function x64Gen_cvtsi2sd_xmmReg_xmmReg (line 595) | void x64Gen_cvtsi2sd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint3...
function x64Gen_cvtsd2ss_xmmReg_xmmReg (line 605) | void x64Gen_cvtsd2ss_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint3...
function x64Gen_cvtpd2ps_xmmReg_xmmReg (line 616) | void x64Gen_cvtpd2ps_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint3...
function x64Gen_cvtps2pd_xmmReg_xmmReg (line 627) | void x64Gen_cvtps2pd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint3...
function x64Gen_cvtss2sd_xmmReg_xmmReg (line 637) | void x64Gen_cvtss2sd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint3...
function x64Gen_cvtpi2pd_xmmReg_mem64Reg64 (line 648) | void x64Gen_cvtpi2pd_xmmReg_mem64Reg64(x64GenContext_t* x64GenContext, s...
function x64Gen_cvtsd2si_reg64Low_xmmReg (line 668) | void x64Gen_cvtsd2si_reg64Low_xmmReg(x64GenContext_t* x64GenContext, sin...
function x64Gen_cvttsd2si_reg64Low_xmmReg (line 679) | void x64Gen_cvttsd2si_reg64Low_xmmReg(x64GenContext_t* x64GenContext, si...
function x64Gen_sqrtsd_xmmReg_xmmReg (line 690) | void x64Gen_sqrtsd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_sqrtpd_xmmReg_xmmReg (line 701) | void x64Gen_sqrtpd_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 ...
function x64Gen_rcpss_xmmReg_xmmReg (line 712) | void x64Gen_rcpss_xmmReg_xmmReg(x64GenContext_t* x64GenContext, sint32 x...
function x64Gen_mulss_xmmReg_memReg64 (line 723) | void x64Gen_mulss_xmmReg_memReg64(x64GenContext_t* x64GenContext, sint32...
function x64Gen_movd_xmmReg_reg64Low32 (line 745) | void x64Gen_movd_xmmReg_reg64Low32(x64GenContext_t* x64GenContext, sint3...
function x64Gen_movd_reg64Low32_xmmReg (line 757) | void x64Gen_movd_reg64Low32_xmmReg(x64GenContext_t* x64GenContext, sint3...
function x64Gen_movq_xmmReg_reg64 (line 769) | void x64Gen_movq_xmmReg_reg64(x64GenContext_t* x64GenContext, sint32 xmm...
function x64Gen_movq_reg64_xmmReg (line 781) | void x64Gen_movq_reg64_xmmReg(x64GenContext_t* x64GenContext, sint32 reg...
FILE: src/Cafe/HW/Espresso/Recompiler/BackendX64/X64Emit.hpp
class x64_opc_1byte (line 4) | class x64_opc_1byte
method emitBytes (line 7) | static void emitBytes(x64GenContext_t* x64GenContext)
method isRevOrder (line 13) | static constexpr bool isRevOrder()
method hasRex64BitPrefix (line 18) | static constexpr bool hasRex64BitPrefix()
class x64_opc_1byte_rev (line 25) | class x64_opc_1byte_rev
method emitBytes (line 28) | static void emitBytes(x64GenContext_t* x64GenContext)
method isRevOrder (line 34) | static constexpr bool isRevOrder()
method hasRex64BitPrefix (line 39) | static constexpr bool hasRex64BitPrefix()
class x64_opc_2byte (line 46) | class x64_opc_2byte
method emitBytes (line 49) | static void emitBytes(x64GenContext_t* x64GenContext)
method isRevOrder (line 55) | static constexpr bool isRevOrder()
method hasRex64BitPrefix (line 60) | static constexpr bool hasRex64BitPrefix()
type MODRM_OPR_TYPE (line 66) | enum class MODRM_OPR_TYPE
class x64MODRM_opr_reg64 (line 72) | class x64MODRM_opr_reg64
method x64MODRM_opr_reg64 (line 75) | x64MODRM_opr_reg64(uint8 reg)
method MODRM_OPR_TYPE (line 80) | static constexpr MODRM_OPR_TYPE getType()
method uint8 (line 85) | const uint8 getReg() const
class x64MODRM_opr_memReg64 (line 94) | class x64MODRM_opr_memReg64
method x64MODRM_opr_memReg64 (line 97) | x64MODRM_opr_memReg64(uint8 reg)
method x64MODRM_opr_memReg64 (line 103) | x64MODRM_opr_memReg64(uint8 reg, sint32 offset)
method MODRM_OPR_TYPE (line 109) | static constexpr MODRM_OPR_TYPE getType()
method uint8 (line 114) | const uint8 getBaseReg() const
method uint32 (line 119) | const uint32 getOffset() const
method hasBaseReg (line 124) | static constexpr bool hasBaseReg()
method hasIndexReg (line 129) | static constexpr bool hasIndexReg()
class x64MODRM_opr_memRegPlusReg (line 138) | class x64MODRM_opr_memRegPlusReg
method x64MODRM_opr_memRegPlusReg (line 141) | x64MODRM_opr_memRegPlusReg(uint8 regBase, uint8 regIndex)
method x64MODRM_opr_memRegPlusReg (line 155) | x64MODRM_opr_memRegPlusReg(uint8 regBase, uint8 regIndex, sint32 offset)
method MODRM_OPR_TYPE (line 167) | static constexpr MODRM_OPR_TYPE getType()
method uint8 (line 172) | const uint8 getBaseReg() const
method uint8 (line 177) | const uint8 getIndexReg()
method uint32 (line 182) | const uint32 getOffset() const
method hasBaseReg (line 187) | static constexpr bool hasBaseReg()
method hasIndexReg (line 192) | static constexpr bool hasIndexReg()
function _x64Gen_writeMODRM_internal (line 203) | void _x64Gen_writeMODRM_internal(x64GenContext_t* x64GenContext, TA opA,...
function x64Gen_writeMODRM_dyn (line 353) | void x64Gen_writeMODRM_dyn(x64GenContext_t* x64GenContext, TA opLeft, TB...
FILE: src/Cafe/HW/Espresso/Recompiler/BackendX64/x86Emitter.h
type u64 (line 6) | typedef unsigned long long u64;
type u32 (line 7) | typedef unsigned int u32;
type u16 (line 8) | typedef unsigned short u16;
type u8 (line 9) | typedef unsigned char u8;
type s64 (line 10) | typedef signed long long s64;
type s32 (line 11) | typedef signed int s32;
type s16 (line 12) | typedef signed short s16;
type s8 (line 13) | typedef signed char s8;
type X86Reg (line 15) | enum X86Reg
type X86Cond (line 52) | enum X86Cond
function class (line 71) | class x86Assembler64
FILE: src/Cafe/HW/Espresso/Recompiler/IML/IML.h
type ppcImlGenContext_t (line 7) | struct ppcImlGenContext_t
type ppcImlGenContext_t (line 8) | struct ppcImlGenContext_t
type ppcImlGenContext_t (line 9) | struct ppcImlGenContext_t
type ppcImlGenContext_t (line 15) | struct ppcImlGenContext_t
type ppcImlGenContext_t (line 16) | struct ppcImlGenContext_t
FILE: src/Cafe/HW/Espresso/Recompiler/IML/IMLDebug.cpp
function IMLDebug_GetRegName (line 68) | std::string IMLDebug_GetRegName(IMLReg r)
function IMLDebug_AppendRegisterParam (line 93) | void IMLDebug_AppendRegisterParam(StringBuf& strOutput, IMLReg virtualRe...
function IMLDebug_AppendS32Param (line 100) | void IMLDebug_AppendS32Param(StringBuf& strOutput, sint32 val, bool isLa...
function IMLDebug_PrintLivenessRangeInfo (line 112) | void IMLDebug_PrintLivenessRangeInfo(StringBuf& currentLineText, IMLSegm...
function IMLDebug_GetSegmentName (line 154) | std::string IMLDebug_GetSegmentName(ppcImlGenContext_t* ctx, IMLSegment*...
function IMLDebug_GetConditionName (line 171) | std::string IMLDebug_GetConditionName(IMLCondition cond)
function IMLDebug_DisassembleInstruction (line 193) | void IMLDebug_DisassembleInstruction(const IMLInstruction& inst, std::st...
function IMLDebug_DumpSegment (line 471) | void IMLDebug_DumpSegment(ppcImlGenContext_t* ctx, IMLSegment* imlSegmen...
function IMLDebug_Dump (line 554) | void IMLDebug_Dump(ppcImlGenContext_t* ppcImlGenContext, bool printLiven...
FILE: src/Cafe/HW/Espresso/Recompiler/IML/IMLInstruction.cpp
function IMLReg (line 339) | IMLReg replaceRegisterIdMultiple(IMLReg reg, const std::unordered_map<IM...
FILE: src/Cafe/HW/Espresso/Recompiler/IML/IMLInstruction.h
function IMLRegFormat (line 12) | enum class IMLRegFormat : uint8
function IMLCondition (line 183) | enum class IMLCondition : uint8
type IMLInstruction (line 351) | struct IMLInstruction
function make_no_op (line 528) | void make_no_op()
function make_r_name (line 534) | void make_r_name(IMLReg regR, IMLName name)
function make_name_r (line 543) | void make_name_r(IMLName name, IMLReg regR)
function make_macro (line 557) | void make_macro(uint32 macroId, uint32 param, uint32 param2, uint16 para...
function make_cjump_cycle_check (line 567) | void make_cjump_cycle_check()
function make_r_r (line 573) | void make_r_r(uint32 operation, IMLReg regR, IMLReg regA)
function make_r_s32 (line 581) | void make_r_s32(uint32 operation, IMLReg regR, sint32 immS32)
function make_r_r_r (line 589) | void make_r_r_r(uint32 operation, IMLReg regR, IMLReg regA, IMLReg regB)
function make_r_r_r_carry (line 598) | void make_r_r_r_carry(uint32 operation, IMLReg regR, IMLReg regA, IMLReg...
function make_r_r_s32 (line 608) | void make_r_r_s32(uint32 operation, IMLReg regR, IMLReg regA, sint32 imm...
function make_r_r_s32_carry (line 617) | void make_r_r_s32_carry(uint32 operation, IMLReg regR, IMLReg regA, sint...
function make_compare (line 627) | void make_compare(IMLReg regA, IMLReg regB, IMLReg regR, IMLCondition cond)
function make_compare_s32 (line 637) | void make_compare_s32(IMLReg regA, sint32 immS32, IMLReg regR, IMLCondit...
function make_conditional_jump (line 647) | void make_conditional_jump(IMLReg regBool, bool mustBeTrue)
function make_jump (line 655) | void make_jump()
function make_r_memory (line 662) | void make_r_memory(IMLReg regD, IMLReg regMem, sint32 immS32, uint32 cop...
function make_memory_r (line 675) | void make_memory_r(IMLReg regS, IMLReg regMem, sint32 immS32, uint32 cop...
function make_atomic_cmp_store (line 687) | void make_atomic_cmp_store(IMLReg regEA, IMLReg regCompareValue, IMLReg ...
function make_call_imm (line 697) | void make_call_imm(uintptr_t callAddress, IMLReg param0, IMLReg param1, ...
function make_fpr_r_memory (line 711) | void make_fpr_r_memory(IMLReg registerDestination, IMLReg registerMemory...
function make_fpr_r_memory_indexed (line 722) | void make_fpr_r_memory_indexed(IMLReg registerDestination, IMLReg regist...
function make_fpr_memory_r (line 735) | void make_fpr_memory_r(IMLReg registerSource, IMLReg registerMemory, sin...
function make_fpr_memory_r_indexed (line 746) | void make_fpr_memory_r_indexed(IMLReg registerSource, IMLReg registerMem...
function make_fpr_compare (line 758) | void make_fpr_compare(IMLReg regA, IMLReg regB, IMLReg regR, IMLConditio...
function make_fpr_r (line 768) | void make_fpr_r(sint32 operation, IMLReg registerResult)
function make_fpr_r_r (line 776) | void make_fpr_r_r(sint32 operation, IMLReg registerResult, IMLReg regist...
function make_fpr_r_r_r (line 785) | void make_fpr_r_r_r(sint32 operation, IMLReg registerResult, IMLReg regi...
function make_fpr_r_r_r_r (line 795) | void make_fpr_r_r_r_r(sint32 operation, IMLReg registerResult, IMLReg re...
function make_x86_eflags_jcc (line 807) | void make_x86_eflags_jcc(IMLCondition cond, bool invertedCondition)
function HasSideEffects (line 816) | bool HasSideEffects() const; // returns true if the instruction has side...
FILE: src/Cafe/HW/Espresso/Recompiler/IML/IMLOptimizer.cpp
function IMLReg (line 14) | IMLReg _FPRRegFromID(IMLRegID regId)
function PPCRecompiler_optimizeDirectFloatCopiesScanForward (line 19) | void PPCRecompiler_optimizeDirectFloatCopiesScanForward(ppcImlGenContext...
function IMLOptimizer_OptimizeDirectFloatCopies (line 125) | void IMLOptimizer_OptimizeDirectFloatCopies(ppcImlGenContext_t* ppcImlGe...
function PPCRecompiler_optimizeDirectIntegerCopiesScanForward (line 144) | void PPCRecompiler_optimizeDirectIntegerCopiesScanForward(ppcImlGenConte...
function IMLOptimizer_OptimizeDirectIntegerCopies (line 209) | void IMLOptimizer_OptimizeDirectIntegerCopies(ppcImlGenContext_t* ppcIml...
function sint32 (line 226) | sint32 _getGQRIndexFromRegister(ppcImlGenContext_t* ppcImlGenContext, IM...
function PPCRecompiler_isUGQRValueKnown (line 242) | bool PPCRecompiler_isUGQRValueKnown(ppcImlGenContext_t* ppcImlGenContext...
class IMLOptimizerRegIOAnalysis (line 262) | class IMLOptimizerRegIOAnalysis
method IMLOptimizerRegIOAnalysis (line 266) | IMLOptimizerRegIOAnalysis(std::span<IMLSegment*> segmentList, uint32 m...
type IMLSegmentRegisterInOut (line 271) | struct IMLSegmentRegisterInOut
method ComputeDepedencies (line 281) | void ComputeDepedencies()
method GetRegistersNeededAtEndOfSegment (line 374) | std::unordered_set<IMLRegID> GetRegistersNeededAtEndOfSegment(IMLSegme...
method IsRegisterNeededAtEndOfSegment (line 408) | bool IsRegisterNeededAtEndOfSegment(IMLSegment& seg, IMLRegID regId)
function sint32 (line 449) | sint32 IMLUtil_FindInstructionWhichWritesRegister(IMLSegment& seg, sint3...
function IMLUtil_CanMoveInstructionTo (line 465) | bool IMLUtil_CanMoveInstructionTo(IMLSegment& seg, sint32 initialIndex, ...
function sint32 (line 509) | sint32 IMLUtil_CountRegisterReadsInRange(IMLSegment& seg, sint32 scanSta...
function sint32 (line 529) | sint32 IMLUtil_MoveInstructionTo(IMLSegment& seg, sint32 initialIndex, s...
function IMLOptimizerX86_ModifiesEFlags (line 552) | bool IMLOptimizerX86_ModifiesEFlags(IMLInstruction& inst)
function IMLOptimizer_DebugPrintSeg (line 562) | void IMLOptimizer_DebugPrintSeg(ppcImlGenContext_t& ppcImlGenContext, IM...
function IMLOptimizer_RemoveDeadCodeFromSegment (line 569) | void IMLOptimizer_RemoveDeadCodeFromSegment(IMLOptimizerRegIOAnalysis& r...
function IMLOptimizerX86_SubstituteCJumpForEflagsJump (line 622) | void IMLOptimizerX86_SubstituteCJumpForEflagsJump(IMLOptimizerRegIOAnaly...
function IMLOptimizer_StandardOptimizationPassForSegment (line 701) | void IMLOptimizer_StandardOptimizationPassForSegment(IMLOptimizerRegIOAn...
function IMLOptimizer_StandardOptimizationPass (line 711) | void IMLOptimizer_StandardOptimizationPass(ppcImlGenContext_t& ppcImlGen...
FILE: src/Cafe/HW/Espresso/Recompiler/IML/IMLRegisterAllocator.cpp
type IMLRARegAbstractLiveness (line 21) | struct IMLRARegAbstractLiveness // preliminary liveness info. One entry ...
method IMLRARegAbstractLiveness (line 23) | IMLRARegAbstractLiveness(IMLRegFormat regBaseFormat, sint32 usageStart...
method TrackInstruction (line 26) | void TrackInstruction(sint32 index)
type IMLRegisterAllocatorContext (line 38) | struct IMLRegisterAllocatorContext
method IMLRegFormat (line 53) | inline IMLRegFormat GetBaseFormatByRegId(IMLRegID regId) const
type IMLFixedRegisters (line 61) | struct IMLFixedRegisters
type Entry (line 63) | struct Entry
method Entry (line 65) | Entry(IMLReg reg, IMLPhysRegisterSet physRegSet)
function SetupCallingConvention (line 75) | static void SetupCallingConvention(const IMLInstruction* instruction, IM...
function GetInstructionFixedRegisters (line 128) | static void GetInstructionFixedRegisters(IMLInstruction* instruction, IM...
function GetInstructionFixedRegisters (line 152) | static void GetInstructionFixedRegisters(IMLInstruction* instruction, IM...
function uint32 (line 197) | uint32 IMLRA_GetNextIterationIndex()
function _detectLoop (line 204) | bool _detectLoop(IMLSegment* currentSegment, sint32 depth, uint32 iterat...
function IMLRA_DetectLoop (line 236) | void IMLRA_DetectLoop(ppcImlGenContext_t* ppcImlGenContext, IMLSegment* ...
function IMLRA_IdentifyLoop (line 246) | void IMLRA_IdentifyLoop(ppcImlGenContext_t* ppcImlGenContext, IMLSegment...
function sint32 (line 266) | sint32 IMLRA_CountDistanceUntilNextUse(raLivenessRange* subrange, raInst...
function sint32 (line 283) | sint32 IMLRA_CountDistanceUntilFixedRegUsageInRange(IMLSegment* imlSegme...
function sint32 (line 301) | sint32 IMLRA_CountDistanceUntilFixedRegUsage(IMLSegment* imlSegment, raI...
function sint32 (line 335) | sint32 PPCRecRA_countDistanceUntilNextLocalPhysRegisterUse(IMLSegment* i...
type IMLRALivenessTimeline (line 363) | struct IMLRALivenessTimeline
method IMLRALivenessTimeline (line 365) | IMLRALivenessTimeline()
method AddActiveRange (line 370) | void AddActiveRange(raLivenessRange* subrange)
method ExpireRanges (line 375) | void ExpireRanges(raInstructionEdge expireUpTo)
method GetExpiredRanges (line 399) | std::span<raLivenessRange*> GetExpiredRanges()
method GetActiveRanges (line 404) | std::span<raLivenessRange*> GetActiveRanges()
method raLivenessRange (line 409) | raLivenessRange* GetActiveRangeByVirtualRegId(IMLRegID regId)
method raLivenessRange (line 417) | raLivenessRange* GetActiveRangeByPhysicalReg(sint32 physReg)
function PPCRecRA_MaskOverlappingPhysRegForGlobalRange (line 433) | void PPCRecRA_MaskOverlappingPhysRegForGlobalRange(raLivenessRange* rang...
function _livenessRangeStartCompare (line 459) | bool _livenessRangeStartCompare(raLivenessRange* lhs, raLivenessRange* rhs)
function _sortSegmentAllSubrangesLinkedList (line 464) | void _sortSegmentAllSubrangesLinkedList(IMLSegment* imlSegment)
function raLivenessRange (line 520) | raLivenessRange* IMLRA_GetSubrange(IMLSegment* imlSegment, IMLRegID regId)
type raFixedRegRequirementWithVGPR (line 528) | struct raFixedRegRequirementWithVGPR
method raFixedRegRequirementWithVGPR (line 530) | raFixedRegRequirementWithVGPR(raInstructionEdge pos, IMLPhysRegisterSe...
function IMLRA_BuildSegmentInstructionFixedRegList (line 538) | std::vector<raFixedRegRequirementWithVGPR> IMLRA_BuildSegmentInstruction...
function IMLRA_GetRangeWithFixedRegReservationOverlappingPos (line 562) | boost::container::small_vector<raLivenessRange*, 8> IMLRA_GetRangeWithFi...
function IMLRA_HandleFixedRegisters (line 578) | void IMLRA_HandleFixedRegisters(ppcImlGenContext_t* ppc
Copy disabled (too large)
Download .json
Condensed preview — 1285 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (20,661K chars).
[
{
"path": ".clang-format",
"chars": 1861,
"preview": "AlignAfterOpenBracket: Align\nAlignConsecutiveAssignments: false\nAlignConsecutiveDeclarations: false\nAlignEscapedNewlines"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 251,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Cemu Discord\n url: https://discord.com/invite/5psYsup\n about:"
},
{
"path": ".github/ISSUE_TEMPLATE/emulation_bug_report.yaml",
"chars": 2649,
"preview": "# Docs - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_report.yaml",
"chars": 1705,
"preview": "# Docs - https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-"
},
{
"path": ".github/workflows/build.yml",
"chars": 10025,
"preview": "name: Build Cemu\n\non:\n workflow_call:\n inputs:\n next_version_major:\n required: false\n type: strin"
},
{
"path": ".github/workflows/build_check.yml",
"chars": 259,
"preview": "name: Build check\non: \n pull_request:\n paths-ignore:\n - \"*.md\"\n types:\n - opened\n - synchronize\n "
},
{
"path": ".github/workflows/deploy_release.yml",
"chars": 6635,
"preview": "name: Deploy release\non: \n workflow_dispatch:\n inputs:\n changelog0:\n description: 'Enter the changelog l"
},
{
"path": ".github/workflows/determine_release_version.yml",
"chars": 2655,
"preview": "name: Calculate Next Version from release history\n\non:\n workflow_dispatch:\n workflow_call:\n outputs:\n next_ver"
},
{
"path": ".github/workflows/generate_pot.yml",
"chars": 999,
"preview": "name: Generate translation template\n\non:\n pull_request:\n paths-ignore:\n - \"*.md\"\n types:\n - opened\n "
},
{
"path": ".gitignore",
"chars": 647,
"preview": "*.slo\n*.lo\n*.o\n*.obj\n*.gch\n*.pch\n*.so\n*.dylib\n*.dll\n*.a\n*.lib\n*.exe\n*.out\n*.app\n.vs\n.vscode\n.idea/\n\nbuild/\ncmake-build-*"
},
{
"path": ".gitmodules",
"chars": 880,
"preview": "[submodule \"dependencies/ZArchive\"]\n\tpath = dependencies/ZArchive\n\turl = https://github.com/Exzap/ZArchive\n\tshallow = tr"
},
{
"path": "BUILD.md",
"chars": 14146,
"preview": "# Build Instructions\n\n## Table of Contents\n\n- [Windows](#windows)\n- [Linux](#linux)\n - [Dependencies](#dependencies)\n "
},
{
"path": "CMakeLists.txt",
"chars": 8334,
"preview": "cmake_minimum_required(VERSION 3.21.1)\n\noption(ENABLE_VCPKG \"Enable the vcpkg package manager\" ON)\noption(MACOS_BUNDLE \""
},
{
"path": "CMakeSettings.json",
"chars": 849,
"preview": "{\n \"configurations\": [\n {\n \"name\": \"RelWithDebInfo\",\n \"configurationType\": \"RelWithDebInfo\",\n \"gener"
},
{
"path": "CODING_STYLE.md",
"chars": 4127,
"preview": "\n# Coding style guidelines for Cemu\n\nThis document describes the latest version of our coding-style guidelines. Since we"
},
{
"path": "LICENSE.txt",
"chars": 16725,
"preview": "Mozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\""
},
{
"path": "README.md",
"chars": 3503,
"preview": "# **Cemu - Wii U emulator**\n\n[\n"
},
{
"path": "cmake/FindGTK3.cmake",
"chars": 466,
"preview": "# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>\n# SPDX-License-Identifier: ISC\n\ninclude(FindPackag"
},
{
"path": "cmake/FindWayland.cmake",
"chars": 4879,
"preview": "# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>\n# SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin"
},
{
"path": "cmake/FindWaylandProtocols.cmake",
"chars": 1269,
"preview": "# SPDX-FileCopyrightText: 2019 Vlad Zahorodnii <vlad.zahorodnii@kde.org>\n#\n# SPDX-License-Identifier: BSD-3-Clause\n\n#[=="
},
{
"path": "cmake/FindWaylandScanner.cmake",
"chars": 5766,
"preview": "# SPDX-FileCopyrightText: 2012-2014 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>\n#\n# SPDX-License-Identifier: BSD-3-"
},
{
"path": "cmake/FindZArchive.cmake",
"chars": 483,
"preview": "# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>\n# SPDX-License-Identifier: ISC\n\nfind_package(PkgCo"
},
{
"path": "cmake/Findbluez.cmake",
"chars": 509,
"preview": "# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>\n# SPDX-License-Identifier: ISC\n\nfind_package(bluez"
},
{
"path": "cmake/Findimgui.cmake",
"chars": 662,
"preview": "# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>\n# SPDX-License-Identifier: ISC\n\ninclude(FindPackag"
},
{
"path": "cmake/Findlibusb.cmake",
"chars": 562,
"preview": "# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>\n# SPDX-License-Identifier: ISC\n\nfind_package(libus"
},
{
"path": "cmake/FindwxWidgets.cmake",
"chars": 1783,
"preview": "# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>\n# SPDX-License-Identifier: ISC\n\ninclude(FindPackag"
},
{
"path": "cmake/Findzstd.cmake",
"chars": 895,
"preview": "# SPDX-FileCopyrightText: 2022 Andrea Pappacoda <andrea@pappacoda.it>\n# SPDX-License-Identifier: ISC\n\ninclude(FindPackag"
},
{
"path": "dependencies/DirectX_2010/XAudio2.h",
"chars": 63121,
"preview": "/**************************************************************************\n *\n * Copyright (c) Microsoft Corporation. "
},
{
"path": "dependencies/DirectX_2010/audiodefs.h",
"chars": 10644,
"preview": "/***************************************************************************\n *\n * Copyright (c) Microsoft Corporation."
},
{
"path": "dependencies/DirectX_2010/comdecl.h",
"chars": 2656,
"preview": "// comdecl.h: Macros to facilitate COM interface and GUID declarations.\n// Copyright (c) Microsoft Corporation. All rig"
},
{
"path": "dependencies/DirectX_2010/xma2defs.h",
"chars": 32038,
"preview": "/***************************************************************************\n *\n * Copyright (c) Microsoft Corporation. "
},
{
"path": "dependencies/gamemode/CMakeLists.txt",
"chars": 116,
"preview": "project( gamemode LANGUAGES C )\nadd_library (gamemode\n \"lib/gamemode_client.h\"\n \"lib/client_loader.c\")"
},
{
"path": "dependencies/gamemode/lib/client_loader.c",
"chars": 1675,
"preview": "/*\n\nCopyright (c) 2017-2019, Feral Interactive\nAll rights reserved.\n\nRedistribution and use in source and binary forms, "
},
{
"path": "dependencies/gamemode/lib/gamemode_client.h",
"chars": 12104,
"preview": "/*\n\nCopyright (c) 2017-2019, Feral Interactive\nAll rights reserved.\n\nRedistribution and use in source and binary forms, "
},
{
"path": "dependencies/ih264d/CHANGES",
"chars": 546,
"preview": "Code adjustments made by Team Cemu for Cemu emulator project as of 2022-02-01:\n- Stripped encoder, tests and fuzzer. We "
},
{
"path": "dependencies/ih264d/CMakeLists.txt",
"chars": 7123,
"preview": "cmake_minimum_required (VERSION 3.8)\n\nproject (\"ih264d\")\n\nadd_library (ih264d \n\"common/ih264_buf_mgr.c\"\n\"common/ih264_b"
},
{
"path": "dependencies/ih264d/CMakeSettings.json",
"chars": 753,
"preview": "{\n \"configurations\": [\n {\n \"name\": \"x64-Debug\",\n \"generator\": \"Ninja\",\n \"configurationType\": \"Debug\""
},
{
"path": "dependencies/ih264d/NOTICE",
"chars": 935,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/arm/ih264_arm_memory_barrier.s",
"chars": 2110,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_deblk_chroma_a9.s",
"chars": 49948,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_deblk_luma_a9.s",
"chars": 51943,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_default_weighted_pred_a9q.s",
"chars": 13497,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_ihadamard_scaling_a9.s",
"chars": 9100,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_inter_pred_chroma_a9q.s",
"chars": 6898,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_inter_pred_filters_luma_horz_a9q.s",
"chars": 13473,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_inter_pred_filters_luma_vert_a9q.s",
"chars": 10787,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_inter_pred_luma_bilinear_a9q.s",
"chars": 15355,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_inter_pred_luma_copy_a9q.s",
"chars": 8829,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q.s",
"chars": 24134,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q.s",
"chars": 29494,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_inter_pred_luma_horz_qpel_a9q.s",
"chars": 14747,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q.s",
"chars": 16923,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q.s",
"chars": 12303,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_inter_pred_luma_vert_qpel_a9q.s",
"chars": 12940,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_intra_pred_chroma_a9q.s",
"chars": 15391,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_intra_pred_luma_16x16_a9q.s",
"chars": 14280,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_intra_pred_luma_4x4_a9q.s",
"chars": 22457,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_intra_pred_luma_8x8_a9q.s",
"chars": 28459,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_iquant_itrans_recon_a9.s",
"chars": 32970,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_iquant_itrans_recon_dc_a9.s",
"chars": 14484,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_mem_fns_neon.s",
"chars": 5926,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_padding_neon.s",
"chars": 18374,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_platform_macros.h",
"chars": 4685,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/arm/ih264_resi_trans_quant_a9.s",
"chars": 24868,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_weighted_bi_pred_a9q.s",
"chars": 29533,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/arm/ih264_weighted_pred_a9q.s",
"chars": 20657,
"preview": "@/******************************************************************************\n@ *\n@ * Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_deblk_chroma_av8.s",
"chars": 22040,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_deblk_luma_av8.s",
"chars": 47708,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_default_weighted_pred_av8.s",
"chars": 13966,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_ihadamard_scaling_av8.s",
"chars": 8787,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_inter_pred_chroma_av8.s",
"chars": 13376,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_inter_pred_filters_luma_horz_av8.s",
"chars": 37462,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_inter_pred_filters_luma_vert_av8.s",
"chars": 17354,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_inter_pred_luma_copy_av8.s",
"chars": 8976,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_inter_pred_luma_horz_hpel_vert_hpel_av8.s",
"chars": 24561,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_inter_pred_luma_horz_hpel_vert_qpel_av8.s",
"chars": 34407,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_inter_pred_luma_horz_qpel_av8.s",
"chars": 33906,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_inter_pred_luma_horz_qpel_vert_hpel_av8.s",
"chars": 30579,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_inter_pred_luma_horz_qpel_vert_qpel_av8.s",
"chars": 33594,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_inter_pred_luma_vert_qpel_av8.s",
"chars": 22553,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_intra_pred_chroma_av8.s",
"chars": 16826,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_intra_pred_luma_16x16_av8.s",
"chars": 16927,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_intra_pred_luma_4x4_av8.s",
"chars": 22702,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_intra_pred_luma_8x8_av8.s",
"chars": 30757,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_iquant_itrans_recon_av8.s",
"chars": 26635,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_iquant_itrans_recon_dc_av8.s",
"chars": 11668,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_mem_fns_neon_av8.s",
"chars": 6048,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_neon_macros.s",
"chars": 1416,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_padding_neon_av8.s",
"chars": 20378,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_platform_macros.h",
"chars": 4685,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/armv8/ih264_resi_trans_quant_av8.s",
"chars": 25030,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_weighted_bi_pred_av8.s",
"chars": 29253,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/ih264_weighted_pred_av8.s",
"chars": 20773,
"preview": "//******************************************************************************\n//*\n//* Copyright (C) 2015 The Android "
},
{
"path": "dependencies/ih264d/common/armv8/macos_arm_symbol_aliases.s",
"chars": 7733,
"preview": "// macOS clang compilers append preceding underscores to function names, this is to prevent\n// mismatches with the assem"
},
{
"path": "dependencies/ih264d/common/ih264_buf_mgr.c",
"chars": 16909,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_buf_mgr.h",
"chars": 3715,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_cabac_tables.c",
"chars": 664033,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_cabac_tables.h",
"chars": 6254,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_cavlc_tables.c",
"chars": 10033,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_cavlc_tables.h",
"chars": 5353,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_chroma_intra_pred_filters.c",
"chars": 15061,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_common_tables.c",
"chars": 22353,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_common_tables.h",
"chars": 4725,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_deblk_edge_filters.c",
"chars": 100306,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_deblk_edge_filters.h",
"chars": 8188,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_deblk_tables.c",
"chars": 4527,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_deblk_tables.h",
"chars": 2502,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_debug.h",
"chars": 1649,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_defs.h",
"chars": 20373,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_disp_mgr.c",
"chars": 4574,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_disp_mgr.h",
"chars": 1869,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_dpb_mgr.c",
"chars": 36630,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_dpb_mgr.h",
"chars": 6057,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_error.h",
"chars": 1790,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_ihadamard_scaling.c",
"chars": 6343,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_inter_pred_filters.c",
"chars": 36935,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_inter_pred_filters.h",
"chars": 8814,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_intra_pred_filters.h",
"chars": 11263,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_iquant_itrans_recon.c",
"chars": 30334,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_list.c",
"chars": 14688,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_list.h",
"chars": 2891,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_luma_intra_pred_filters.c",
"chars": 62168,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_macros.h",
"chars": 3941,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_mem_fns.c",
"chars": 4254,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_mem_fns.h",
"chars": 3823,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_padding.c",
"chars": 7714,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_padding.h",
"chars": 2313,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_resi_trans.h",
"chars": 2180,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_resi_trans_quant.c",
"chars": 23312,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_size_defs.h",
"chars": 3286,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_structs.h",
"chars": 44234,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_trans_data.c",
"chars": 11977,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_trans_data.h",
"chars": 4994,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_trans_macros.h",
"chars": 4525,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_trans_quant_itrans_iquant.h",
"chars": 13092,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_typedefs.h",
"chars": 2253,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_weighted_pred.c",
"chars": 25992,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ih264_weighted_pred.h",
"chars": 5710,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ithread.c",
"chars": 8572,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/ithread.h",
"chars": 4777,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/mips/ih264_platform_macros.h",
"chars": 3285,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_chroma_intra_pred_filters_ssse3.c",
"chars": 14760,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_deblk_chroma_ssse3.c",
"chars": 56409,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_deblk_luma_ssse3.c",
"chars": 87917,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_ihadamard_scaling_sse42.c",
"chars": 10428,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_ihadamard_scaling_ssse3.c",
"chars": 8215,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_inter_pred_filters_ssse3.c",
"chars": 238016,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_iquant_itrans_recon_dc_ssse3.c",
"chars": 18350,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_iquant_itrans_recon_sse42.c",
"chars": 27675,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_iquant_itrans_recon_ssse3.c",
"chars": 57668,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_luma_intra_pred_filters_ssse3.c",
"chars": 76940,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_mem_fns_ssse3.c",
"chars": 4346,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_padding_ssse3.c",
"chars": 7166,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_platform_macros.h",
"chars": 3790,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_resi_trans_quant_sse42.c",
"chars": 39485,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/common/x86/ih264_weighted_pred_sse42.c",
"chars": 63267,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/arm/ih264d_function_selector.c",
"chars": 2958,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/arm/ih264d_function_selector_a9q.c",
"chars": 9176,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/arm/ih264d_function_selector_av8.c",
"chars": 9101,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d.h",
"chars": 24017,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_api.c",
"chars": 170529,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_bitstrm.c",
"chars": 5859,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_bitstrm.h",
"chars": 9702,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_cabac.c",
"chars": 30250,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_cabac.h",
"chars": 13505,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_cabac_init_tables.c",
"chars": 664691,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_compute_bs.c",
"chars": 111818,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_deblocking.c",
"chars": 72785,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_deblocking.h",
"chars": 8168,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_debug.h",
"chars": 3702,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_defs.h",
"chars": 18567,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_dpb_manager.h",
"chars": 7582,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_dpb_mgr.c",
"chars": 83426,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_error_handler.h",
"chars": 4718,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_format_conv.c",
"chars": 25996,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_format_conv.h",
"chars": 5807,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_function_selector.h",
"chars": 2350,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_function_selector_generic.c",
"chars": 9472,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_inter_pred.c",
"chars": 59775,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_inter_pred.h",
"chars": 3544,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_mb_utils.c",
"chars": 65006,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_mb_utils.h",
"chars": 17167,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_mem_request.h",
"chars": 2673,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_mvpred.c",
"chars": 53430,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_mvpred.h",
"chars": 5839,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_nal.c",
"chars": 11490,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_nal.h",
"chars": 1846,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_parse_bslice.c",
"chars": 67573,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_parse_cabac.c",
"chars": 63593,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_parse_cabac.h",
"chars": 2231,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_parse_cavlc.c",
"chars": 121903,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_parse_cavlc.h",
"chars": 7846,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_parse_headers.c",
"chars": 56913,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_parse_headers.h",
"chars": 1672,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_parse_islice.c",
"chars": 59779,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_parse_islice.h",
"chars": 4799,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
},
{
"path": "dependencies/ih264d/decoder/ih264d_parse_mb_header.c",
"chars": 46347,
"preview": "/******************************************************************************\n *\n * Copyright (C) 2015 The Android Ope"
}
]
// ... and 1085 more files (download for full content)
About this extraction
This page contains the full source code of the cemu-project/Cemu GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1285 files (18.7 MB), approximately 5.0M tokens, and a symbol index with 9937 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.