Showing preview only (7,753K chars total). Download the full file or copy to clipboard to get everything.
Repository: exjam/wiiu-emu
Branch: master
Commit: e6c528a20a41
Files: 1742
Total size: 7.1 MB
Directory structure:
gitextract_agvsy06u/
├── .clang-format
├── .github/
│ └── workflows/
│ └── ccpp.yml
├── .gitignore
├── .gitmodules
├── BUILDING.md
├── CMakeLists.txt
├── CMakeModules/
│ ├── FindCARES.cmake
│ ├── FindFFMPEG.cmake
│ ├── FindLibUV.cmake
│ ├── FindSDL2.cmake
│ ├── FindWAYLAND.cmake
│ ├── FindXCB.cmake
│ ├── GetGitRevisionDescription.cmake
│ └── GetGitRevisionDescription.cmake.in
├── CMakePresets.json
├── LICENSE.md
├── README.md
├── libraries/
│ ├── CMakeLists.txt
│ └── bin2c.cmake
├── resources/
│ ├── CMakeLists.txt
│ ├── decaf-sdl.rc
│ ├── fonts/
│ │ ├── DejaVuSansMono.LICENSE
│ │ └── NotoSansCJK.LICENSE
│ ├── hidpi.manifest
│ └── resource.h
├── src/
│ ├── CMakeLists.txt
│ ├── common/
│ │ ├── CMakeLists.txt
│ │ ├── align.h
│ │ ├── atomicqueue.h
│ │ ├── bit_cast.h
│ │ ├── bitfield.h
│ │ ├── bitutils.h
│ │ ├── byte_swap.h
│ │ ├── byte_swap_array.h
│ │ ├── cbool.h
│ │ ├── configstorage.h
│ │ ├── count_of.h
│ │ ├── datahash.h
│ │ ├── decaf_assert.h
│ │ ├── enum_end.inl
│ │ ├── enum_start.inl
│ │ ├── enum_string_declare.inl
│ │ ├── enum_string_define.inl
│ │ ├── fastregionmap.h
│ │ ├── fixed.h
│ │ ├── floatutils.h
│ │ ├── frameallocator.h
│ │ ├── log.h
│ │ ├── make_array.h
│ │ ├── murmur3.h
│ │ ├── pch.h
│ │ ├── platform.h
│ │ ├── platform_compiler.h
│ │ ├── platform_debug.h
│ │ ├── platform_dir.h
│ │ ├── platform_exception.h
│ │ ├── platform_fiber.h
│ │ ├── platform_intrin.h
│ │ ├── platform_memory.h
│ │ ├── platform_socket.h
│ │ ├── platform_stacktrace.h
│ │ ├── platform_thread.h
│ │ ├── platform_time.h
│ │ ├── platform_winapi_string.h
│ │ ├── pow.h
│ │ ├── rangecombiner.h
│ │ ├── src/
│ │ │ ├── assert.cpp
│ │ │ ├── log.cpp
│ │ │ ├── murmur3.cpp
│ │ │ ├── platform_posix_debug.cpp
│ │ │ ├── platform_posix_dir.cpp
│ │ │ ├── platform_posix_exception.cpp
│ │ │ ├── platform_posix_fiber.cpp
│ │ │ ├── platform_posix_memory.cpp
│ │ │ ├── platform_posix_socket.cpp
│ │ │ ├── platform_posix_stacktrace.cpp
│ │ │ ├── platform_posix_thread.cpp
│ │ │ ├── platform_posix_time.cpp
│ │ │ ├── platform_win_debug.cpp
│ │ │ ├── platform_win_dir.cpp
│ │ │ ├── platform_win_exception.cpp
│ │ │ ├── platform_win_fiber.cpp
│ │ │ ├── platform_win_memory.cpp
│ │ │ ├── platform_win_socket.cpp
│ │ │ ├── platform_win_stacktrace.cpp
│ │ │ ├── platform_win_thread.cpp
│ │ │ └── platform_win_time.cpp
│ │ ├── structsize.h
│ │ ├── strutils.h
│ │ ├── teenyheap.h
│ │ ├── tga_encoder.cpp
│ │ ├── tga_encoder.h
│ │ ├── type_list.h
│ │ ├── type_traits.h
│ │ ├── vulkan_hpp.h
│ │ ├── xxhash.c
│ │ └── xxhash.h
│ ├── decaf-cli/
│ │ ├── CMakeLists.txt
│ │ ├── config.cpp
│ │ ├── config.h
│ │ ├── decafcli.cpp
│ │ ├── decafcli.h
│ │ └── main.cpp
│ ├── decaf-qt/
│ │ ├── CMakeLists.txt
│ │ ├── resources/
│ │ │ └── resources.qrc
│ │ ├── src/
│ │ │ ├── aboutdialog.h
│ │ │ ├── debugger/
│ │ │ │ ├── addresstextdocumentwidget.cpp
│ │ │ │ ├── addresstextdocumentwidget.h
│ │ │ │ ├── breakpointsmodel.h
│ │ │ │ ├── breakpointswindow.cpp
│ │ │ │ ├── breakpointswindow.h
│ │ │ │ ├── debugdata.cpp
│ │ │ │ ├── debugdata.h
│ │ │ │ ├── debuggershortcuts.h
│ │ │ │ ├── debuggerwindow.cpp
│ │ │ │ ├── debuggerwindow.h
│ │ │ │ ├── disassemblywidget.cpp
│ │ │ │ ├── disassemblywidget.h
│ │ │ │ ├── disassemblywindow.cpp
│ │ │ │ ├── disassemblywindow.h
│ │ │ │ ├── functionsmodel.h
│ │ │ │ ├── functionswindow.cpp
│ │ │ │ ├── functionswindow.h
│ │ │ │ ├── jitprofilingmodel.h
│ │ │ │ ├── jitprofilingwindow.cpp
│ │ │ │ ├── jitprofilingwindow.h
│ │ │ │ ├── memorywidget.cpp
│ │ │ │ ├── memorywidget.h
│ │ │ │ ├── memorywindow.cpp
│ │ │ │ ├── memorywindow.h
│ │ │ │ ├── registerswindow.cpp
│ │ │ │ ├── registerswindow.h
│ │ │ │ ├── segmentsmodel.h
│ │ │ │ ├── segmentswindow.cpp
│ │ │ │ ├── segmentswindow.h
│ │ │ │ ├── stackwidget.cpp
│ │ │ │ ├── stackwidget.h
│ │ │ │ ├── stackwindow.cpp
│ │ │ │ ├── stackwindow.h
│ │ │ │ ├── threadsmodel.h
│ │ │ │ ├── threadswindow.cpp
│ │ │ │ ├── threadswindow.h
│ │ │ │ ├── voicesmodel.h
│ │ │ │ ├── voiceswindow.cpp
│ │ │ │ └── voiceswindow.h
│ │ │ ├── decafinterface.cpp
│ │ │ ├── decafinterface.h
│ │ │ ├── erreuladriver.cpp
│ │ │ ├── erreuladriver.h
│ │ │ ├── inputdriver.cpp
│ │ │ ├── inputdriver.h
│ │ │ ├── inputeventfilter.h
│ │ │ ├── main.cpp
│ │ │ ├── mainwindow.cpp
│ │ │ ├── mainwindow.h
│ │ │ ├── renderwidget.cpp
│ │ │ ├── renderwidget.h
│ │ │ ├── settings/
│ │ │ │ ├── audiosettingswidget.cpp
│ │ │ │ ├── audiosettingswidget.h
│ │ │ │ ├── colourlineedit.h
│ │ │ │ ├── contentsettingswidget.cpp
│ │ │ │ ├── contentsettingswidget.h
│ │ │ │ ├── debugsettingswidget.cpp
│ │ │ │ ├── debugsettingswidget.h
│ │ │ │ ├── displaysettingswidget.cpp
│ │ │ │ ├── displaysettingswidget.h
│ │ │ │ ├── inputsettingswidget.cpp
│ │ │ │ ├── inputsettingswidget.h
│ │ │ │ ├── loggingsettingswidget.cpp
│ │ │ │ ├── loggingsettingswidget.h
│ │ │ │ ├── settingsdialog.cpp
│ │ │ │ ├── settingsdialog.h
│ │ │ │ ├── settingswidget.h
│ │ │ │ ├── systemsettingswidget.cpp
│ │ │ │ └── systemsettingswidget.h
│ │ │ ├── settings.cpp
│ │ │ ├── settings.h
│ │ │ ├── softwarekeyboarddriver.cpp
│ │ │ ├── softwarekeyboarddriver.h
│ │ │ ├── sounddriver.cpp
│ │ │ ├── sounddriver.h
│ │ │ ├── tgahandler.cpp
│ │ │ ├── tgahandler.h
│ │ │ ├── titlelistmodel.h
│ │ │ ├── titlelistscanner.h
│ │ │ ├── titlelistwidget.cpp
│ │ │ └── titlelistwidget.h
│ │ └── ui/
│ │ ├── about.ui
│ │ ├── audiosettings.ui
│ │ ├── contentsettings.ui
│ │ ├── debugger/
│ │ │ ├── breakpointswindow.ui
│ │ │ ├── debuggerwindow.ui
│ │ │ ├── disassemblywindow.ui
│ │ │ ├── functionswindow.ui
│ │ │ ├── jitprofilingwindow.ui
│ │ │ ├── memorywindow.ui
│ │ │ ├── segmentswindow.ui
│ │ │ ├── stackwindow.ui
│ │ │ ├── threadswindow.ui
│ │ │ └── voiceswindow.ui
│ │ ├── debugsettings.ui
│ │ ├── displaysettings.ui
│ │ ├── inputsettings.ui
│ │ ├── loggingsettings.ui
│ │ ├── mainwindow.ui
│ │ ├── settings.ui
│ │ ├── systemsettings.ui
│ │ └── titlelist.ui
│ ├── decaf-sdl/
│ │ ├── CMakeLists.txt
│ │ ├── clilog.h
│ │ ├── config.cpp
│ │ ├── config.h
│ │ ├── decafsdl.cpp
│ │ ├── decafsdl.h
│ │ ├── decafsdl_input.cpp
│ │ ├── decafsdl_posix.cpp
│ │ ├── decafsdl_sound.cpp
│ │ ├── decafsdl_sound.h
│ │ ├── decafsdl_win.cpp
│ │ └── main.cpp
│ ├── decaf_buildinfo.h.in
│ ├── decaf_game.h
│ ├── libconfig/
│ │ ├── CMakeLists.txt
│ │ ├── config_excmd.h
│ │ ├── config_toml.h
│ │ └── src/
│ │ ├── loader_excmd.cpp
│ │ └── loader_toml.cpp
│ ├── libcpu/
│ │ ├── CMakeLists.txt
│ │ ├── address.h
│ │ ├── be2_array.h
│ │ ├── be2_atomic.h
│ │ ├── be2_struct.h
│ │ ├── be2_val.h
│ │ ├── cpu.h
│ │ ├── cpu.natvis
│ │ ├── cpu_breakpoints.h
│ │ ├── cpu_config.h
│ │ ├── cpu_control.h
│ │ ├── cpu_formatters.h
│ │ ├── espresso/
│ │ │ ├── espresso_disassembler.cpp
│ │ │ ├── espresso_disassembler.h
│ │ │ ├── espresso_instruction.h
│ │ │ ├── espresso_instruction_aliases.inl
│ │ │ ├── espresso_instruction_definitions.inl
│ │ │ ├── espresso_instruction_fields.inl
│ │ │ ├── espresso_instructionid.h
│ │ │ ├── espresso_instructionset.cpp
│ │ │ ├── espresso_instructionset.h
│ │ │ ├── espresso_registerformats.h
│ │ │ └── espresso_spr.h
│ │ ├── functionpointer.h
│ │ ├── jit_stats.h
│ │ ├── mem.h
│ │ ├── memtrack.h
│ │ ├── mmu.h
│ │ ├── pointer.h
│ │ ├── src/
│ │ │ ├── cpu.cpp
│ │ │ ├── cpu_alarm.cpp
│ │ │ ├── cpu_alarm.h
│ │ │ ├── cpu_breakpoints.cpp
│ │ │ ├── cpu_configstorage.cpp
│ │ │ ├── cpu_configstorage.h
│ │ │ ├── cpu_host_exception.cpp
│ │ │ ├── cpu_host_exception.h
│ │ │ ├── cpu_internal.h
│ │ │ ├── cpu_interrupts.cpp
│ │ │ ├── cpu_memtrack_posix.cpp
│ │ │ ├── cpu_memtrack_win.cpp
│ │ │ ├── cpu_mmu.cpp
│ │ │ ├── cpu_systemcall.cpp
│ │ │ ├── interpreter/
│ │ │ │ ├── interpreter.cpp
│ │ │ │ ├── interpreter.h
│ │ │ │ ├── interpreter_branch.cpp
│ │ │ │ ├── interpreter_condition.cpp
│ │ │ │ ├── interpreter_float.cpp
│ │ │ │ ├── interpreter_float.h
│ │ │ │ ├── interpreter_insreg.h
│ │ │ │ ├── interpreter_integer.cpp
│ │ │ │ ├── interpreter_internal.h
│ │ │ │ ├── interpreter_loadstore.cpp
│ │ │ │ ├── interpreter_pairedsingle.cpp
│ │ │ │ └── interpreter_system.cpp
│ │ │ ├── jit/
│ │ │ │ ├── binrec/
│ │ │ │ │ ├── jit_binrec.cpp
│ │ │ │ │ ├── jit_binrec.h
│ │ │ │ │ ├── jit_binrec_opt.cpp
│ │ │ │ │ └── jit_binrec_verify.cpp
│ │ │ │ ├── jit.cpp
│ │ │ │ ├── jit.h
│ │ │ │ ├── jit_backend.h
│ │ │ │ ├── jit_codecache.cpp
│ │ │ │ ├── jit_codecache.h
│ │ │ │ └── jit_stats.cpp
│ │ │ ├── memorymap.cpp
│ │ │ ├── memorymap.h
│ │ │ ├── statedbg.h
│ │ │ ├── trace.cpp
│ │ │ └── utils.h
│ │ ├── state.h
│ │ └── trace.h
│ ├── libdecaf/
│ │ ├── CMakeLists.txt
│ │ ├── decaf.h
│ │ ├── decaf_config.h
│ │ ├── decaf_content.h
│ │ ├── decaf_debug_api.h
│ │ ├── decaf_erreula.h
│ │ ├── decaf_eventlistener.h
│ │ ├── decaf_graphics.h
│ │ ├── decaf_input.h
│ │ ├── decaf_log.h
│ │ ├── decaf_nullinputdriver.h
│ │ ├── decaf_pm4replay.h
│ │ ├── decaf_softwarekeyboard.h
│ │ ├── decaf_sound.h
│ │ └── src/
│ │ ├── cafe/
│ │ │ ├── cafe_ppc_interface.h
│ │ │ ├── cafe_ppc_interface_invoke_guest.h
│ │ │ ├── cafe_ppc_interface_invoke_host.h
│ │ │ ├── cafe_ppc_interface_params.h
│ │ │ ├── cafe_ppc_interface_trace_host.cpp
│ │ │ ├── cafe_ppc_interface_trace_host.h
│ │ │ ├── cafe_ppc_interface_varargs.h
│ │ │ ├── cafe_stackobject.h
│ │ │ ├── cafe_tinyheap.cpp
│ │ │ ├── cafe_tinyheap.h
│ │ │ ├── kernel/
│ │ │ │ ├── cafe_kernel.cpp
│ │ │ │ ├── cafe_kernel.h
│ │ │ │ ├── cafe_kernel_context.cpp
│ │ │ │ ├── cafe_kernel_context.h
│ │ │ │ ├── cafe_kernel_exception.cpp
│ │ │ │ ├── cafe_kernel_exception.h
│ │ │ │ ├── cafe_kernel_heap.cpp
│ │ │ │ ├── cafe_kernel_heap.h
│ │ │ │ ├── cafe_kernel_info.cpp
│ │ │ │ ├── cafe_kernel_info.h
│ │ │ │ ├── cafe_kernel_interrupts.cpp
│ │ │ │ ├── cafe_kernel_interrupts.h
│ │ │ │ ├── cafe_kernel_ipc.cpp
│ │ │ │ ├── cafe_kernel_ipc.h
│ │ │ │ ├── cafe_kernel_ipckdriver.cpp
│ │ │ │ ├── cafe_kernel_ipckdriver.h
│ │ │ │ ├── cafe_kernel_ipckdriverfifo.h
│ │ │ │ ├── cafe_kernel_loader.cpp
│ │ │ │ ├── cafe_kernel_loader.h
│ │ │ │ ├── cafe_kernel_lock.cpp
│ │ │ │ ├── cafe_kernel_lock.h
│ │ │ │ ├── cafe_kernel_mcp.cpp
│ │ │ │ ├── cafe_kernel_mcp.h
│ │ │ │ ├── cafe_kernel_mmu.cpp
│ │ │ │ ├── cafe_kernel_mmu.h
│ │ │ │ ├── cafe_kernel_process.cpp
│ │ │ │ ├── cafe_kernel_process.h
│ │ │ │ ├── cafe_kernel_processid.cpp
│ │ │ │ ├── cafe_kernel_processid.h
│ │ │ │ ├── cafe_kernel_shareddata.cpp
│ │ │ │ ├── cafe_kernel_shareddata.h
│ │ │ │ ├── cafe_kernel_userdrivers.cpp
│ │ │ │ └── cafe_kernel_userdrivers.h
│ │ │ ├── libraries/
│ │ │ │ ├── avm/
│ │ │ │ │ ├── avm.cpp
│ │ │ │ │ └── avm.h
│ │ │ │ ├── cafe_hle.cpp
│ │ │ │ ├── cafe_hle.h
│ │ │ │ ├── cafe_hle_library.cpp
│ │ │ │ ├── cafe_hle_library.h
│ │ │ │ ├── cafe_hle_library_data.h
│ │ │ │ ├── cafe_hle_library_function.h
│ │ │ │ ├── cafe_hle_library_register.h
│ │ │ │ ├── cafe_hle_library_symbol.h
│ │ │ │ ├── cafe_hle_library_typeinfo.h
│ │ │ │ ├── cafe_hle_stub.cpp
│ │ │ │ ├── cafe_hle_stub.h
│ │ │ │ ├── camera/
│ │ │ │ │ ├── camera.cpp
│ │ │ │ │ ├── camera.h
│ │ │ │ │ ├── camera_cam.cpp
│ │ │ │ │ ├── camera_cam.h
│ │ │ │ │ └── camera_enum.h
│ │ │ │ ├── coreinit/
│ │ │ │ │ ├── coreinit.cpp
│ │ │ │ │ ├── coreinit.h
│ │ │ │ │ ├── coreinit_alarm.cpp
│ │ │ │ │ ├── coreinit_alarm.h
│ │ │ │ │ ├── coreinit_appio.cpp
│ │ │ │ │ ├── coreinit_appio.h
│ │ │ │ │ ├── coreinit_atomic.cpp
│ │ │ │ │ ├── coreinit_atomic.h
│ │ │ │ │ ├── coreinit_atomic64.cpp
│ │ │ │ │ ├── coreinit_atomic64.h
│ │ │ │ │ ├── coreinit_bsp.cpp
│ │ │ │ │ ├── coreinit_bsp.h
│ │ │ │ │ ├── coreinit_cache.cpp
│ │ │ │ │ ├── coreinit_cache.h
│ │ │ │ │ ├── coreinit_clipboard.cpp
│ │ │ │ │ ├── coreinit_clipboard.h
│ │ │ │ │ ├── coreinit_codegen.cpp
│ │ │ │ │ ├── coreinit_codegen.h
│ │ │ │ │ ├── coreinit_context.cpp
│ │ │ │ │ ├── coreinit_context.h
│ │ │ │ │ ├── coreinit_core.cpp
│ │ │ │ │ ├── coreinit_core.h
│ │ │ │ │ ├── coreinit_coroutine.cpp
│ │ │ │ │ ├── coreinit_coroutine.h
│ │ │ │ │ ├── coreinit_cosreport.cpp
│ │ │ │ │ ├── coreinit_cosreport.h
│ │ │ │ │ ├── coreinit_device.cpp
│ │ │ │ │ ├── coreinit_device.h
│ │ │ │ │ ├── coreinit_driver.cpp
│ │ │ │ │ ├── coreinit_driver.h
│ │ │ │ │ ├── coreinit_dynload.cpp
│ │ │ │ │ ├── coreinit_dynload.h
│ │ │ │ │ ├── coreinit_enum.h
│ │ │ │ │ ├── coreinit_enum_string.cpp
│ │ │ │ │ ├── coreinit_enum_string.h
│ │ │ │ │ ├── coreinit_event.cpp
│ │ │ │ │ ├── coreinit_event.h
│ │ │ │ │ ├── coreinit_exception.cpp
│ │ │ │ │ ├── coreinit_exception.h
│ │ │ │ │ ├── coreinit_fastmutex.cpp
│ │ │ │ │ ├── coreinit_fastmutex.h
│ │ │ │ │ ├── coreinit_fiber.cpp
│ │ │ │ │ ├── coreinit_fiber.h
│ │ │ │ │ ├── coreinit_fs.cpp
│ │ │ │ │ ├── coreinit_fs.h
│ │ │ │ │ ├── coreinit_fs_client.cpp
│ │ │ │ │ ├── coreinit_fs_client.h
│ │ │ │ │ ├── coreinit_fs_cmd.cpp
│ │ │ │ │ ├── coreinit_fs_cmd.h
│ │ │ │ │ ├── coreinit_fs_cmdblock.cpp
│ │ │ │ │ ├── coreinit_fs_cmdblock.h
│ │ │ │ │ ├── coreinit_fs_cmdqueue.cpp
│ │ │ │ │ ├── coreinit_fs_cmdqueue.h
│ │ │ │ │ ├── coreinit_fs_driver.cpp
│ │ │ │ │ ├── coreinit_fs_driver.h
│ │ │ │ │ ├── coreinit_fs_statemachine.cpp
│ │ │ │ │ ├── coreinit_fs_statemachine.h
│ │ │ │ │ ├── coreinit_fsa.cpp
│ │ │ │ │ ├── coreinit_fsa.h
│ │ │ │ │ ├── coreinit_fsa_cmd.cpp
│ │ │ │ │ ├── coreinit_fsa_cmd.h
│ │ │ │ │ ├── coreinit_fsa_shim.cpp
│ │ │ │ │ ├── coreinit_fsa_shim.h
│ │ │ │ │ ├── coreinit_ghs.cpp
│ │ │ │ │ ├── coreinit_ghs.h
│ │ │ │ │ ├── coreinit_handle.cpp
│ │ │ │ │ ├── coreinit_handle.h
│ │ │ │ │ ├── coreinit_im.cpp
│ │ │ │ │ ├── coreinit_im.h
│ │ │ │ │ ├── coreinit_internal_idlock.cpp
│ │ │ │ │ ├── coreinit_internal_idlock.h
│ │ │ │ │ ├── coreinit_internal_queue.h
│ │ │ │ │ ├── coreinit_interrupts.cpp
│ │ │ │ │ ├── coreinit_interrupts.h
│ │ │ │ │ ├── coreinit_ios.cpp
│ │ │ │ │ ├── coreinit_ios.h
│ │ │ │ │ ├── coreinit_ipcbufpool.cpp
│ │ │ │ │ ├── coreinit_ipcbufpool.h
│ │ │ │ │ ├── coreinit_ipcdriver.cpp
│ │ │ │ │ ├── coreinit_ipcdriver.h
│ │ │ │ │ ├── coreinit_lockedcache.cpp
│ │ │ │ │ ├── coreinit_lockedcache.h
│ │ │ │ │ ├── coreinit_log.cpp
│ │ │ │ │ ├── coreinit_log.h
│ │ │ │ │ ├── coreinit_mcp.cpp
│ │ │ │ │ ├── coreinit_mcp.h
│ │ │ │ │ ├── coreinit_memallocator.cpp
│ │ │ │ │ ├── coreinit_memallocator.h
│ │ │ │ │ ├── coreinit_memblockheap.cpp
│ │ │ │ │ ├── coreinit_memblockheap.h
│ │ │ │ │ ├── coreinit_memdefaultheap.cpp
│ │ │ │ │ ├── coreinit_memdefaultheap.h
│ │ │ │ │ ├── coreinit_memexpheap.cpp
│ │ │ │ │ ├── coreinit_memexpheap.h
│ │ │ │ │ ├── coreinit_memframeheap.cpp
│ │ │ │ │ ├── coreinit_memframeheap.h
│ │ │ │ │ ├── coreinit_memheap.cpp
│ │ │ │ │ ├── coreinit_memheap.h
│ │ │ │ │ ├── coreinit_memlist.cpp
│ │ │ │ │ ├── coreinit_memlist.h
│ │ │ │ │ ├── coreinit_memory.cpp
│ │ │ │ │ ├── coreinit_memory.h
│ │ │ │ │ ├── coreinit_memunitheap.cpp
│ │ │ │ │ ├── coreinit_memunitheap.h
│ │ │ │ │ ├── coreinit_messagequeue.cpp
│ │ │ │ │ ├── coreinit_messagequeue.h
│ │ │ │ │ ├── coreinit_mutex.cpp
│ │ │ │ │ ├── coreinit_mutex.h
│ │ │ │ │ ├── coreinit_osreport.cpp
│ │ │ │ │ ├── coreinit_osreport.h
│ │ │ │ │ ├── coreinit_overlayarena.cpp
│ │ │ │ │ ├── coreinit_overlayarena.h
│ │ │ │ │ ├── coreinit_rendezvous.cpp
│ │ │ │ │ ├── coreinit_rendezvous.h
│ │ │ │ │ ├── coreinit_scheduler.cpp
│ │ │ │ │ ├── coreinit_scheduler.h
│ │ │ │ │ ├── coreinit_screen.cpp
│ │ │ │ │ ├── coreinit_screen.h
│ │ │ │ │ ├── coreinit_screenfont.h
│ │ │ │ │ ├── coreinit_semaphore.cpp
│ │ │ │ │ ├── coreinit_semaphore.h
│ │ │ │ │ ├── coreinit_snprintf.cpp
│ │ │ │ │ ├── coreinit_snprintf.h
│ │ │ │ │ ├── coreinit_spinlock.cpp
│ │ │ │ │ ├── coreinit_spinlock.h
│ │ │ │ │ ├── coreinit_systemheap.cpp
│ │ │ │ │ ├── coreinit_systemheap.h
│ │ │ │ │ ├── coreinit_systeminfo.cpp
│ │ │ │ │ ├── coreinit_systeminfo.h
│ │ │ │ │ ├── coreinit_systemmessagequeue.cpp
│ │ │ │ │ ├── coreinit_systemmessagequeue.h
│ │ │ │ │ ├── coreinit_taskqueue.cpp
│ │ │ │ │ ├── coreinit_taskqueue.h
│ │ │ │ │ ├── coreinit_thread.cpp
│ │ │ │ │ ├── coreinit_thread.h
│ │ │ │ │ ├── coreinit_time.cpp
│ │ │ │ │ ├── coreinit_time.h
│ │ │ │ │ ├── coreinit_userconfig.cpp
│ │ │ │ │ └── coreinit_userconfig.h
│ │ │ │ ├── dc/
│ │ │ │ │ ├── dc.cpp
│ │ │ │ │ └── dc.h
│ │ │ │ ├── dmae/
│ │ │ │ │ ├── dmae.cpp
│ │ │ │ │ ├── dmae.h
│ │ │ │ │ ├── dmae_enum.h
│ │ │ │ │ ├── dmae_ring.cpp
│ │ │ │ │ └── dmae_ring.h
│ │ │ │ ├── drmapp/
│ │ │ │ │ ├── drmapp.cpp
│ │ │ │ │ └── drmapp.h
│ │ │ │ ├── erreula/
│ │ │ │ │ ├── erreula.cpp
│ │ │ │ │ ├── erreula.h
│ │ │ │ │ ├── erreula_enum.h
│ │ │ │ │ ├── erreula_errorviewer.cpp
│ │ │ │ │ └── erreula_errorviewer.h
│ │ │ │ ├── ghs/
│ │ │ │ │ ├── cafe_ghs_enum.h
│ │ │ │ │ ├── cafe_ghs_malloc.cpp
│ │ │ │ │ ├── cafe_ghs_malloc.h
│ │ │ │ │ ├── cafe_ghs_typeinfo.cpp
│ │ │ │ │ └── cafe_ghs_typeinfo.h
│ │ │ │ ├── gx2/
│ │ │ │ │ ├── gx2.cpp
│ │ │ │ │ ├── gx2.h
│ │ │ │ │ ├── gx2_addrlib.cpp
│ │ │ │ │ ├── gx2_addrlib.h
│ │ │ │ │ ├── gx2_aperture.cpp
│ │ │ │ │ ├── gx2_aperture.h
│ │ │ │ │ ├── gx2_cbpool.cpp
│ │ │ │ │ ├── gx2_cbpool.h
│ │ │ │ │ ├── gx2_clear.cpp
│ │ │ │ │ ├── gx2_clear.h
│ │ │ │ │ ├── gx2_contextstate.cpp
│ │ │ │ │ ├── gx2_contextstate.h
│ │ │ │ │ ├── gx2_counter.cpp
│ │ │ │ │ ├── gx2_counter.h
│ │ │ │ │ ├── gx2_debug.cpp
│ │ │ │ │ ├── gx2_debug.h
│ │ │ │ │ ├── gx2_debug_dds.cpp
│ │ │ │ │ ├── gx2_debug_dds.h
│ │ │ │ │ ├── gx2_debugcapture.cpp
│ │ │ │ │ ├── gx2_debugcapture.h
│ │ │ │ │ ├── gx2_display.cpp
│ │ │ │ │ ├── gx2_display.h
│ │ │ │ │ ├── gx2_displaylist.cpp
│ │ │ │ │ ├── gx2_displaylist.h
│ │ │ │ │ ├── gx2_draw.cpp
│ │ │ │ │ ├── gx2_draw.h
│ │ │ │ │ ├── gx2_enum.h
│ │ │ │ │ ├── gx2_enum_string.cpp
│ │ │ │ │ ├── gx2_enum_string.h
│ │ │ │ │ ├── gx2_event.cpp
│ │ │ │ │ ├── gx2_event.h
│ │ │ │ │ ├── gx2_fence.cpp
│ │ │ │ │ ├── gx2_fence.h
│ │ │ │ │ ├── gx2_fetchshader.cpp
│ │ │ │ │ ├── gx2_fetchshader.h
│ │ │ │ │ ├── gx2_format.cpp
│ │ │ │ │ ├── gx2_format.h
│ │ │ │ │ ├── gx2_internal_flush.cpp
│ │ │ │ │ ├── gx2_internal_flush.h
│ │ │ │ │ ├── gx2_internal_gfd.cpp
│ │ │ │ │ ├── gx2_internal_gfd.h
│ │ │ │ │ ├── gx2_internal_pm4cap.cpp
│ │ │ │ │ ├── gx2_internal_pm4cap.h
│ │ │ │ │ ├── gx2_internal_writegatherptr.h
│ │ │ │ │ ├── gx2_memory.cpp
│ │ │ │ │ ├── gx2_memory.h
│ │ │ │ │ ├── gx2_query.cpp
│ │ │ │ │ ├── gx2_query.h
│ │ │ │ │ ├── gx2_registers.cpp
│ │ │ │ │ ├── gx2_registers.h
│ │ │ │ │ ├── gx2_sampler.cpp
│ │ │ │ │ ├── gx2_sampler.h
│ │ │ │ │ ├── gx2_shaders.cpp
│ │ │ │ │ ├── gx2_shaders.h
│ │ │ │ │ ├── gx2_state.cpp
│ │ │ │ │ ├── gx2_state.h
│ │ │ │ │ ├── gx2_surface.cpp
│ │ │ │ │ ├── gx2_surface.h
│ │ │ │ │ ├── gx2_temp.cpp
│ │ │ │ │ ├── gx2_temp.h
│ │ │ │ │ ├── gx2_tessellation.cpp
│ │ │ │ │ ├── gx2_tessellation.h
│ │ │ │ │ ├── gx2_texture.cpp
│ │ │ │ │ ├── gx2_texture.h
│ │ │ │ │ ├── gx2r_buffer.cpp
│ │ │ │ │ ├── gx2r_buffer.h
│ │ │ │ │ ├── gx2r_displaylist.cpp
│ │ │ │ │ ├── gx2r_displaylist.h
│ │ │ │ │ ├── gx2r_draw.cpp
│ │ │ │ │ ├── gx2r_draw.h
│ │ │ │ │ ├── gx2r_memory.cpp
│ │ │ │ │ ├── gx2r_memory.h
│ │ │ │ │ ├── gx2r_resource.cpp
│ │ │ │ │ ├── gx2r_resource.h
│ │ │ │ │ ├── gx2r_shaders.cpp
│ │ │ │ │ ├── gx2r_shaders.h
│ │ │ │ │ ├── gx2r_surface.cpp
│ │ │ │ │ └── gx2r_surface.h
│ │ │ │ ├── h264/
│ │ │ │ │ ├── h264.cpp
│ │ │ │ │ ├── h264.h
│ │ │ │ │ ├── h264_bitstream.h
│ │ │ │ │ ├── h264_decode.cpp
│ │ │ │ │ ├── h264_decode.h
│ │ │ │ │ ├── h264_decode_ffmpeg.cpp
│ │ │ │ │ ├── h264_decode_ffmpeg.h
│ │ │ │ │ ├── h264_decode_null.cpp
│ │ │ │ │ ├── h264_decode_null.h
│ │ │ │ │ ├── h264_enum.h
│ │ │ │ │ ├── h264_stream.cpp
│ │ │ │ │ └── h264_stream.h
│ │ │ │ ├── lzma920/
│ │ │ │ │ ├── lzma920.cpp
│ │ │ │ │ └── lzma920.h
│ │ │ │ ├── mic/
│ │ │ │ │ ├── mic.cpp
│ │ │ │ │ ├── mic.h
│ │ │ │ │ ├── mic_mic.cpp
│ │ │ │ │ └── mic_mic.h
│ │ │ │ ├── nfc/
│ │ │ │ │ ├── nfc.cpp
│ │ │ │ │ └── nfc.h
│ │ │ │ ├── nio_prof/
│ │ │ │ │ ├── nio_prof.cpp
│ │ │ │ │ └── nio_prof.h
│ │ │ │ ├── nlibcurl/
│ │ │ │ │ ├── nlibcurl.cpp
│ │ │ │ │ ├── nlibcurl.h
│ │ │ │ │ ├── nlibcurl_curl.cpp
│ │ │ │ │ ├── nlibcurl_curl.h
│ │ │ │ │ ├── nlibcurl_easy.cpp
│ │ │ │ │ └── nlibcurl_easy.h
│ │ │ │ ├── nlibnss/
│ │ │ │ │ ├── nlibnss.cpp
│ │ │ │ │ └── nlibnss.h
│ │ │ │ ├── nlibnss2/
│ │ │ │ │ ├── nlibnss2.cpp
│ │ │ │ │ └── nlibnss2.h
│ │ │ │ ├── nn_ac/
│ │ │ │ │ ├── nn_ac.cpp
│ │ │ │ │ ├── nn_ac.h
│ │ │ │ │ ├── nn_ac_capi.cpp
│ │ │ │ │ ├── nn_ac_capi.h
│ │ │ │ │ ├── nn_ac_client.cpp
│ │ │ │ │ ├── nn_ac_client.h
│ │ │ │ │ ├── nn_ac_enum.h
│ │ │ │ │ ├── nn_ac_service.cpp
│ │ │ │ │ └── nn_ac_service.h
│ │ │ │ ├── nn_acp/
│ │ │ │ │ ├── nn_acp.cpp
│ │ │ │ │ ├── nn_acp.h
│ │ │ │ │ ├── nn_acp_acpresult.cpp
│ │ │ │ │ ├── nn_acp_acpresult.h
│ │ │ │ │ ├── nn_acp_client.cpp
│ │ │ │ │ ├── nn_acp_client.h
│ │ │ │ │ ├── nn_acp_device.cpp
│ │ │ │ │ ├── nn_acp_device.h
│ │ │ │ │ ├── nn_acp_internal_driver.cpp
│ │ │ │ │ ├── nn_acp_internal_driver.h
│ │ │ │ │ ├── nn_acp_miscservice.cpp
│ │ │ │ │ ├── nn_acp_miscservice.h
│ │ │ │ │ ├── nn_acp_saveservice.cpp
│ │ │ │ │ └── nn_acp_saveservice.h
│ │ │ │ ├── nn_act/
│ │ │ │ │ ├── nn_act.cpp
│ │ │ │ │ ├── nn_act.h
│ │ │ │ │ ├── nn_act_accountloaderservice.cpp
│ │ │ │ │ ├── nn_act_accountloaderservice.h
│ │ │ │ │ ├── nn_act_accountmanagerservice.cpp
│ │ │ │ │ ├── nn_act_accountmanagerservice.h
│ │ │ │ │ ├── nn_act_client.cpp
│ │ │ │ │ ├── nn_act_client.h
│ │ │ │ │ ├── nn_act_clientstandardservice.cpp
│ │ │ │ │ ├── nn_act_clientstandardservice.h
│ │ │ │ │ ├── nn_act_serverstandardservice.cpp
│ │ │ │ │ └── nn_act_serverstandardservice.h
│ │ │ │ ├── nn_aoc/
│ │ │ │ │ ├── nn_aoc.cpp
│ │ │ │ │ ├── nn_aoc.h
│ │ │ │ │ ├── nn_aoc_enum.h
│ │ │ │ │ ├── nn_aoc_lib.cpp
│ │ │ │ │ └── nn_aoc_lib.h
│ │ │ │ ├── nn_boss/
│ │ │ │ │ ├── nn_boss.cpp
│ │ │ │ │ ├── nn_boss.h
│ │ │ │ │ ├── nn_boss_account.cpp
│ │ │ │ │ ├── nn_boss_account.h
│ │ │ │ │ ├── nn_boss_almightystorage.cpp
│ │ │ │ │ ├── nn_boss_almightystorage.h
│ │ │ │ │ ├── nn_boss_almightytask.cpp
│ │ │ │ │ ├── nn_boss_almightytask.h
│ │ │ │ │ ├── nn_boss_client.cpp
│ │ │ │ │ ├── nn_boss_client.h
│ │ │ │ │ ├── nn_boss_dataname.cpp
│ │ │ │ │ ├── nn_boss_dataname.h
│ │ │ │ │ ├── nn_boss_enum.h
│ │ │ │ │ ├── nn_boss_nbdltasksetting.cpp
│ │ │ │ │ ├── nn_boss_nbdltasksetting.h
│ │ │ │ │ ├── nn_boss_nettasksetting.cpp
│ │ │ │ │ ├── nn_boss_nettasksetting.h
│ │ │ │ │ ├── nn_boss_playloguploadtasksetting.cpp
│ │ │ │ │ ├── nn_boss_playloguploadtasksetting.h
│ │ │ │ │ ├── nn_boss_playreportsetting.cpp
│ │ │ │ │ ├── nn_boss_playreportsetting.h
│ │ │ │ │ ├── nn_boss_privilegedtask.cpp
│ │ │ │ │ ├── nn_boss_privilegedtask.h
│ │ │ │ │ ├── nn_boss_rawultasksetting.cpp
│ │ │ │ │ ├── nn_boss_rawultasksetting.h
│ │ │ │ │ ├── nn_boss_storage.cpp
│ │ │ │ │ ├── nn_boss_storage.h
│ │ │ │ │ ├── nn_boss_task.cpp
│ │ │ │ │ ├── nn_boss_task.h
│ │ │ │ │ ├── nn_boss_taskid.cpp
│ │ │ │ │ ├── nn_boss_taskid.h
│ │ │ │ │ ├── nn_boss_tasksetting.cpp
│ │ │ │ │ ├── nn_boss_tasksetting.h
│ │ │ │ │ ├── nn_boss_title.cpp
│ │ │ │ │ ├── nn_boss_title.h
│ │ │ │ │ ├── nn_boss_titleid.cpp
│ │ │ │ │ └── nn_boss_titleid.h
│ │ │ │ ├── nn_ccr/
│ │ │ │ │ ├── nn_ccr.cpp
│ │ │ │ │ └── nn_ccr.h
│ │ │ │ ├── nn_cmpt/
│ │ │ │ │ ├── nn_cmpt.cpp
│ │ │ │ │ ├── nn_cmpt.h
│ │ │ │ │ ├── nn_cmpt_enum.h
│ │ │ │ │ ├── nn_cmpt_lib.cpp
│ │ │ │ │ └── nn_cmpt_lib.h
│ │ │ │ ├── nn_dlp/
│ │ │ │ │ ├── nn_dlp.cpp
│ │ │ │ │ └── nn_dlp.h
│ │ │ │ ├── nn_ec/
│ │ │ │ │ ├── nn_ec.cpp
│ │ │ │ │ ├── nn_ec.h
│ │ │ │ │ ├── nn_ec_catalog.cpp
│ │ │ │ │ ├── nn_ec_catalog.h
│ │ │ │ │ ├── nn_ec_itemlist.cpp
│ │ │ │ │ ├── nn_ec_itemlist.h
│ │ │ │ │ ├── nn_ec_lib.cpp
│ │ │ │ │ ├── nn_ec_lib.h
│ │ │ │ │ ├── nn_ec_memorymanager.cpp
│ │ │ │ │ ├── nn_ec_memorymanager.h
│ │ │ │ │ ├── nn_ec_money.cpp
│ │ │ │ │ ├── nn_ec_money.h
│ │ │ │ │ ├── nn_ec_noncopyable.h
│ │ │ │ │ ├── nn_ec_query.cpp
│ │ │ │ │ ├── nn_ec_query.h
│ │ │ │ │ ├── nn_ec_result.h
│ │ │ │ │ ├── nn_ec_rootobject.cpp
│ │ │ │ │ ├── nn_ec_rootobject.h
│ │ │ │ │ ├── nn_ec_shoppingcatalog.cpp
│ │ │ │ │ └── nn_ec_shoppingcatalog.h
│ │ │ │ ├── nn_fp/
│ │ │ │ │ ├── nn_fp.cpp
│ │ │ │ │ ├── nn_fp.h
│ │ │ │ │ ├── nn_fp_lib.cpp
│ │ │ │ │ └── nn_fp_lib.h
│ │ │ │ ├── nn_hai/
│ │ │ │ │ ├── nn_hai.cpp
│ │ │ │ │ └── nn_hai.h
│ │ │ │ ├── nn_hpad/
│ │ │ │ │ ├── nn_hpad.cpp
│ │ │ │ │ └── nn_hpad.h
│ │ │ │ ├── nn_idbe/
│ │ │ │ │ ├── nn_idbe.cpp
│ │ │ │ │ └── nn_idbe.h
│ │ │ │ ├── nn_ndm/
│ │ │ │ │ ├── nn_ndm.cpp
│ │ │ │ │ ├── nn_ndm.h
│ │ │ │ │ ├── nn_ndm_client.cpp
│ │ │ │ │ └── nn_ndm_client.h
│ │ │ │ ├── nn_nets2/
│ │ │ │ │ ├── nn_nets2.cpp
│ │ │ │ │ └── nn_nets2.h
│ │ │ │ ├── nn_nfp/
│ │ │ │ │ ├── nn_nfp.cpp
│ │ │ │ │ ├── nn_nfp.h
│ │ │ │ │ ├── nn_nfp_enum.h
│ │ │ │ │ ├── nn_nfp_lib.cpp
│ │ │ │ │ └── nn_nfp_lib.h
│ │ │ │ ├── nn_nim/
│ │ │ │ │ ├── nn_nim.cpp
│ │ │ │ │ ├── nn_nim.h
│ │ │ │ │ ├── nn_nim_client.cpp
│ │ │ │ │ └── nn_nim_client.h
│ │ │ │ ├── nn_olv/
│ │ │ │ │ ├── nn_olv.cpp
│ │ │ │ │ ├── nn_olv.h
│ │ │ │ │ ├── nn_olv_downloadedcommunitydata.cpp
│ │ │ │ │ ├── nn_olv_downloadedcommunitydata.h
│ │ │ │ │ ├── nn_olv_downloadeddatabase.cpp
│ │ │ │ │ ├── nn_olv_downloadeddatabase.h
│ │ │ │ │ ├── nn_olv_downloadedpostdata.cpp
│ │ │ │ │ ├── nn_olv_downloadedpostdata.h
│ │ │ │ │ ├── nn_olv_downloadedtopicdata.cpp
│ │ │ │ │ ├── nn_olv_downloadedtopicdata.h
│ │ │ │ │ ├── nn_olv_init.cpp
│ │ │ │ │ ├── nn_olv_init.h
│ │ │ │ │ ├── nn_olv_initializeparam.cpp
│ │ │ │ │ ├── nn_olv_initializeparam.h
│ │ │ │ │ ├── nn_olv_uploadeddatabase.cpp
│ │ │ │ │ ├── nn_olv_uploadeddatabase.h
│ │ │ │ │ ├── nn_olv_uploadedpostdata.cpp
│ │ │ │ │ └── nn_olv_uploadedpostdata.h
│ │ │ │ ├── nn_pdm/
│ │ │ │ │ ├── nn_pdm.cpp
│ │ │ │ │ ├── nn_pdm.h
│ │ │ │ │ ├── nn_pdm_client.cpp
│ │ │ │ │ ├── nn_pdm_client.h
│ │ │ │ │ ├── nn_pdm_cosservice.cpp
│ │ │ │ │ └── nn_pdm_cosservice.h
│ │ │ │ ├── nn_save/
│ │ │ │ │ ├── nn_save.cpp
│ │ │ │ │ ├── nn_save.h
│ │ │ │ │ ├── nn_save_cmd.cpp
│ │ │ │ │ ├── nn_save_cmd.h
│ │ │ │ │ ├── nn_save_path.cpp
│ │ │ │ │ └── nn_save_path.h
│ │ │ │ ├── nn_sl/
│ │ │ │ │ ├── nn_sl.cpp
│ │ │ │ │ ├── nn_sl.h
│ │ │ │ │ ├── nn_sl_drctransferrer.cpp
│ │ │ │ │ ├── nn_sl_drctransferrer.h
│ │ │ │ │ ├── nn_sl_lib.cpp
│ │ │ │ │ └── nn_sl_lib.h
│ │ │ │ ├── nn_spm/
│ │ │ │ │ ├── nn_spm.cpp
│ │ │ │ │ ├── nn_spm.h
│ │ │ │ │ ├── nn_spm_client.cpp
│ │ │ │ │ ├── nn_spm_client.h
│ │ │ │ │ ├── nn_spm_extendedstorageservice.cpp
│ │ │ │ │ └── nn_spm_extendedstorageservice.h
│ │ │ │ ├── nn_temp/
│ │ │ │ │ ├── nn_temp.cpp
│ │ │ │ │ ├── nn_temp.h
│ │ │ │ │ ├── nn_temp_enum.h
│ │ │ │ │ ├── nn_temp_tempdir.cpp
│ │ │ │ │ └── nn_temp_tempdir.h
│ │ │ │ ├── nn_uds/
│ │ │ │ │ ├── nn_uds.cpp
│ │ │ │ │ ├── nn_uds.h
│ │ │ │ │ └── nn_uds_api.cpp
│ │ │ │ ├── nn_vctl/
│ │ │ │ │ ├── nn_vctl.cpp
│ │ │ │ │ ├── nn_vctl.h
│ │ │ │ │ ├── nn_vctl_client.cpp
│ │ │ │ │ └── nn_vctl_client.h
│ │ │ │ ├── nsysccr/
│ │ │ │ │ ├── nsysccr.cpp
│ │ │ │ │ └── nsysccr.h
│ │ │ │ ├── nsyshid/
│ │ │ │ │ ├── nsyshid.cpp
│ │ │ │ │ └── nsyshid.h
│ │ │ │ ├── nsyskbd/
│ │ │ │ │ ├── nsyskbd.cpp
│ │ │ │ │ ├── nsyskbd.h
│ │ │ │ │ ├── nsyskbd_enum.h
│ │ │ │ │ ├── nsyskbd_kpr.cpp
│ │ │ │ │ ├── nsyskbd_kpr.h
│ │ │ │ │ ├── nsyskbd_skbd.cpp
│ │ │ │ │ └── nsyskbd_skbd.h
│ │ │ │ ├── nsysnet/
│ │ │ │ │ ├── nsysnet.cpp
│ │ │ │ │ ├── nsysnet.h
│ │ │ │ │ ├── nsysnet_endian.cpp
│ │ │ │ │ ├── nsysnet_enum.h
│ │ │ │ │ ├── nsysnet_nssl.cpp
│ │ │ │ │ ├── nsysnet_nssl.h
│ │ │ │ │ ├── nsysnet_socket_lib.cpp
│ │ │ │ │ └── nsysnet_socket_lib.h
│ │ │ │ ├── nsysuhs/
│ │ │ │ │ ├── nsysuhs.cpp
│ │ │ │ │ └── nsysuhs.h
│ │ │ │ ├── nsysuvd/
│ │ │ │ │ ├── nsysuvd.cpp
│ │ │ │ │ └── nsysuvd.h
│ │ │ │ ├── ntag/
│ │ │ │ │ ├── ntag.cpp
│ │ │ │ │ └── ntag.h
│ │ │ │ ├── padscore/
│ │ │ │ │ ├── padscore.cpp
│ │ │ │ │ ├── padscore.h
│ │ │ │ │ ├── padscore_enum.h
│ │ │ │ │ ├── padscore_kpad.cpp
│ │ │ │ │ ├── padscore_kpad.h
│ │ │ │ │ ├── padscore_wpad.cpp
│ │ │ │ │ └── padscore_wpad.h
│ │ │ │ ├── proc_ui/
│ │ │ │ │ ├── proc_ui.cpp
│ │ │ │ │ ├── proc_ui.h
│ │ │ │ │ ├── proc_ui_enum.h
│ │ │ │ │ ├── proc_ui_messages.cpp
│ │ │ │ │ └── proc_ui_messages.h
│ │ │ │ ├── snd_core/
│ │ │ │ │ └── snd_core.h
│ │ │ │ ├── snd_user/
│ │ │ │ │ └── snd_user.h
│ │ │ │ ├── sndcore2/
│ │ │ │ │ ├── sndcore2.cpp
│ │ │ │ │ ├── sndcore2.h
│ │ │ │ │ ├── sndcore2_ai.cpp
│ │ │ │ │ ├── sndcore2_ai.h
│ │ │ │ │ ├── sndcore2_config.cpp
│ │ │ │ │ ├── sndcore2_config.h
│ │ │ │ │ ├── sndcore2_constants.h
│ │ │ │ │ ├── sndcore2_device.cpp
│ │ │ │ │ ├── sndcore2_device.h
│ │ │ │ │ ├── sndcore2_enum.h
│ │ │ │ │ ├── sndcore2_rmt.cpp
│ │ │ │ │ ├── sndcore2_rmt.h
│ │ │ │ │ ├── sndcore2_voice.cpp
│ │ │ │ │ ├── sndcore2_voice.h
│ │ │ │ │ ├── sndcore2_vs.cpp
│ │ │ │ │ └── sndcore2_vs.h
│ │ │ │ ├── snduser2/
│ │ │ │ │ ├── snduser2.cpp
│ │ │ │ │ ├── snduser2.h
│ │ │ │ │ ├── snduser2_axart.cpp
│ │ │ │ │ ├── snduser2_axart.h
│ │ │ │ │ ├── snduser2_axfx.h
│ │ │ │ │ ├── snduser2_axfx_chorus.cpp
│ │ │ │ │ ├── snduser2_axfx_chorus.h
│ │ │ │ │ ├── snduser2_axfx_chorusexp.cpp
│ │ │ │ │ ├── snduser2_axfx_chorusexp.h
│ │ │ │ │ ├── snduser2_axfx_delay.cpp
│ │ │ │ │ ├── snduser2_axfx_delay.h
│ │ │ │ │ ├── snduser2_axfx_delayexp.cpp
│ │ │ │ │ ├── snduser2_axfx_delayexp.h
│ │ │ │ │ ├── snduser2_axfx_hooks.cpp
│ │ │ │ │ ├── snduser2_axfx_hooks.h
│ │ │ │ │ ├── snduser2_axfx_multichreverb.cpp
│ │ │ │ │ ├── snduser2_axfx_multichreverb.h
│ │ │ │ │ ├── snduser2_axfx_reverbhi.cpp
│ │ │ │ │ ├── snduser2_axfx_reverbhi.h
│ │ │ │ │ ├── snduser2_axfx_reverbhiexp.cpp
│ │ │ │ │ ├── snduser2_axfx_reverbhiexp.h
│ │ │ │ │ ├── snduser2_axfx_reverbstd.cpp
│ │ │ │ │ ├── snduser2_axfx_reverbstd.h
│ │ │ │ │ ├── snduser2_axfx_reverbstdexp.cpp
│ │ │ │ │ ├── snduser2_axfx_reverbstdexp.h
│ │ │ │ │ ├── snduser2_enum.h
│ │ │ │ │ ├── snduser2_mix.cpp
│ │ │ │ │ ├── snduser2_mix.h
│ │ │ │ │ ├── snduser2_sp.cpp
│ │ │ │ │ └── snduser2_sp.h
│ │ │ │ ├── swkbd/
│ │ │ │ │ ├── swkbd.cpp
│ │ │ │ │ ├── swkbd.h
│ │ │ │ │ ├── swkbd_enum.h
│ │ │ │ │ ├── swkbd_keyboard.cpp
│ │ │ │ │ └── swkbd_keyboard.h
│ │ │ │ ├── sysapp/
│ │ │ │ │ ├── sysapp.cpp
│ │ │ │ │ ├── sysapp.h
│ │ │ │ │ ├── sysapp_callerargs.cpp
│ │ │ │ │ ├── sysapp_callerargs.h
│ │ │ │ │ ├── sysapp_enum.h
│ │ │ │ │ ├── sysapp_title.cpp
│ │ │ │ │ └── sysapp_title.h
│ │ │ │ ├── tcl/
│ │ │ │ │ ├── tcl.cpp
│ │ │ │ │ ├── tcl.h
│ │ │ │ │ ├── tcl_aperture.cpp
│ │ │ │ │ ├── tcl_aperture.h
│ │ │ │ │ ├── tcl_driver.cpp
│ │ │ │ │ ├── tcl_driver.h
│ │ │ │ │ ├── tcl_enum.h
│ │ │ │ │ ├── tcl_interrupthandler.cpp
│ │ │ │ │ ├── tcl_interrupthandler.h
│ │ │ │ │ ├── tcl_register.cpp
│ │ │ │ │ ├── tcl_register.h
│ │ │ │ │ ├── tcl_ring.cpp
│ │ │ │ │ └── tcl_ring.h
│ │ │ │ ├── tve/
│ │ │ │ │ ├── tve.cpp
│ │ │ │ │ └── tve.h
│ │ │ │ ├── uac/
│ │ │ │ │ ├── uac.cpp
│ │ │ │ │ └── uac.h
│ │ │ │ ├── uac_rpl/
│ │ │ │ │ ├── uac_rpl.cpp
│ │ │ │ │ └── uac_rpl.h
│ │ │ │ ├── usb_mic/
│ │ │ │ │ ├── usb_mic.cpp
│ │ │ │ │ └── usb_mic.h
│ │ │ │ ├── uvc/
│ │ │ │ │ ├── uvc.cpp
│ │ │ │ │ └── uvc.h
│ │ │ │ ├── uvd/
│ │ │ │ │ ├── uvd.cpp
│ │ │ │ │ └── uvd.h
│ │ │ │ ├── vpad/
│ │ │ │ │ ├── vpad.cpp
│ │ │ │ │ ├── vpad.h
│ │ │ │ │ ├── vpad_controller.cpp
│ │ │ │ │ ├── vpad_controller.h
│ │ │ │ │ ├── vpad_enum.h
│ │ │ │ │ ├── vpad_gyro.cpp
│ │ │ │ │ ├── vpad_gyro.h
│ │ │ │ │ ├── vpad_motor.cpp
│ │ │ │ │ └── vpad_motor.h
│ │ │ │ ├── vpadbase/
│ │ │ │ │ ├── vpadbase.cpp
│ │ │ │ │ ├── vpadbase.h
│ │ │ │ │ ├── vpadbase_controller.cpp
│ │ │ │ │ └── vpadbase_controller.h
│ │ │ │ └── zlib125/
│ │ │ │ ├── zlib125.cpp
│ │ │ │ ├── zlib125.h
│ │ │ │ └── zlib125_zlib.cpp
│ │ │ ├── loader/
│ │ │ │ ├── cafe_loader_basics.cpp
│ │ │ │ ├── cafe_loader_basics.h
│ │ │ │ ├── cafe_loader_bounce.cpp
│ │ │ │ ├── cafe_loader_bounce.h
│ │ │ │ ├── cafe_loader_elffile.cpp
│ │ │ │ ├── cafe_loader_elffile.h
│ │ │ │ ├── cafe_loader_entry.cpp
│ │ │ │ ├── cafe_loader_entry.h
│ │ │ │ ├── cafe_loader_error.cpp
│ │ │ │ ├── cafe_loader_error.h
│ │ │ │ ├── cafe_loader_flush.cpp
│ │ │ │ ├── cafe_loader_flush.h
│ │ │ │ ├── cafe_loader_globals.cpp
│ │ │ │ ├── cafe_loader_globals.h
│ │ │ │ ├── cafe_loader_heap.cpp
│ │ │ │ ├── cafe_loader_heap.h
│ │ │ │ ├── cafe_loader_init.cpp
│ │ │ │ ├── cafe_loader_init.h
│ │ │ │ ├── cafe_loader_iop.cpp
│ │ │ │ ├── cafe_loader_iop.h
│ │ │ │ ├── cafe_loader_ipcldriver.cpp
│ │ │ │ ├── cafe_loader_ipcldriver.h
│ │ │ │ ├── cafe_loader_ipcldriverfifo.h
│ │ │ │ ├── cafe_loader_link.cpp
│ │ │ │ ├── cafe_loader_link.h
│ │ │ │ ├── cafe_loader_loaded_rpl.h
│ │ │ │ ├── cafe_loader_log.h
│ │ │ │ ├── cafe_loader_minfileinfo.cpp
│ │ │ │ ├── cafe_loader_minfileinfo.h
│ │ │ │ ├── cafe_loader_prep.cpp
│ │ │ │ ├── cafe_loader_prep.h
│ │ │ │ ├── cafe_loader_purge.cpp
│ │ │ │ ├── cafe_loader_purge.h
│ │ │ │ ├── cafe_loader_query.cpp
│ │ │ │ ├── cafe_loader_query.h
│ │ │ │ ├── cafe_loader_reloc.cpp
│ │ │ │ ├── cafe_loader_reloc.h
│ │ │ │ ├── cafe_loader_rpl.h
│ │ │ │ ├── cafe_loader_setup.cpp
│ │ │ │ ├── cafe_loader_setup.h
│ │ │ │ ├── cafe_loader_shared.cpp
│ │ │ │ ├── cafe_loader_shared.h
│ │ │ │ ├── cafe_loader_utils.h
│ │ │ │ ├── cafe_loader_zlib.cpp
│ │ │ │ └── cafe_loader_zlib.h
│ │ │ └── nn/
│ │ │ ├── cafe_nn_ipc_bufferallocator.cpp
│ │ │ ├── cafe_nn_ipc_bufferallocator.h
│ │ │ ├── cafe_nn_ipc_client.cpp
│ │ │ ├── cafe_nn_ipc_client.h
│ │ │ ├── cafe_nn_ipc_client_command.h
│ │ │ └── cafe_nn_os_criticalsection.h
│ │ ├── debug_api/
│ │ │ ├── debug_api_analyse.cpp
│ │ │ ├── debug_api_cafe.cpp
│ │ │ ├── debug_api_controller.cpp
│ │ │ ├── debug_api_controller.h
│ │ │ ├── debug_api_cpu.cpp
│ │ │ ├── debug_api_memory.cpp
│ │ │ └── debug_api_pm4.cpp
│ │ ├── debugger/
│ │ │ ├── debugger.cpp
│ │ │ ├── debugger.h
│ │ │ ├── debugger_server.h
│ │ │ ├── debugger_server_gdb.cpp
│ │ │ ├── debugger_server_gdb.h
│ │ │ └── debugger_server_gdb_xml.inl
│ │ ├── decaf.cpp
│ │ ├── decaf_configstorage.cpp
│ │ ├── decaf_configstorage.h
│ │ ├── decaf_erreula.cpp
│ │ ├── decaf_eventlistener.cpp
│ │ ├── decaf_events.h
│ │ ├── decaf_graphics.cpp
│ │ ├── decaf_input.cpp
│ │ ├── decaf_log.cpp
│ │ ├── decaf_nullinputdriver.cpp
│ │ ├── decaf_slc.cpp
│ │ ├── decaf_slc.h
│ │ ├── decaf_softwarekeyboard.cpp
│ │ ├── decaf_sound.cpp
│ │ ├── input/
│ │ │ ├── input.cpp
│ │ │ └── input.h
│ │ ├── ios/
│ │ │ ├── acp/
│ │ │ │ ├── ios_acp.cpp
│ │ │ │ ├── ios_acp.h
│ │ │ │ ├── ios_acp_client_save.cpp
│ │ │ │ ├── ios_acp_client_save.h
│ │ │ │ ├── ios_acp_enum.h
│ │ │ │ ├── ios_acp_log.h
│ │ │ │ ├── ios_acp_main_server.cpp
│ │ │ │ ├── ios_acp_main_server.h
│ │ │ │ ├── ios_acp_metaxml.cpp
│ │ │ │ ├── ios_acp_metaxml.h
│ │ │ │ ├── ios_acp_nn_miscservice.cpp
│ │ │ │ ├── ios_acp_nn_miscservice.h
│ │ │ │ ├── ios_acp_nn_saveservice.cpp
│ │ │ │ ├── ios_acp_nn_saveservice.h
│ │ │ │ ├── ios_acp_nnsm.cpp
│ │ │ │ ├── ios_acp_nnsm.h
│ │ │ │ ├── ios_acp_nnsm_ipc.cpp
│ │ │ │ ├── ios_acp_nnsm_ipc.h
│ │ │ │ ├── ios_acp_pdm_cosservice.cpp
│ │ │ │ ├── ios_acp_pdm_cosservice.h
│ │ │ │ ├── ios_acp_pdm_server.cpp
│ │ │ │ ├── ios_acp_pdm_server.h
│ │ │ │ ├── ios_acp_spm_extendedstorageservice.cpp
│ │ │ │ └── ios_acp_spm_extendedstorageservice.h
│ │ │ ├── auxil/
│ │ │ │ ├── ios_auxil.cpp
│ │ │ │ ├── ios_auxil.h
│ │ │ │ ├── ios_auxil_config.cpp
│ │ │ │ ├── ios_auxil_config.h
│ │ │ │ ├── ios_auxil_enum.h
│ │ │ │ ├── ios_auxil_im.h
│ │ │ │ ├── ios_auxil_im_device.cpp
│ │ │ │ ├── ios_auxil_im_device.h
│ │ │ │ ├── ios_auxil_im_request.h
│ │ │ │ ├── ios_auxil_im_response.h
│ │ │ │ ├── ios_auxil_im_thread.cpp
│ │ │ │ ├── ios_auxil_im_thread.h
│ │ │ │ ├── ios_auxil_usr_cfg.h
│ │ │ │ ├── ios_auxil_usr_cfg_device.cpp
│ │ │ │ ├── ios_auxil_usr_cfg_device.h
│ │ │ │ ├── ios_auxil_usr_cfg_fs.cpp
│ │ │ │ ├── ios_auxil_usr_cfg_fs.h
│ │ │ │ ├── ios_auxil_usr_cfg_ipc.cpp
│ │ │ │ ├── ios_auxil_usr_cfg_ipc.h
│ │ │ │ ├── ios_auxil_usr_cfg_request.h
│ │ │ │ ├── ios_auxil_usr_cfg_service_thread.cpp
│ │ │ │ ├── ios_auxil_usr_cfg_service_thread.h
│ │ │ │ ├── ios_auxil_usr_cfg_thread.cpp
│ │ │ │ ├── ios_auxil_usr_cfg_thread.h
│ │ │ │ └── ios_auxil_usr_cfg_types.h
│ │ │ ├── bsp/
│ │ │ │ ├── ios_bsp.cpp
│ │ │ │ ├── ios_bsp.h
│ │ │ │ ├── ios_bsp_bsp_request.h
│ │ │ │ ├── ios_bsp_bsp_response.h
│ │ │ │ └── ios_bsp_enum.h
│ │ │ ├── crypto/
│ │ │ │ ├── ios_crypto.cpp
│ │ │ │ ├── ios_crypto.h
│ │ │ │ ├── ios_crypto_enum.h
│ │ │ │ ├── ios_crypto_ipc.cpp
│ │ │ │ ├── ios_crypto_ipc.h
│ │ │ │ ├── ios_crypto_log.h
│ │ │ │ ├── ios_crypto_request.h
│ │ │ │ └── ios_crypto_types.h
│ │ │ ├── fpd/
│ │ │ │ ├── ios_fpd.cpp
│ │ │ │ ├── ios_fpd.h
│ │ │ │ ├── ios_fpd_act_accountdata.cpp
│ │ │ │ ├── ios_fpd_act_accountdata.h
│ │ │ │ ├── ios_fpd_act_accountloaderservice.cpp
│ │ │ │ ├── ios_fpd_act_accountloaderservice.h
│ │ │ │ ├── ios_fpd_act_accountmanagerservice.cpp
│ │ │ │ ├── ios_fpd_act_accountmanagerservice.h
│ │ │ │ ├── ios_fpd_act_clientstandardservice.cpp
│ │ │ │ ├── ios_fpd_act_clientstandardservice.h
│ │ │ │ ├── ios_fpd_act_server.cpp
│ │ │ │ ├── ios_fpd_act_server.h
│ │ │ │ ├── ios_fpd_act_serverstandardservice.cpp
│ │ │ │ ├── ios_fpd_act_serverstandardservice.h
│ │ │ │ └── ios_fpd_log.h
│ │ │ ├── fs/
│ │ │ │ ├── ios_fs.cpp
│ │ │ │ ├── ios_fs.h
│ │ │ │ ├── ios_fs_enum.h
│ │ │ │ ├── ios_fs_fsa.h
│ │ │ │ ├── ios_fs_fsa_async_task.cpp
│ │ │ │ ├── ios_fs_fsa_async_task.h
│ │ │ │ ├── ios_fs_fsa_device.cpp
│ │ │ │ ├── ios_fs_fsa_device.h
│ │ │ │ ├── ios_fs_fsa_ipc.cpp
│ │ │ │ ├── ios_fs_fsa_ipc.h
│ │ │ │ ├── ios_fs_fsa_request.h
│ │ │ │ ├── ios_fs_fsa_response.h
│ │ │ │ ├── ios_fs_fsa_thread.cpp
│ │ │ │ ├── ios_fs_fsa_thread.h
│ │ │ │ ├── ios_fs_fsa_types.h
│ │ │ │ ├── ios_fs_log.h
│ │ │ │ ├── ios_fs_mutex.cpp
│ │ │ │ ├── ios_fs_mutex.h
│ │ │ │ ├── ios_fs_service_thread.cpp
│ │ │ │ └── ios_fs_service_thread.h
│ │ │ ├── ios.cpp
│ │ │ ├── ios.h
│ │ │ ├── ios_alarm_thread.cpp
│ │ │ ├── ios_alarm_thread.h
│ │ │ ├── ios_device.h
│ │ │ ├── ios_enum.h
│ │ │ ├── ios_enum_string.cpp
│ │ │ ├── ios_enum_string.h
│ │ │ ├── ios_error.h
│ │ │ ├── ios_handlemanager.h
│ │ │ ├── ios_ipc.h
│ │ │ ├── ios_network_thread.cpp
│ │ │ ├── ios_network_thread.h
│ │ │ ├── ios_stackobject.h
│ │ │ ├── ios_worker_thread.cpp
│ │ │ ├── ios_worker_thread.h
│ │ │ ├── kernel/
│ │ │ │ ├── ios_kernel.cpp
│ │ │ │ ├── ios_kernel.h
│ │ │ │ ├── ios_kernel_debug.cpp
│ │ │ │ ├── ios_kernel_debug.h
│ │ │ │ ├── ios_kernel_enum.h
│ │ │ │ ├── ios_kernel_hardware.cpp
│ │ │ │ ├── ios_kernel_hardware.h
│ │ │ │ ├── ios_kernel_heap.cpp
│ │ │ │ ├── ios_kernel_heap.h
│ │ │ │ ├── ios_kernel_ipc.cpp
│ │ │ │ ├── ios_kernel_ipc.h
│ │ │ │ ├── ios_kernel_ipc_thread.cpp
│ │ │ │ ├── ios_kernel_ipc_thread.h
│ │ │ │ ├── ios_kernel_messagequeue.cpp
│ │ │ │ ├── ios_kernel_messagequeue.h
│ │ │ │ ├── ios_kernel_otp.cpp
│ │ │ │ ├── ios_kernel_otp.h
│ │ │ │ ├── ios_kernel_process.cpp
│ │ │ │ ├── ios_kernel_process.h
│ │ │ │ ├── ios_kernel_resourcemanager.cpp
│ │ │ │ ├── ios_kernel_resourcemanager.h
│ │ │ │ ├── ios_kernel_scheduler.cpp
│ │ │ │ ├── ios_kernel_scheduler.h
│ │ │ │ ├── ios_kernel_semaphore.cpp
│ │ │ │ ├── ios_kernel_semaphore.h
│ │ │ │ ├── ios_kernel_thread.cpp
│ │ │ │ ├── ios_kernel_thread.h
│ │ │ │ ├── ios_kernel_threadqueue.cpp
│ │ │ │ ├── ios_kernel_threadqueue.h
│ │ │ │ ├── ios_kernel_timer.cpp
│ │ │ │ └── ios_kernel_timer.h
│ │ │ ├── mcp/
│ │ │ │ ├── ios_mcp.cpp
│ │ │ │ ├── ios_mcp.h
│ │ │ │ ├── ios_mcp_config.cpp
│ │ │ │ ├── ios_mcp_config.h
│ │ │ │ ├── ios_mcp_enum.h
│ │ │ │ ├── ios_mcp_ipc.cpp
│ │ │ │ ├── ios_mcp_ipc.h
│ │ │ │ ├── ios_mcp_mcp.h
│ │ │ │ ├── ios_mcp_mcp_device.cpp
│ │ │ │ ├── ios_mcp_mcp_device.h
│ │ │ │ ├── ios_mcp_mcp_request.h
│ │ │ │ ├── ios_mcp_mcp_response.h
│ │ │ │ ├── ios_mcp_mcp_thread.cpp
│ │ │ │ ├── ios_mcp_mcp_thread.h
│ │ │ │ ├── ios_mcp_mcp_types.h
│ │ │ │ ├── ios_mcp_pm_thread.cpp
│ │ │ │ ├── ios_mcp_pm_thread.h
│ │ │ │ ├── ios_mcp_ppc_thread.cpp
│ │ │ │ ├── ios_mcp_ppc_thread.h
│ │ │ │ ├── ios_mcp_title.cpp
│ │ │ │ └── ios_mcp_title.h
│ │ │ ├── net/
│ │ │ │ ├── ios_net.cpp
│ │ │ │ ├── ios_net.h
│ │ │ │ ├── ios_net_ac_main_server.cpp
│ │ │ │ ├── ios_net_ac_main_server.h
│ │ │ │ ├── ios_net_ac_service.cpp
│ │ │ │ ├── ios_net_ac_service.h
│ │ │ │ ├── ios_net_enum.h
│ │ │ │ ├── ios_net_log.h
│ │ │ │ ├── ios_net_ndm_server.cpp
│ │ │ │ ├── ios_net_ndm_server.h
│ │ │ │ ├── ios_net_socket.h
│ │ │ │ ├── ios_net_socket_async_task.cpp
│ │ │ │ ├── ios_net_socket_async_task.h
│ │ │ │ ├── ios_net_socket_device.cpp
│ │ │ │ ├── ios_net_socket_device.h
│ │ │ │ ├── ios_net_socket_request.h
│ │ │ │ ├── ios_net_socket_response.h
│ │ │ │ ├── ios_net_socket_thread.cpp
│ │ │ │ ├── ios_net_socket_thread.h
│ │ │ │ ├── ios_net_socket_types.h
│ │ │ │ ├── ios_net_soshim.cpp
│ │ │ │ ├── ios_net_soshim.h
│ │ │ │ ├── ios_net_subsys.cpp
│ │ │ │ └── ios_net_subsys.h
│ │ │ ├── nim/
│ │ │ │ ├── ios_nim.cpp
│ │ │ │ ├── ios_nim.h
│ │ │ │ ├── ios_nim_boss_privilegedservice.cpp
│ │ │ │ ├── ios_nim_boss_privilegedservice.h
│ │ │ │ ├── ios_nim_boss_server.cpp
│ │ │ │ ├── ios_nim_boss_server.h
│ │ │ │ ├── ios_nim_log.h
│ │ │ │ ├── ios_nim_nim_server.cpp
│ │ │ │ └── ios_nim_nim_server.h
│ │ │ ├── nn/
│ │ │ │ ├── ios_nn.cpp
│ │ │ │ ├── ios_nn.h
│ │ │ │ ├── ios_nn_criticalsection.cpp
│ │ │ │ ├── ios_nn_criticalsection.h
│ │ │ │ ├── ios_nn_ipc_server.cpp
│ │ │ │ ├── ios_nn_ipc_server.h
│ │ │ │ ├── ios_nn_ipc_server_command.h
│ │ │ │ ├── ios_nn_recursivemutex.cpp
│ │ │ │ ├── ios_nn_recursivemutex.h
│ │ │ │ ├── ios_nn_thread.cpp
│ │ │ │ ├── ios_nn_thread.h
│ │ │ │ ├── ios_nn_tls.cpp
│ │ │ │ └── ios_nn_tls.h
│ │ │ ├── nsec/
│ │ │ │ ├── ios_nsec.cpp
│ │ │ │ ├── ios_nsec.h
│ │ │ │ ├── ios_nsec_enum.h
│ │ │ │ ├── ios_nsec_log.h
│ │ │ │ ├── ios_nsec_nssl.h
│ │ │ │ ├── ios_nsec_nssl_certstore.cpp
│ │ │ │ ├── ios_nsec_nssl_certstore.h
│ │ │ │ ├── ios_nsec_nssl_device.cpp
│ │ │ │ ├── ios_nsec_nssl_device.h
│ │ │ │ ├── ios_nsec_nssl_request.h
│ │ │ │ ├── ios_nsec_nssl_response.h
│ │ │ │ ├── ios_nsec_nssl_thread.cpp
│ │ │ │ ├── ios_nsec_nssl_thread.h
│ │ │ │ └── ios_nsec_nssl_types.h
│ │ │ ├── pad/
│ │ │ │ ├── ios_pad.cpp
│ │ │ │ ├── ios_pad.h
│ │ │ │ ├── ios_pad_btrm_device.cpp
│ │ │ │ ├── ios_pad_btrm_device.h
│ │ │ │ ├── ios_pad_btrm_request.h
│ │ │ │ ├── ios_pad_btrm_response.h
│ │ │ │ ├── ios_pad_enum.h
│ │ │ │ └── ios_pad_log.h
│ │ │ ├── test/
│ │ │ │ ├── ios_test.cpp
│ │ │ │ └── ios_test.h
│ │ │ └── usb/
│ │ │ ├── ios_usb.cpp
│ │ │ └── ios_usb.h
│ │ ├── nn/
│ │ │ ├── ac/
│ │ │ │ ├── nn_ac_result.h
│ │ │ │ └── nn_ac_service.h
│ │ │ ├── acp/
│ │ │ │ ├── nn_acp_enum.h
│ │ │ │ ├── nn_acp_miscservice.h
│ │ │ │ ├── nn_acp_result.h
│ │ │ │ ├── nn_acp_saveservice.h
│ │ │ │ └── nn_acp_types.h
│ │ │ ├── act/
│ │ │ │ ├── nn_act_accountloaderservice.h
│ │ │ │ ├── nn_act_accountmanagerservice.h
│ │ │ │ ├── nn_act_clientstandardservice.h
│ │ │ │ ├── nn_act_enum.h
│ │ │ │ ├── nn_act_result.h
│ │ │ │ ├── nn_act_serverstandardservice.h
│ │ │ │ └── nn_act_types.h
│ │ │ ├── boss/
│ │ │ │ ├── nn_boss_management_service.h
│ │ │ │ ├── nn_boss_private_service.h
│ │ │ │ ├── nn_boss_privileged_service.h
│ │ │ │ ├── nn_boss_result.h
│ │ │ │ ├── nn_boss_service.h
│ │ │ │ ├── nn_boss_test_service.h
│ │ │ │ └── nn_boss_types.h
│ │ │ ├── dbg/
│ │ │ │ ├── nn_dbg_result_string.cpp
│ │ │ │ └── nn_dbg_result_string.h
│ │ │ ├── ffl/
│ │ │ │ └── nn_ffl_miidata.h
│ │ │ ├── ios/
│ │ │ │ ├── nn_ios_error.cpp
│ │ │ │ └── nn_ios_error.h
│ │ │ ├── ipc/
│ │ │ │ ├── nn_ipc_command.h
│ │ │ │ ├── nn_ipc_format.h
│ │ │ │ ├── nn_ipc_managedbuffer.h
│ │ │ │ ├── nn_ipc_result.h
│ │ │ │ └── nn_ipc_service.h
│ │ │ ├── nfp/
│ │ │ │ └── nn_nfp_result.h
│ │ │ ├── nn_result.h
│ │ │ ├── olv/
│ │ │ │ └── nn_olv_result.h
│ │ │ ├── pdm/
│ │ │ │ ├── nn_pdm_cosservice.h
│ │ │ │ └── nn_pdm_result.h
│ │ │ └── spm/
│ │ │ └── nn_spm_extendedstorageservice.h
│ │ ├── traceiter.h
│ │ └── vfs/
│ │ ├── vfs_device.h
│ │ ├── vfs_directoryiterator.h
│ │ ├── vfs_error.h
│ │ ├── vfs_filehandle.h
│ │ ├── vfs_host_device.cpp
│ │ ├── vfs_host_device.h
│ │ ├── vfs_host_directoryiterator.cpp
│ │ ├── vfs_host_directoryiterator.h
│ │ ├── vfs_host_filehandle.cpp
│ │ ├── vfs_host_filehandle.h
│ │ ├── vfs_link_device.cpp
│ │ ├── vfs_link_device.h
│ │ ├── vfs_overlay_device.cpp
│ │ ├── vfs_overlay_device.h
│ │ ├── vfs_overlay_directoryiterator.cpp
│ │ ├── vfs_overlay_directoryiterator.h
│ │ ├── vfs_path.cpp
│ │ ├── vfs_path.h
│ │ ├── vfs_pathiterator.cpp
│ │ ├── vfs_pathiterator.h
│ │ ├── vfs_permissions.h
│ │ ├── vfs_result.h
│ │ ├── vfs_status.h
│ │ ├── vfs_virtual_device.cpp
│ │ ├── vfs_virtual_device.h
│ │ ├── vfs_virtual_directory.h
│ │ ├── vfs_virtual_directoryiterator.cpp
│ │ ├── vfs_virtual_directoryiterator.h
│ │ ├── vfs_virtual_file.h
│ │ ├── vfs_virtual_filehandle.cpp
│ │ ├── vfs_virtual_filehandle.h
│ │ ├── vfs_virtual_mounteddevice.h
│ │ └── vfs_virtual_node.h
│ ├── libgfd/
│ │ ├── CMakeLists.txt
│ │ ├── gfd.h
│ │ ├── gfd_enum.h
│ │ ├── gfd_gx2.h
│ │ └── src/
│ │ ├── gfd_read.cpp
│ │ └── gfd_write.cpp
│ └── libgpu/
│ ├── CMakeLists.txt
│ ├── gpu.h
│ ├── gpu7_displaylayout.h
│ ├── gpu7_tiling.h
│ ├── gpu7_tiling_cpu.h
│ ├── gpu7_tiling_vulkan.h
│ ├── gpu_config.h
│ ├── gpu_graphicsdriver.h
│ ├── gpu_ih.h
│ ├── gpu_memory.h
│ ├── gpu_ringbuffer.h
│ ├── gpu_tiling.h
│ ├── gpu_vulkandriver.h
│ ├── latte/
│ │ ├── latte_constants.h
│ │ ├── latte_contextstate.h
│ │ ├── latte_disassembler.h
│ │ ├── latte_enum_as_string.cpp
│ │ ├── latte_enum_as_string.h
│ │ ├── latte_enum_cb.h
│ │ ├── latte_enum_common.h
│ │ ├── latte_enum_cp.h
│ │ ├── latte_enum_db.h
│ │ ├── latte_enum_pa.h
│ │ ├── latte_enum_pm4.h
│ │ ├── latte_enum_spi.h
│ │ ├── latte_enum_sq.h
│ │ ├── latte_enum_vgt.h
│ │ ├── latte_formats.h
│ │ ├── latte_instructions.h
│ │ ├── latte_instructions_def.inl
│ │ ├── latte_pm4.h
│ │ ├── latte_pm4_commands.h
│ │ ├── latte_pm4_reader.h
│ │ ├── latte_pm4_sizer.h
│ │ ├── latte_pm4_writer.h
│ │ ├── latte_registers.h
│ │ ├── latte_registers_cb.h
│ │ ├── latte_registers_cp.h
│ │ ├── latte_registers_db.h
│ │ ├── latte_registers_pa.h
│ │ ├── latte_registers_spi.h
│ │ ├── latte_registers_sq.h
│ │ ├── latte_registers_sx.h
│ │ ├── latte_registers_ta.h
│ │ ├── latte_registers_td.h
│ │ └── latte_registers_vgt.h
│ ├── src/
│ │ ├── gpu7_displaylayout.cpp
│ │ ├── gpu7_tiling.cpp
│ │ ├── gpu7_tiling_cpu.cpp
│ │ ├── gpu7_tiling_vulkan.cpp
│ │ ├── gpu_clock.h
│ │ ├── gpu_configstorage.cpp
│ │ ├── gpu_configstorage.h
│ │ ├── gpu_event.cpp
│ │ ├── gpu_event.h
│ │ ├── gpu_graphicsdriver.cpp
│ │ ├── gpu_ih.cpp
│ │ ├── gpu_ringbuffer.cpp
│ │ ├── gpu_tiling.cpp
│ │ ├── latte/
│ │ │ ├── latte_decoders.h
│ │ │ ├── latte_disassembler.cpp
│ │ │ ├── latte_disassembler_alu.cpp
│ │ │ ├── latte_disassembler_export.cpp
│ │ │ ├── latte_disassembler_state.h
│ │ │ ├── latte_disassembler_tex.cpp
│ │ │ ├── latte_disassembler_vtx.cpp
│ │ │ ├── latte_endian.h
│ │ │ ├── latte_formats.cpp
│ │ │ ├── latte_instructions.cpp
│ │ │ └── latte_shaderparser.h
│ │ ├── null/
│ │ │ ├── null_driver.cpp
│ │ │ └── null_driver.h
│ │ ├── pm4_processor.cpp
│ │ ├── pm4_processor.h
│ │ ├── spirv/
│ │ │ ├── spirv_alu_op2.cpp
│ │ │ ├── spirv_alu_op3.cpp
│ │ │ ├── spirv_alu_reduc.cpp
│ │ │ ├── spirv_cf.cpp
│ │ │ ├── spirv_export.cpp
│ │ │ ├── spirv_helpers.cpp
│ │ │ ├── spirv_pushconstants.h
│ │ │ ├── spirv_shaderspvbuilder.h
│ │ │ ├── spirv_spvbuilder.h
│ │ │ ├── spirv_tex.cpp
│ │ │ ├── spirv_translate.h
│ │ │ ├── spirv_transpiler.cpp
│ │ │ ├── spirv_transpiler.h
│ │ │ └── spirv_vtx.cpp
│ │ └── vulkan/
│ │ ├── vk_mem_alloc.cpp
│ │ ├── vk_mem_alloc.h
│ │ ├── vk_mem_alloc_decaf.h
│ │ ├── vulkan_attribbuffers.cpp
│ │ ├── vulkan_debug.cpp
│ │ ├── vulkan_descs.h
│ │ ├── vulkan_display.cpp
│ │ ├── vulkan_displayshaders.h
│ │ ├── vulkan_draw.cpp
│ │ ├── vulkan_driver.cpp
│ │ ├── vulkan_driver.h
│ │ ├── vulkan_fences.cpp
│ │ ├── vulkan_framebuffer.cpp
│ │ ├── vulkan_indices.cpp
│ │ ├── vulkan_memcache.cpp
│ │ ├── vulkan_memtracker.h
│ │ ├── vulkan_pipelinelayouts.cpp
│ │ ├── vulkan_pipelines.cpp
│ │ ├── vulkan_pm4.cpp
│ │ ├── vulkan_renderpass.cpp
│ │ ├── vulkan_samplers.cpp
│ │ ├── vulkan_shaderbuffers.cpp
│ │ ├── vulkan_shaders.cpp
│ │ ├── vulkan_staging.cpp
│ │ ├── vulkan_streamout.cpp
│ │ ├── vulkan_surface.cpp
│ │ ├── vulkan_swapchain.cpp
│ │ ├── vulkan_textures.cpp
│ │ ├── vulkan_tiling.cpp
│ │ ├── vulkan_utils.cpp
│ │ ├── vulkan_utils.h
│ │ ├── vulkan_validate.cpp
│ │ └── vulkan_viewscissor.cpp
│ └── vulkan_shaders/
│ └── gpu7_tiling.comp.glsl
├── tests/
│ ├── CMakeLists.txt
│ ├── cpu/
│ │ ├── CMakeLists.txt
│ │ ├── data/
│ │ │ ├── input/
│ │ │ │ ├── add
│ │ │ │ ├── addc
│ │ │ │ ├── adde
│ │ │ │ ├── addi
│ │ │ │ ├── addic
│ │ │ │ ├── addicx
│ │ │ │ ├── addis
│ │ │ │ ├── addme
│ │ │ │ ├── addze
│ │ │ │ ├── and
│ │ │ │ ├── andc
│ │ │ │ ├── andi
│ │ │ │ ├── andis
│ │ │ │ ├── cmp
│ │ │ │ ├── cmpi
│ │ │ │ ├── cmpl
│ │ │ │ ├── cmpli
│ │ │ │ ├── cntlzw
│ │ │ │ ├── crand
│ │ │ │ ├── crandc
│ │ │ │ ├── creqv
│ │ │ │ ├── crnand
│ │ │ │ ├── crnor
│ │ │ │ ├── cror
│ │ │ │ ├── crorc
│ │ │ │ ├── crxor
│ │ │ │ ├── divw
│ │ │ │ ├── divwu
│ │ │ │ ├── eqv
│ │ │ │ ├── extsb
│ │ │ │ ├── extsh
│ │ │ │ ├── fabs
│ │ │ │ ├── fadd
│ │ │ │ ├── fadds
│ │ │ │ ├── fctiw
│ │ │ │ ├── fctiwz
│ │ │ │ ├── fdiv
│ │ │ │ ├── fdivs
│ │ │ │ ├── fmadd
│ │ │ │ ├── fmadds
│ │ │ │ ├── fmr
│ │ │ │ ├── fmsub
│ │ │ │ ├── fmsubs
│ │ │ │ ├── fmul
│ │ │ │ ├── fmuls
│ │ │ │ ├── fnabs
│ │ │ │ ├── fneg
│ │ │ │ ├── fnmadd
│ │ │ │ ├── fnmadds
│ │ │ │ ├── fnmsub
│ │ │ │ ├── fnmsubs
│ │ │ │ ├── fres
│ │ │ │ ├── frsp
│ │ │ │ ├── fsel
│ │ │ │ ├── fsub
│ │ │ │ ├── fsubs
│ │ │ │ ├── mulhw
│ │ │ │ ├── mulhwu
│ │ │ │ ├── mulli
│ │ │ │ ├── mullw
│ │ │ │ ├── nand
│ │ │ │ ├── neg
│ │ │ │ ├── nor
│ │ │ │ ├── or
│ │ │ │ ├── orc
│ │ │ │ ├── ori
│ │ │ │ ├── oris
│ │ │ │ ├── rlwimi
│ │ │ │ ├── rlwinm
│ │ │ │ ├── rlwnm
│ │ │ │ ├── slw
│ │ │ │ ├── sraw
│ │ │ │ ├── srawi
│ │ │ │ ├── srw
│ │ │ │ ├── subf
│ │ │ │ ├── subfc
│ │ │ │ ├── subfe
│ │ │ │ ├── subfic
│ │ │ │ ├── subfme
│ │ │ │ ├── subfze
│ │ │ │ ├── xor
│ │ │ │ ├── xori
│ │ │ │ └── xoris
│ │ │ └── wiiu/
│ │ │ ├── add
│ │ │ ├── addc
│ │ │ ├── adde
│ │ │ ├── addi
│ │ │ ├── addic
│ │ │ ├── addicx
│ │ │ ├── addis
│ │ │ ├── addme
│ │ │ ├── addze
│ │ │ ├── and
│ │ │ ├── andc
│ │ │ ├── andi
│ │ │ ├── andis
│ │ │ ├── cmp
│ │ │ ├── cmpi
│ │ │ ├── cmpl
│ │ │ ├── cmpli
│ │ │ ├── cntlzw
│ │ │ ├── crand
│ │ │ ├── crandc
│ │ │ ├── creqv
│ │ │ ├── crnand
│ │ │ ├── crnor
│ │ │ ├── cror
│ │ │ ├── crorc
│ │ │ ├── crxor
│ │ │ ├── divw
│ │ │ ├── divwu
│ │ │ ├── eqv
│ │ │ ├── extsb
│ │ │ ├── extsh
│ │ │ ├── fabs
│ │ │ ├── fadd
│ │ │ ├── fadds
│ │ │ ├── fctiw
│ │ │ ├── fctiwz
│ │ │ ├── fdiv
│ │ │ ├── fdivs
│ │ │ ├── fmadd
│ │ │ ├── fmadds
│ │ │ ├── fmr
│ │ │ ├── fmsub
│ │ │ ├── fmsubs
│ │ │ ├── fmul
│ │ │ ├── fmuls
│ │ │ ├── fnabs
│ │ │ ├── fneg
│ │ │ ├── fnmadd
│ │ │ ├── fnmadds
│ │ │ ├── fnmsub
│ │ │ ├── fnmsubs
│ │ │ ├── fres
│ │ │ ├── frsp
│ │ │ ├── fsel
│ │ │ ├── fsub
│ │ │ ├── fsubs
│ │ │ ├── mulhw
│ │ │ ├── mulhwu
│ │ │ ├── mulli
│ │ │ ├── mullw
│ │ │ ├── nand
│ │ │ ├── neg
│ │ │ ├── nor
│ │ │ ├── or
│ │ │ ├── orc
│ │ │ ├── ori
│ │ │ ├── oris
│ │ │ ├── rlwimi
│ │ │ ├── rlwinm
│ │ │ ├── rlwnm
│ │ │ ├── slw
│ │ │ ├── sraw
│ │ │ ├── srawi
│ │ │ ├── srw
│ │ │ ├── subf
│ │ │ ├── subfc
│ │ │ ├── subfe
│ │ │ ├── subfic
│ │ │ ├── subfme
│ │ │ ├── subfze
│ │ │ ├── xor
│ │ │ ├── xori
│ │ │ └── xoris
│ │ ├── fuzz-compare/
│ │ │ ├── fuzztests.cpp
│ │ │ ├── fuzztests.h
│ │ │ └── main.cpp
│ │ ├── generator/
│ │ │ ├── client/
│ │ │ │ ├── code_test.s
│ │ │ │ ├── console.c
│ │ │ │ ├── console.h
│ │ │ │ ├── loader.c
│ │ │ │ ├── loader.h
│ │ │ │ ├── program.c
│ │ │ │ ├── program.h
│ │ │ │ ├── sysfuncs.c
│ │ │ │ └── sysfuncs.h
│ │ │ ├── dataset/
│ │ │ │ ├── generator.cpp
│ │ │ │ ├── generator_testlist.h
│ │ │ │ └── generator_valuelist.h
│ │ │ └── server/
│ │ │ └── server.cpp
│ │ ├── libcpu/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ ├── runner-achurch/
│ │ │ ├── CMakeLists.txt
│ │ │ └── main.cpp
│ │ └── runner-generated/
│ │ ├── CMakeLists.txt
│ │ ├── hardwaretests.cpp
│ │ ├── hardwaretests.h
│ │ └── main.cpp
│ └── gpu/
│ ├── CMakeLists.txt
│ └── tiling/
│ ├── CMakeLists.txt
│ ├── addrlib_helpers.h
│ ├── cpu_tiling_test.cpp
│ ├── test_helpers.h
│ ├── tiling_test.cpp
│ ├── tiling_tests.h
│ ├── vulkan_helpers.cpp
│ ├── vulkan_helpers.h
│ └── vulkan_tiling_test.cpp
├── tools/
│ ├── CMakeLists.txt
│ ├── gfd-tool/
│ │ ├── CMakeLists.txt
│ │ └── gfdtool.cpp
│ ├── latte-assembler/
│ │ ├── CMakeLists.txt
│ │ ├── resources/
│ │ │ ├── example_shader.psh
│ │ │ └── example_shader.vsh
│ │ └── src/
│ │ ├── assembler_alu.cpp
│ │ ├── assembler_cf.cpp
│ │ ├── assembler_common.cpp
│ │ ├── assembler_exp.cpp
│ │ ├── assembler_instructions.cpp
│ │ ├── assembler_instructions.h
│ │ ├── assembler_latte.cpp
│ │ ├── assembler_parse.cpp
│ │ ├── assembler_tex.cpp
│ │ ├── gfd.cpp
│ │ ├── gfd_comment_parser.h
│ │ ├── gfd_psh_comment_parser.cpp
│ │ ├── gfd_vsh_comment_parser.cpp
│ │ ├── glsl_compiler.cpp
│ │ ├── glsl_compiler.h
│ │ ├── main.cpp
│ │ ├── shader.h
│ │ └── shader_assembler.h
│ ├── pm4-replay/
│ │ ├── CMakeLists.txt
│ │ ├── clilog.h
│ │ ├── config.h
│ │ ├── main.cpp
│ │ ├── replay_parser.h
│ │ ├── replay_parser_pm4.cpp
│ │ ├── replay_parser_pm4.h
│ │ ├── replay_ringbuffer.h
│ │ ├── sdl_window.cpp
│ │ └── sdl_window.h
│ ├── pm4-replay-qt/
│ │ ├── CMakeLists.txt
│ │ ├── decaf.cpp
│ │ ├── decaf.h
│ │ ├── main.cpp
│ │ ├── mainwindow.cpp
│ │ ├── mainwindow.h
│ │ ├── replay.cpp
│ │ ├── replay.h
│ │ ├── replaycommandsmodel.cpp
│ │ ├── replaycommandsmodel.h
│ │ ├── replayrenderwidget.cpp
│ │ ├── replayrenderwidget.h
│ │ ├── replayrunner.cpp
│ │ ├── replayrunner.h
│ │ └── resources/
│ │ └── mainwindow.ui
│ └── wiiu-rpc/
│ ├── CMakeLists.txt
│ ├── client.py
│ └── src/
│ ├── console.c
│ ├── console.h
│ ├── main.c
│ ├── packet.c
│ ├── packet.h
│ ├── server.c
│ └── server.h
└── vcpkg.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -3
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
# AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: TopLevel
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterClass: true
AfterControlStatement: false
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: false
AfterStruct: true
AfterUnion: true
AfterExternBlock: true
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakInheritanceList: AfterColon
BreakBeforeTernaryOperators: true
# BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: AfterColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 0
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 3
ContinuationIndentWidth: 3
Cpp11BracedListStyle: false
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^".*/.*'
Priority: 2
- Regex: '^<.*'
Priority: 3
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: 'IDontWantAmainInclude'
IndentCaseLabels: false
IndentPPDirectives: None
IndentWidth: 3
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: '^[A-Z]+_BEG'
MacroBlockEnd: '^[A-Z]+_END'
MaxEmptyLinesToKeep: 2
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments: true
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 8
UseTab: Never
...
================================================
FILE: .github/workflows/ccpp.yml
================================================
name: C/C++ CI
on: [push, pull_request]
jobs:
windows-build:
runs-on: windows-2019
strategy:
fail-fast: false
env:
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
VCPKG_BUILD_TYPE: 'release'
VCPKG_ROOT: '${{github.workspace}}/libraries/vcpkg'
OS: windows-2019
MSVC: msvc2019_64
COMPILER: cl
VULKAN_VERSION: 1.3.211.0
QT_VERSION: 5.15.0
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Initialise
run: mkdir build
- name: "Fetch full history for vcpkg submodule"
run: |
cd libraries/vcpkg
git fetch --unshallow
git pull --all
- name: 'Setup vcpkg'
run: ./libraries/vcpkg/bootstrap-vcpkg.bat
- name: 'Setup NuGet Credentials'
shell: 'bash'
run: >
cd build &&
`../libraries/vcpkg/vcpkg fetch nuget | tail -n 1`
sources add
-source "https://nuget.pkg.github.com/decaf-emu/index.json"
-storepasswordincleartext
-name "GitHub"
-username "decaf-emu"
-password "${{ secrets.GITHUB_TOKEN }}"
-Verbosity "detailed"
- name: Load Cached Vulkan SDK
id: cache-vulkan-windows
uses: actions/cache@v1
with:
path: C:/VulkanSDK/${{ env.VULKAN_VERSION }}
key: ${{ runner.os }}-${{ env.VULKAN_VERSION }}
- name: Install Vulkan SDK from web
if: steps.cache-vulkan-windows.outputs.cache-hit != 'true'
shell: powershell
run: |
mkdir "C:\\VulkanSDK"
cd "C:\\VulkanSDK"
Invoke-WebRequest "https://sdk.lunarg.com/sdk/download/${{ env.VULKAN_VERSION }}/windows/VulkanSDK-${{ env.VULKAN_VERSION }}-Installer.exe?u=" -OutFile "VulkanSDK.exe"
Start-Process -FilePath VulkanSDK.exe -Wait -PassThru -ArgumentList @("in --al --da --ao --confirm-command");
cd "C:\\VulkanSDK\\${{ env.VULKAN_VERSION }}"
Remove-Item -Force -Recurse Demos
Remove-Item -Force -Recurse Templates
Remove-Item -Force -Recurse Tools
Remove-Item -Force maintenancetool.exe
Remove-Item -Force Bin\\VkLayer*
Remove-Item -Force Lib\\shaderc*
dir
- name: Load Cached Qt
id: cache-qt-windows
uses: actions/cache@v1
with:
path: C:/Qt/${{ env.QT_VERSION }}/${{ env.MSVC }}
key: ${{ runner.os }}-qt-${{ env.QT_VERSION }}-${{ env.MSVC }}
- name: Install Qt from web
if: steps.cache-qt-windows.outputs.cache-hit != 'true'
shell: powershell
run: |
mkdir "C:\\Qt"
cd "C:\\Qt"
pip install aqtinstall
cmd /c 'python 2>&1' -m aqt install ${{ env.QT_VERSION }} windows desktop win64_${{ env.MSVC }}
dir
- name: Setup Environment
shell: powershell
run: |
echo "VULKAN_SDK=C:\\VulkanSDK\\${{ env.VULKAN_VERSION }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "QTDIR=C:\\Qt\\${{ env.QT_VERSION }}\\${{ env.MSVC }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Configure
shell: cmd
run: |
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../libraries/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-release -DVCPKG_HOST_TRIPLET=x64-windows-release -DCMAKE_BUILD_TYPE=Release -DDECAF_BUILD_TOOLS=ON -DDECAF_VULKAN=ON -DDECAF_QT=ON -DCMAKE_PREFIX_PATH=%QTDIR% -DCMAKE_INSTALL_PREFIX=install ..
- name: Build
run: |
cd build
cmake --build . --config Release -j 2 --target install
- uses: actions/upload-artifact@master
with:
name: decaf-emu-${{ env.OS }}
path: build/install
ubuntu-build:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
env:
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
VCPKG_BUILD_TYPE: 'release'
VCPKG_ROOT: '${{github.workspace}}/libraries/vcpkg'
OS: ubuntu-20.04
MSVC: msvc2019_64
COMPILER: gcc
VERSION: 10
QT_VERSION: 5.15.0
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: cache
uses: actions/cache@v2
with:
path: ~/.ccache
key: build-ccache-${{github.run_id}}
restore-keys: |
build-ccache
- name: Initialise
run: |
mkdir build
- name: Install Dependencies
run: |
cd build
wget -qO - http://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-focal.list http://packages.lunarg.com/vulkan/lunarg-vulkan-focal.list
sudo apt-add-repository ppa:cginternals/ppa
sudo apt-get update
sudo apt-get install -y cmake ccache vulkan-sdk python3-setuptools mesa-common-dev libglu1-mesa-dev ninja-build libcurl4-openssl-dev libsdl2-dev libssl-dev zlib1g-dev libuv1-dev libc-ares-dev libavcodec-dev libavfilter-dev libavutil-dev libswscale-dev
if [ "${{ env.COMPILER }}" = "gcc" ]; then
sudo apt-get install -y g++-${{ env.VERSION }}
else
sudo apt-get install -y clang-${{ env.VERSION }}
fi
pip3 install wheel
pip3 install aqtinstall
python3 -m aqt install ${{ env.QT_VERSION }} linux desktop
PELFVER=0.12
curl -sSfLO https://github.com/NixOS/patchelf/releases/download/${PELFVER}/patchelf-${PELFVER}.tar.bz2
tar xvf patchelf-${PELFVER}.tar.bz2
cd patchelf-${PELFVER}*/
./configure
make && sudo make install
cd ../
- name: Setup Environment
run: |
if [ "${{ env.COMPILER }}" = "gcc" ]; then
echo "CC=gcc-${{ env.VERSION }}" >> $GITHUB_ENV
echo "CXX=g++-${{ env.VERSION }}" >> $GITHUB_ENV
else
echo "CC=clang-${{ env.VERSION }}" >> $GITHUB_ENV
echo "CXX=clang++-${{ env.VERSION}}" >> $GITHUB_ENV
fi
echo "QTDIR=$PWD/build/${{ env.QT_VERSION }}/gcc_64" >> $GITHUB_ENV
echo "VULKAN_SDK=$PWD/vulkan" >> $GITHUB_ENV
- name: Configure
run: |
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DDECAF_BUILD_TOOLS=ON -DDECAF_VULKAN=ON -DDECAF_QT=ON -DCMAKE_PREFIX_PATH=$QTDIR -DCMAKE_INSTALL_PREFIX=install ..
- name: Build
run: |
cd build
cmake --build . --config Release -j 2 --target install
- uses: actions/upload-artifact@master
with:
name: decaf-emu-${{ env.OS }}
path: build/install
create-release:
needs: [windows-build, ubuntu-build]
runs-on: "ubuntu-20.04"
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v2
- name: Download Artifacts
uses: actions/download-artifact@v2
- name: Upload
shell: bash
run: |
if [[ -e decaf-emu-appimage ]]; then
mv decaf-emu-appimage artifacts
else
mkdir artifacts
fi
files=$(find . -name "decaf-emu-*" ! -iname "*.zip" -type d)
for f in $files; do
echo "Compressing $f"
(cd $(basename $f) && zip -r ../artifacts/$(basename $f).zip *)
done
ls -al artifacts/
wget -c https://github.com/tcnksm/ghr/releases/download/v0.14.0/ghr_v0.14.0_linux_amd64.tar.gz
tar xfv ghr_v0.14.0_linux_amd64.tar.gz
ghr_v0.14.0_linux_amd64/ghr -u ${{ github.repository_owner }} -r decaf-emu -recreate -n 'decaf-emu CI builds' -b "Corresponding commit: ${{ github.sha }}" release artifacts/
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .gitignore
================================================
build/
dump/
mlc/
slc/
hfio/
sdcard/
docs/
.vs/
*.txt
!CMakeLists.txt
*.elf
*.rpx
*.o
!tests/hle/bin/*.rpx
================================================
FILE: .gitmodules
================================================
[submodule "libraries/pugixml"]
path = libraries/pugixml
url = https://github.com/zeux/pugixml.git
[submodule "libraries/libbinrec"]
path = libraries/libbinrec
url = https://github.com/decaf-emu/libbinrec.git
[submodule "libraries/spdlog"]
path = libraries/spdlog
url = https://github.com/gabime/spdlog.git
[submodule "libraries/cereal"]
path = libraries/cereal
url = https://github.com/USCiLab/cereal.git
[submodule "libraries/ovsocket"]
path = libraries/ovsocket
url = https://github.com/exjam/ovsocket.git
[submodule "libraries/gsl-lite"]
path = libraries/gsl-lite
url = https://github.com/gsl-lite/gsl-lite
[submodule "libraries/addrlib"]
path = libraries/addrlib
url = https://github.com/decaf-emu/addrlib.git
[submodule "libraries/excmd"]
path = libraries/excmd
url = https://github.com/exjam/excmd
[submodule "libraries/imgui"]
path = libraries/imgui
url = https://github.com/ocornut/imgui.git
[submodule "libraries/cnl"]
path = libraries/cnl
url = https://github.com/johnmcfarlane/cnl
[submodule "libraries/catch"]
path = libraries/catch
url = https://github.com/philsquared/Catch.git
[submodule "libraries/cpp-peglib"]
path = libraries/cpp-peglib
url = https://github.com/yhirose/cpp-peglib.git
[submodule "libraries/fmt"]
path = libraries/fmt
url = https://github.com/fmtlib/fmt.git
[submodule "libraries/glslang"]
path = libraries/glslang
url = https://github.com/KhronosGroup/glslang.git
[submodule "libraries/qtads"]
path = libraries/qtads
url = https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
[submodule "libraries/tomlplusplus"]
path = libraries/tomlplusplus
url = https://github.com/marzer/tomlplusplus.git
[submodule "libraries/vcpkg"]
path = libraries/vcpkg
url = https://github.com/microsoft/vcpkg.git
================================================
FILE: BUILDING.md
================================================
# Building decaf-emu from source
- [Windows](#windows)
- [Linux](#Linux)
- [MacOS](#MacOS)
- [CMake](#CMake)
- [Troubleshooting](#Troubleshooting)
## Windows
### Dependencies
Required:
- [Visual Studio 2019](https://visualstudio.microsoft.com/vs/community/)
- [CMake](https://cmake.org/)
- [Vulkan SDK](https://vulkan.lunarg.com/sdk/home)
Optional:
- [Qt 5.15+ / 6+] (https://www.qt.io/download-qt-installer), disable by using `-DDECAF_QT=OFF`
### Building
- `git clone --recursive https://github.com/decaf-emu/decaf-emu.git`
Use cmake-gui to generate a VS project file:
- Set `Where is the source code` to `[path to decaf-emu.git]`
- Set `Where to build the binaries` to `[path to decaf-emu.git]/build`
- Click `Add Entry` and set `Name: CMAKE_PREFIX_PATH`, `Type: PATH`, `Value` to a Qt5 or Qt6 installation directory, e.g. `Value: C:\Qt\5.15.2\msvc2019_64`
- Click `Configure`
- Ensure `Specify the generator for this project` is set to a version of Visual Studio installed on your computer
- Select `Specify toolchain for cross-compiling`
- Click `Next`
- Set `Specify the toolchain file` to `[path to decaf-emu.git]/libraries/vcpkg/scripts/buildsystems/vcpkg.cmake`
- Click `Finish`
- Configure will run, which may take a while as vcpkg acquires the dependencies, if all works the console should say `Configuring done`
- Click `Generate`, if all works the console should say `Generating done`
- Click `Open Project` to open the generated project in Visual sStudio where you can develop and build.
## Linux
### Dependencies
Required:
- A modern C++17 friendly compiler such as g++9
- CMake
Required dependencies which can be acquired from system or vcpkg:
- c-ares
- curl
- ffmpeg
- libuv
- openssl
- sdl2
- zlib
For some systems, these can be installed with:
- `apt install cmake libcurl4-openssl-dev libsdl2-dev libssl-dev zlib1g-dev libuv1-dev libc-ares-dev libavcodec-dev libavfilter-dev libavutil-dev libswscale-dev`
Optional:
- [Vulkan SDK](https://vulkan.lunarg.com/sdk/home), disable by using `-DDECAF_VULKAN=OFF`
- [Qt 5.15+ / 6+] (https://www.qt.io/download-qt-installer), disable by using `-DDECAF_QT=OFF`
For some systems, Qt can be installed with:
- `apt install qtbase5-dev qtbase5-private-dev libqt5svg5-dev libqt5x11extras5-dev mesa-common-dev libglu1-mesa-dev`
### Building
- `git clone --recursive https://github.com/decaf-emu/decaf-emu.git`
- `cd decaf-emu`
- `mkdir build`
- `cd build`
- `cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ../`
- `make`
You might want to use `cmake -G Ninja <...>` and build with Ninja instead of Make for faster builds.
## MacOS
Currently decaf-emu can build on MacOS using Xcode 11 although MoltenVK is missing crucial features which will prevent most games from rendering correctly, e.g. geometry shaders, transform feedback, logic op support, unrestricted depth range. This means the platform should be considered as unsupported.
## CMake
Options interesting to users:
- DECAF_FFMPEG - Build with ffmpeg which is used for decoding h264 videos
- DECAF_QT - Build with Qt frontend.
- DECAF_VULKAN - Build with Vulkan backend.
Options interesting to developers:
- DECAF_BUILD_TESTS - Build tests.
- DECAF_BUILD_TOOLS - Build tools.
- DECAF_GIT_VERSION - Set this to OFF to disable generating a header with current git version to avoid rebuilding decaf_log.cpp when you do commits locally.
- DECAF_PCH - Enable / disable pch (requires CMake v3.16)
- DECAF_JIT_PROFILING - Build with JIT profiling support.
- DECAF_VALGRIND - Build with Valgrind
## Troubleshooting
decaf-emu builds on github actions CI - so a good reference on how to build is always the CI script itself [.github/workflows/ccpp.yml](https://github.com/decaf-emu/decaf-emu/blob/master/.github/workflows/ccpp.yml)
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.2)
project(decaf-emu C CXX)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake OPTIONAL RESULT_VARIABLE USING_CONAN)
if(USING_CONAN)
conan_basic_setup(NO_OUTPUT_DIRS)
endif()
# Disable PCH by default on older versions of CMake
if(${CMAKE_VERSION} VERSION_LESS "3.16.0")
set(DECAF_PCH_DEFAULT OFF)
message(WARNING "You are using a CMake which does not support PCH (<3.16). This will adversely affect compile times.")
else()
set(DECAF_PCH_DEFAULT ON)
endif()
option(DECAF_FFMPEG "Build with ffmpeg support" ON)
option(DECAF_VULKAN "Build with Vulkan rendering support" ON)
option(DECAF_QT "Build with Qt support" ON)
option(DECAF_BUILD_TESTS "Build tests" OFF)
option(DECAF_BUILD_TOOLS "Build tools" OFF)
option(DECAF_GIT_VERSION "Generate a version header from git state" ON)
option(DECAF_JIT_PROFILING "Build with JIT profiling support" OFF)
option(DECAF_VALGRIND "Build with Valgrind support" OFF)
option(DECAF_PCH "Build with precompiled headers" ${DECAF_PCH_DEFAULT})
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/obj)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/obj)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/obj)
# Setup install directories
include(GNUInstallDirs)
if(WIN32)
set(DECAF_INSTALL_BINDIR "${CMAKE_INSTALL_PREFIX}")
set(DECAF_INSTALL_DOCSDIR "${CMAKE_INSTALL_PREFIX}")
set(DECAF_INSTALL_RESOURCESDIR "${CMAKE_INSTALL_PREFIX}/resources")
else()
set(DECAF_INSTALL_BINDIR "${CMAKE_INSTALL_BINDIR}")
set(DECAF_INSTALL_DOCSDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
set(DECAF_INSTALL_RESOURCESDIR "${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/resources")
endif()
if(DECAF_JIT_PROFILING)
add_definitions(-DDECAF_JIT_ALLOW_PROFILING)
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
find_package(XCB QUIET)
find_package(X11 QUIET)
find_package(WAYLAND QUIET)
if(${XCB_FOUND})
add_definitions(-DDECAF_PLATFORM_XCB)
set(DECAF_PLATFORM_XCB TRUE)
endif()
if(${X11_FOUND})
add_definitions(-DDECAF_PLATFORM_XLIB)
set(DECAF_PLATFORM_XLIB TRUE)
endif()
if(${WAYLAND_FOUND})
add_definitions(-DDECAF_PLATFORM_WAYLAND)
set(DECAF_PLATFORM_WAYLAND TRUE)
endif()
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
add_definitions(-DDECAF_PLATFORM_COCOA)
set(DECAF_PLATFORM_COCOA TRUE)
endif()
find_package(Threads REQUIRED)
if(VCPKG_TARGET_TRIPLET)
find_package(c-ares CONFIG REQUIRED)
find_package(CURL CONFIG REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(SDL2 CONFIG REQUIRED)
find_package(libuv CONFIG REQUIRED)
find_package(ZLIB REQUIRED)
set(CARES_LIBRARY c-ares::cares)
set(CURL_LIBRARY CURL::libcurl)
set(LIBUV_LIBRARY libuv::uv)
set(OPENSSL_LIBRARY OpenSSL::SSL)
set(SDL2_LIBRARY SDL2::SDL2)
set(SDL2_MAIN_LIBRARY SDL2::SDL2main)
set(ZLIB_LIBRARY ZLIB::ZLIB)
else()
find_package(CARES REQUIRED)
find_package(CURL REQUIRED)
find_package(LibUV REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(SDL2 REQUIRED)
find_package(ZLIB REQUIRED)
set(CARES_LIBRARY CARES::CARES)
set(CURL_LIBRARY CURL::libcurl)
set(LIBUV_LIBRARY LibUV::LibUV)
set(OPENSSL_LIBRARY OpenSSL::SSL)
set(SDL2_LIBRARY SDL2::SDL2)
set(SDL2_MAIN_LIBRARY SDL2::SDL2main)
set(ZLIB_LIBRARY ZLIB::ZLIB)
endif()
if(DECAF_FFMPEG)
find_package(FFMPEG REQUIRED)
set(FFMPEG_LIBRARY FFMPEG::AVCODEC FFMPEG::AVFILTER FFMPEG::AVUTIL FFMPEG::SWSCALE)
add_definitions(-DDECAF_FFMPEG)
endif()
# TODO: Remove this definitions as it is no longer optional
add_definitions(-DDECAF_SDL)
if(DECAF_VULKAN)
find_package(Vulkan 1.1.106.0 REQUIRED) # Vulkan_INCLUDE_DIRS and Vulkan_LIBRARIES
add_library(vulkan INTERFACE IMPORTED)
set_target_properties(vulkan PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${Vulkan_INCLUDE_DIRS}
INTERFACE_LINK_LIBRARIES ${Vulkan_LIBRARIES})
add_definitions(-DVULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL=0)
if(MSVC)
add_definitions(-DVK_USE_PLATFORM_WIN32_KHR)
endif()
if(DECAF_PLATFORM_XCB)
add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
endif()
if(DECAF_PLATFORM_XLIB)
add_definitions(-DVK_USE_PLATFORM_XLIB_KHR)
endif()
if(DECAF_PLATFORM_WAYLAND)
add_definitions(-DVK_USE_PLATFORM_WAYLAND_KHR)
endif()
if(DECAF_PLATFORM_COCOA)
add_definitions(-DVK_USE_PLATFORM_MACOS_MVK)
endif()
add_definitions(-DDECAF_VULKAN)
endif()
if(DECAF_VALGRIND)
add_definitions(-DDECAF_VALGRIND)
endif()
if(DECAF_QT)
find_package(Qt6 COMPONENTS Core Concurrent Widgets Svg SvgWidgets Xml)
if(NOT Qt6_FOUND)
find_package(Qt5 5.15 COMPONENTS Core Concurrent Widgets Svg Xml REQUIRED)
endif()
set(QT_DIR Qt${QT_VERSION_MAJOR}_DIR)
add_definitions(-DDECAF_QT)
endif()
# Build third party libraries
add_subdirectory("libraries")
# Setup compile options
if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++latest")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /permissive-")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /FS") # Parallel source builds
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GA") # Optimises TLS access
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") # Lets be specific about warnings
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd26812") # Allow unscoped enums
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4201") # Allow the use of unnamed structs/unions
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4100") # Allow unreferenced formal parameters
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4366") # Allow unaligned uint64_t (permitted on x64)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4324") # Disable structure padding warnings
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4297") # Disable nothrow warning, VulkanSDK engineers dont know how to code
# Link time code generation
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL")
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG")
add_definitions(-DNOMINMAX)
add_definitions(-DUNICODE -D_UNICODE)
# Disable warnings about using non-portable string function variants
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
# Disable warnings about using deprecated std::wstring_convert
add_definitions(-D_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING)
# Disable linker warnins about missing PDBs
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ignore:4099")
# Set minimum windows version to enable newer APIs
add_definitions(-D_WIN32_WINNT=0x0600 -DWINVER=0x0600)
else()
add_definitions(-DDECAF_USE_STDLAYOUT_BITFIELD)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof")
if(APPLE)
add_definitions(-D_DARWIN_C_SOURCE)
else()
link_libraries(stdc++fs)
endif()
endif()
# Macro to map filters to folder structure for MSVC projects
macro(GroupSources groupname curdir)
if(MSVC)
file(GLOB children RELATIVE ${PROJECT_SOURCE_DIR}/${curdir} ${PROJECT_SOURCE_DIR}/${curdir}/*)
foreach(child ${children})
if(IS_DIRECTORY ${PROJECT_SOURCE_DIR}/${curdir}/${child})
GroupSources(${rootname} ${groupname}/${child} ${curdir}/${child})
else()
string(REPLACE "/" "\\" safegroupname ${groupname})
source_group(${safegroupname} FILES ${PROJECT_SOURCE_DIR}/${rootdir}${curdir}/${child})
endif()
endforeach()
endif()
endmacro()
macro(AutoGroupPCHFiles)
if(MSVC)
source_group("CMake PCH" FILES
"${PROJECT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}.dir/cmake_pch.hxx"
"${PROJECT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}.dir/cmake_pch.cxx")
endif()
endmacro()
if(DECAF_GIT_VERSION)
# Generate build information
include(GetGitRevisionDescription)
function(get_timestamp _var)
string(TIMESTAMP timestamp UTC)
set(${_var} "${timestamp}" PARENT_SCOPE)
endfunction()
get_git_head_revision(GIT_REF_SPEC GIT_REV)
git_describe(GIT_DESC --always --long --dirty)
git_branch_name(GIT_BRANCH)
get_timestamp(BUILD_DATE)
set(BUILD_VERSION "0")
if ($ENV{CI})
if ($ENV{TRAVIS})
set(BUILD_TAG $ENV{TRAVIS_TAG})
elseif($ENV{APPVEYOR})
set(BUILD_TAG $ENV{APPVEYOR_REPO_TAG_NAME})
endif()
if (BUILD_TAG)
string(REGEX MATCH "${CMAKE_MATCH_1}-([0-9]+)" OUTVAR ${BUILD_TAG})
if (${CMAKE_MATCH_COUNT} GREATER 0)
set(BUILD_VERSION ${CMAKE_MATCH_1})
endif()
endif()
endif()
else()
set(GIT_REV "local")
set(BUILD_NAME "decaf-emu")
set(BUILD_VERSION "0")
endif()
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/decaf_buildinfo.h.in"
"${CMAKE_CURRENT_BINARY_DIR}/generated/decaf_buildinfo.h" @ONLY)
include_directories("${CMAKE_CURRENT_BINARY_DIR}/generated")
add_subdirectory("src")
add_subdirectory("resources")
if(DECAF_BUILD_TOOLS)
add_subdirectory("tools")
endif()
if(DECAF_BUILD_TESTS)
enable_testing()
add_subdirectory("tests")
endif()
================================================
FILE: CMakeModules/FindCARES.cmake
================================================
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#
# This is a slight edited version of FindLIBUV.cmake :)
#[=======================================================================[.rst:
FindCARES
---------
Find c-ares includes and library.
Imported Targets
^^^^^^^^^^^^^^^^
An :ref:`imported target <Imported targets>` named
``CARES::CARES`` is provided if c-ares has been found.
Result Variables
^^^^^^^^^^^^^^^^
This module defines the following variables:
``CARES_FOUND``
True if c-ares was found, false otherwise.
``CARES_INCLUDE_DIRS``
Include directories needed to include c-ares headers.
``CARES_LIBRARIES``
Libraries needed to link to c-ares.
``CARES_VERSION``
The version of c-ares found.
``CARES_VERSION_MAJOR``
The major version of c-ares.
``CARES_VERSION_MINOR``
The minor version of c-ares.
``CARES_VERSION_PATCH``
The patch version of c-ares.
Cache Variables
^^^^^^^^^^^^^^^
This module uses the following cache variables:
``CARES_LIBRARY``
The location of the c-ares library file.
``CARES_INCLUDE_DIR``
The location of the c-ares include directory containing ``ares.h``.
The cache variables should not be used by project code.
They may be set by end users to point at c-ares components.
#]=======================================================================]
set(CARES_NAMES ${CARES_NAMES} cares)
#-----------------------------------------------------------------------------
find_library(CARES_LIBRARY
NAMES ${CARES_NAMES}
)
mark_as_advanced(CARES_LIBRARY)
find_path(CARES_INCLUDE_DIR
NAMES ares.h
)
mark_as_advanced(CARES_INCLUDE_DIR)
#-----------------------------------------------------------------------------
# Extract version number if possible.
set(_CARES_H_REGEX "#[ \t]*define[ \t]+ARES_VERSION_(MAJOR|MINOR|PATCH)[ \t]+[0-9]+")
if(CARES_INCLUDE_DIR AND EXISTS "${CARES_INCLUDE_DIR}/ares_version.h")
file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _CARES_H REGEX "${_CARES_H_REGEX}")
else()
set(_CARES_H "")
endif()
foreach(c MAJOR MINOR PATCH)
if(_CARES_H MATCHES "#[ \t]*define[ \t]+ARES_VERSION_${c}[ \t]+([0-9]+)")
set(_CARES_VERSION_${c} "${CMAKE_MATCH_1}")
else()
unset(_CARES_VERSION_${c})
endif()
endforeach()
if(DEFINED _CARES_VERSION_MAJOR AND DEFINED _CARES_VERSION_MINOR)
set(CARES_VERSION_MAJOR "${_CARES_VERSION_MAJOR}")
set(CARES_VERSION_MINOR "${_CARES_VERSION_MINOR}")
set(CARES_VERSION "${CARES_VERSION_MAJOR}.${CARES_VERSION_MINOR}")
if(DEFINED _CARES_VERSION_PATCH)
set(CARES_VERSION_PATCH "${_CARES_VERSION_PATCH}")
set(CARES_VERSION "${CARES_VERSION}.${CARES_VERSION_PATCH}")
else()
unset(CARES_VERSION_PATCH)
endif()
else()
set(CARES_VERSION_MAJOR "")
set(CARES_VERSION_MINOR "")
set(CARES_VERSION_PATCH "")
set(CARES_VERSION "")
endif()
unset(_CARES_VERSION_MAJOR)
unset(_CARES_VERSION_MINOR)
unset(_CARES_VERSION_PATCH)
unset(_CARES_H_REGEX)
unset(_CARES_H)
#-----------------------------------------------------------------------------
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CARES
FOUND_VAR CARES_FOUND
REQUIRED_VARS CARES_LIBRARY CARES_INCLUDE_DIR
VERSION_VAR CARES_VERSION
)
set(CARES_FOUND ${CARES_FOUND})
#-----------------------------------------------------------------------------
# Provide documented result variables and targets.
if(CARES_FOUND)
set(CARES_INCLUDE_DIRS ${CARES_INCLUDE_DIR})
set(CARES_LIBRARIES ${CARES_LIBRARY})
if(NOT TARGET CARES::CARES)
add_library(CARES::CARES UNKNOWN IMPORTED)
set_target_properties(CARES::CARES PROPERTIES
IMPORTED_LOCATION "${CARES_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${CARES_INCLUDE_DIRS}"
)
endif()
endif()
================================================
FILE: CMakeModules/FindFFMPEG.cmake
================================================
macro(find_component COMPONENT LIBRARY HEADER)
find_path(${COMPONENT}_INCLUDE_DIR NAMES "${HEADER}" HINTS "/usr/include/ffmpeg")
find_library(${COMPONENT}_LIBRARY NAMES "${LIBRARY}")
if(${COMPONENT}_INCLUDE_DIR AND ${COMPONENT}_LIBRARY)
set(${COMPONENT}_FOUND TRUE)
if(NOT TARGET FFMPEG::${COMPONENT})
add_library(FFMPEG::${COMPONENT} UNKNOWN IMPORTED)
set_target_properties(FFMPEG::${COMPONENT} PROPERTIES
IMPORTED_LOCATION "${${COMPONENT}_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${${COMPONENT}_INCLUDE_DIR}")
endif()
else()
set(${COMPONENT}_FOUND FALSE)
endif()
endmacro()
find_component(AVCODEC "avcodec" "libavcodec/avcodec.h")
find_component(AVFILTER "avfilter" "libavfilter/avfilter.h")
find_component(AVUTIL "avutil" "libavutil/avutil.h")
find_component(SWSCALE "swscale" "libswscale/swscale.h")
================================================
FILE: CMakeModules/FindLibUV.cmake
================================================
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
FindLibUV
---------
Find libuv includes and library.
Imported Targets
^^^^^^^^^^^^^^^^
An :ref:`imported target <Imported targets>` named
``LibUV::LibUV`` is provided if libuv has been found.
Result Variables
^^^^^^^^^^^^^^^^
This module defines the following variables:
``LibUV_FOUND``
True if libuv was found, false otherwise.
``LibUV_INCLUDE_DIRS``
Include directories needed to include libuv headers.
``LibUV_LIBRARIES``
Libraries needed to link to libuv.
``LibUV_VERSION``
The version of libuv found.
``LibUV_VERSION_MAJOR``
The major version of libuv.
``LibUV_VERSION_MINOR``
The minor version of libuv.
``LibUV_VERSION_PATCH``
The patch version of libuv.
Cache Variables
^^^^^^^^^^^^^^^
This module uses the following cache variables:
``LibUV_LIBRARY``
The location of the libuv library file.
``LibUV_INCLUDE_DIR``
The location of the libuv include directory containing ``uv.h``.
The cache variables should not be used by project code.
They may be set by end users to point at libuv components.
#]=======================================================================]
#-----------------------------------------------------------------------------
find_library(LibUV_LIBRARY
NAMES uv uv_a libuv
)
mark_as_advanced(LibUV_LIBRARY)
find_path(LibUV_INCLUDE_DIR
NAMES uv.h
)
mark_as_advanced(LibUV_INCLUDE_DIR)
#-----------------------------------------------------------------------------
# Extract version number if possible.
set(_LibUV_H_REGEX "#[ \t]*define[ \t]+UV_VERSION_(MAJOR|MINOR|PATCH)[ \t]+[0-9]+")
if(LibUV_INCLUDE_DIR AND EXISTS "${LibUV_INCLUDE_DIR}/uv-version.h")
file(STRINGS "${LibUV_INCLUDE_DIR}/uv-version.h" _LibUV_H REGEX "${_LibUV_H_REGEX}")
elseif(LibUV_INCLUDE_DIR AND EXISTS "${LibUV_INCLUDE_DIR}/uv/version.h")
file(STRINGS "${LibUV_INCLUDE_DIR}/uv/version.h" _LibUV_H REGEX "${_LibUV_H_REGEX}")
elseif(LibUV_INCLUDE_DIR AND EXISTS "${LibUV_INCLUDE_DIR}/uv.h")
file(STRINGS "${LibUV_INCLUDE_DIR}/uv.h" _LibUV_H REGEX "${_LibUV_H_REGEX}")
else()
set(_LibUV_H "")
endif()
foreach(c MAJOR MINOR PATCH)
if(_LibUV_H MATCHES "#[ \t]*define[ \t]+UV_VERSION_${c}[ \t]+([0-9]+)")
set(_LibUV_VERSION_${c} "${CMAKE_MATCH_1}")
else()
unset(_LibUV_VERSION_${c})
endif()
endforeach()
if(DEFINED _LibUV_VERSION_MAJOR AND DEFINED _LibUV_VERSION_MINOR)
set(LibUV_VERSION_MAJOR "${_LibUV_VERSION_MAJOR}")
set(LibUV_VERSION_MINOR "${_LibUV_VERSION_MINOR}")
set(LibUV_VERSION "${LibUV_VERSION_MAJOR}.${LibUV_VERSION_MINOR}")
if(DEFINED _LibUV_VERSION_PATCH)
set(LibUV_VERSION_PATCH "${_LibUV_VERSION_PATCH}")
set(LibUV_VERSION "${LibUV_VERSION}.${LibUV_VERSION_PATCH}")
else()
unset(LibUV_VERSION_PATCH)
endif()
else()
set(LibUV_VERSION_MAJOR "")
set(LibUV_VERSION_MINOR "")
set(LibUV_VERSION_PATCH "")
set(LibUV_VERSION "")
endif()
unset(_LibUV_VERSION_MAJOR)
unset(_LibUV_VERSION_MINOR)
unset(_LibUV_VERSION_PATCH)
unset(_LibUV_H_REGEX)
unset(_LibUV_H)
#-----------------------------------------------------------------------------
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibUV
FOUND_VAR LibUV_FOUND
REQUIRED_VARS LibUV_LIBRARY LibUV_INCLUDE_DIR
VERSION_VAR LibUV_VERSION
)
set(LIBUV_FOUND ${LibUV_FOUND})
#-----------------------------------------------------------------------------
# Provide documented result variables and targets.
if(LibUV_FOUND)
set(LibUV_INCLUDE_DIRS ${LibUV_INCLUDE_DIR})
set(LibUV_LIBRARIES ${LibUV_LIBRARY})
if(NOT TARGET LibUV::LibUV)
add_library(LibUV::LibUV UNKNOWN IMPORTED)
set_target_properties(LibUV::LibUV PROPERTIES
IMPORTED_LOCATION "${LibUV_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${LibUV_INCLUDE_DIRS}"
)
endif()
endif()
================================================
FILE: CMakeModules/FindSDL2.cmake
================================================
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#.rst:
# FindSDL2
# -------
#
# Locate SDL2 library
#
# This module defines
#
# ::
#
# SDL2_LIBRARY, the name of the library to link against
# SDL2_FOUND, if false, do not try to link to SDL
# SDL2_INCLUDE_DIR, where to find SDL.h
# SDL2_VERSION_STRING, human-readable string containing the version of SDL
#
#
#
# This module responds to the flag:
#
# ::
#
# SDL2_BUILDING_LIBRARY
# If this is defined, then no SDL2_main will be linked in because
# only applications need main().
# Otherwise, it is assumed you are building an application and this
# module will attempt to locate and set the proper link flags
# as part of the returned SDL2_LIBRARY variable.
#
#
#
# Don't forget to include SDLmain.h and SDLmain.m your project for the
# OS X framework based version. (Other versions link to -lSDLmain which
# this module will try to find on your behalf.) Also for OS X, this
# module will automatically add the -framework Cocoa on your behalf.
#
#
#
# Additional Note: If you see an empty SDL2_LIBRARY_TEMP in your
# configuration and no SDL2_LIBRARY, it means CMake did not find your SDL
# library (SDL.dll, libsdl.so, SDL.framework, etc). Set
# SDL2_LIBRARY_TEMP to point to your SDL library, and configure again.
# Similarly, if you see an empty SDLMAIN_LIBRARY, you should set this
# value as appropriate. These values are used to generate the final
# SDL2_LIBRARY variable, but when these values are unset, SDL2_LIBRARY
# does not get created.
#
#
#
# $SDLDIR is an environment variable that would correspond to the
# ./configure --prefix=$SDLDIR used in building SDL. l.e.galup 9-20-02
#
# Modified by Eric Wing. Added code to assist with automated building
# by using environmental variables and providing a more
# controlled/consistent search behavior. Added new modifications to
# recognize OS X frameworks and additional Unix paths (FreeBSD, etc).
# Also corrected the header search path to follow "proper" SDL
# guidelines. Added a search for SDLmain which is needed by some
# platforms. Added a search for threads which is needed by some
# platforms. Added needed compile switches for MinGW.
#
# On OSX, this will prefer the Framework version (if found) over others.
# People will have to manually change the cache values of SDL2_LIBRARY to
# override this selection or set the CMake environment
# CMAKE_INCLUDE_PATH to modify the search paths.
#
# Note that the header path has changed from SDL/SDL.h to just SDL.h
# This needed to change because "proper" SDL convention is #include
# "SDL.h", not <SDL/SDL.h>. This is done for portability reasons
# because not all systems place things in SDL/ (see FreeBSD).
if(NOT SDL2_DIR)
set(SDL2_DIR "" CACHE PATH "SDL2 directory")
endif()
find_path(SDL2_INCLUDE_DIR SDL.h
HINTS
ENV SDLDIR
${SDL2_DIR}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDLDIR}
include/SDL2 include
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# SDL-1.1 is the name used by FreeBSD ports...
# don't confuse it for the version number.
find_library(SDL2_LIBRARY_TEMP
NAMES SDL2
HINTS
ENV SDLDIR
${SDL2_DIR}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
)
# Hide this cache variable from the user, it's an internal implementation
# detail. The documented library variable for the user is SDL2_LIBRARY
# which is derived from SDL2_LIBRARY_TEMP further below.
set_property(CACHE SDL2_LIBRARY_TEMP PROPERTY TYPE INTERNAL)
if(NOT SDL2_BUILDING_LIBRARY)
if(NOT SDL2_INCLUDE_DIR MATCHES ".framework")
# Non-OS X framework versions expect you to also dynamically link to
# SDLmain. This is mainly for Windows and OS X. Other (Unix) platforms
# seem to provide SDLmain for compatibility even though they don't
# necessarily need it.
find_library(SDL2MAIN_LIBRARY
NAMES SDL2main
HINTS
ENV SDLDIR
${SDL2_DIR}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS
/sw
/opt/local
/opt/csw
/opt
)
endif()
endif()
# SDL may require threads on your system.
# The Apple build may not need an explicit flag because one of the
# frameworks may already provide it.
# But for non-OSX systems, I will use the CMake Threads package.
if(NOT APPLE)
find_package(Threads)
endif()
# MinGW needs an additional link flag, -mwindows
# It's total link flags should look like -lmingw32 -lSDLmain -lSDL -mwindows
if(MINGW)
set(MINGW32_LIBRARY mingw32 "-mwindows" CACHE STRING "link flags for MinGW")
endif()
if(SDL2_LIBRARY_TEMP)
# For SDLmain
if(SDL2MAIN_LIBRARY AND NOT SDL2_BUILDING_LIBRARY)
list(FIND SDL2_LIBRARY_TEMP "${SDL2MAIN_LIBRARY}" _SDL2_MAIN_INDEX)
if(_SDL2_MAIN_INDEX EQUAL -1)
set(SDL2_LIBRARY_TEMP "${SDL2MAIN_LIBRARY}" ${SDL2_LIBRARY_TEMP})
endif()
unset(_SDL2_MAIN_INDEX)
endif()
# For OS X, SDL uses Cocoa as a backend so it must link to Cocoa.
# CMake doesn't display the -framework Cocoa string in the UI even
# though it actually is there if I modify a pre-used variable.
# I think it has something to do with the CACHE STRING.
# So I use a temporary variable until the end so I can set the
# "real" variable in one-shot.
if(APPLE)
set(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} "-framework Cocoa")
endif()
# For threads, as mentioned Apple doesn't need this.
# In fact, there seems to be a problem if I used the Threads package
# and try using this line, so I'm just skipping it entirely for OS X.
if(NOT APPLE)
set(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT})
endif()
# For MinGW library
if(MINGW)
set(SDL2_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL2_LIBRARY_TEMP})
endif()
if(WIN32 AND NOT WINDOWS_STORE AND NOT WINDOWS_PHONE)
set(SDL2_LIBRARY_TEMP winmm imm32 version msimg32 ${SDL2_LIBRARY_TEMP})
endif(WIN32 AND NOT WINDOWS_STORE AND NOT WINDOWS_PHONE)
# Set the final string here so the GUI reflects the final state.
set(SDL2_LIBRARY ${SDL2_LIBRARY_TEMP} CACHE STRING "Where the SDL Library can be found")
endif()
if(SDL2_INCLUDE_DIR AND EXISTS "${SDL2_INCLUDE_DIR}/SDL2_version.h")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL2_version.h" SDL2_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL2_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL2_version.h" SDL2_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL2_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL2_version.h" SDL2_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL2_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL2_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MAJOR "${SDL2_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MINOR "${SDL2_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_PATCH "${SDL2_VERSION_PATCH_LINE}")
set(SDL2_VERSION_STRING ${SDL2_VERSION_MAJOR}.${SDL2_VERSION_MINOR}.${SDL2_VERSION_PATCH})
unset(SDL2_VERSION_MAJOR_LINE)
unset(SDL2_VERSION_MINOR_LINE)
unset(SDL2_VERSION_PATCH_LINE)
unset(SDL2_VERSION_MAJOR)
unset(SDL2_VERSION_MINOR)
unset(SDL2_VERSION_PATCH)
endif()
set(SDL2_LIBRARIES ${SDL2_LIBRARY})
set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIR})
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL
REQUIRED_VARS SDL2_LIBRARIES SDL2_INCLUDE_DIRS
VERSION_VAR SDL2_VERSION_STRING)
mark_as_advanced(SDL2_LIBRARY SDL2_INCLUDE_DIR)
================================================
FILE: CMakeModules/FindWAYLAND.cmake
================================================
# Try to find Wayland on a Unix system
#
# This will define:
#
# WAYLAND_FOUND - True if Wayland is found
# WAYLAND_LIBRARIES - Link these to use Wayland
# WAYLAND_INCLUDE_DIR - Include directory for Wayland
# WAYLAND_DEFINITIONS - Compiler flags for using Wayland
#
# In addition the following more fine grained variables will be defined:
#
# WAYLAND_CLIENT_FOUND WAYLAND_CLIENT_INCLUDE_DIR WAYLAND_CLIENT_LIBRARIES
# WAYLAND_SERVER_FOUND WAYLAND_SERVER_INCLUDE_DIR WAYLAND_SERVER_LIBRARIES
# WAYLAND_EGL_FOUND WAYLAND_EGL_INCLUDE_DIR WAYLAND_EGL_LIBRARIES
#
# Copyright (c) 2013 Martin Gräßlin <mgraesslin@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
IF (NOT WIN32)
IF (WAYLAND_INCLUDE_DIR AND WAYLAND_LIBRARIES)
# In the cache already
SET(WAYLAND_FIND_QUIETLY TRUE)
ENDIF ()
# Use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(PKG_WAYLAND QUIET wayland-client wayland-server wayland-egl wayland-cursor)
SET(WAYLAND_DEFINITIONS ${PKG_WAYLAND_CFLAGS})
FIND_PATH(WAYLAND_CLIENT_INCLUDE_DIR NAMES wayland-client.h HINTS ${PKG_WAYLAND_INCLUDE_DIRS})
FIND_PATH(WAYLAND_SERVER_INCLUDE_DIR NAMES wayland-server.h HINTS ${PKG_WAYLAND_INCLUDE_DIRS})
FIND_PATH(WAYLAND_EGL_INCLUDE_DIR NAMES wayland-egl.h HINTS ${PKG_WAYLAND_INCLUDE_DIRS})
FIND_PATH(WAYLAND_CURSOR_INCLUDE_DIR NAMES wayland-cursor.h HINTS ${PKG_WAYLAND_INCLUDE_DIRS})
FIND_LIBRARY(WAYLAND_CLIENT_LIBRARIES NAMES wayland-client HINTS ${PKG_WAYLAND_LIBRARY_DIRS})
FIND_LIBRARY(WAYLAND_SERVER_LIBRARIES NAMES wayland-server HINTS ${PKG_WAYLAND_LIBRARY_DIRS})
FIND_LIBRARY(WAYLAND_EGL_LIBRARIES NAMES wayland-egl HINTS ${PKG_WAYLAND_LIBRARY_DIRS})
FIND_LIBRARY(WAYLAND_CURSOR_LIBRARIES NAMES wayland-cursor HINTS ${PKG_WAYLAND_LIBRARY_DIRS})
set(WAYLAND_INCLUDE_DIR ${WAYLAND_CLIENT_INCLUDE_DIR} ${WAYLAND_SERVER_INCLUDE_DIR} ${WAYLAND_EGL_INCLUDE_DIR} ${WAYLAND_CURSOR_INCLUDE_DIR})
set(WAYLAND_LIBRARIES ${WAYLAND_CLIENT_LIBRARIES} ${WAYLAND_SERVER_LIBRARIES} ${WAYLAND_EGL_LIBRARIES} ${WAYLAND_CURSOR_LIBRARIES})
list(REMOVE_DUPLICATES WAYLAND_INCLUDE_DIR)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_CLIENT DEFAULT_MSG WAYLAND_CLIENT_LIBRARIES WAYLAND_CLIENT_INCLUDE_DIR)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_SERVER DEFAULT_MSG WAYLAND_SERVER_LIBRARIES WAYLAND_SERVER_INCLUDE_DIR)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_EGL DEFAULT_MSG WAYLAND_EGL_LIBRARIES WAYLAND_EGL_INCLUDE_DIR)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND_CURSOR DEFAULT_MSG WAYLAND_CURSOR_LIBRARIES WAYLAND_CURSOR_INCLUDE_DIR)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLAND DEFAULT_MSG WAYLAND_LIBRARIES WAYLAND_INCLUDE_DIR)
MARK_AS_ADVANCED(
WAYLAND_INCLUDE_DIR WAYLAND_LIBRARIES
WAYLAND_CLIENT_INCLUDE_DIR WAYLAND_CLIENT_LIBRARIES
WAYLAND_SERVER_INCLUDE_DIR WAYLAND_SERVER_LIBRARIES
WAYLAND_EGL_INCLUDE_DIR WAYLAND_EGL_LIBRARIES
WAYLAND_CURSOR_INCLUDE_DIR WAYLAND_CURSOR_LIBRARIES
)
ENDIF ()
================================================
FILE: CMakeModules/FindXCB.cmake
================================================
# - FindXCB
#
# Copyright (C) 2015 Valve Corporation
find_package(PkgConfig)
if(NOT XCB_FIND_COMPONENTS)
set(XCB_FIND_COMPONENTS xcb)
endif()
include(FindPackageHandleStandardArgs)
set(XCB_FOUND true)
set(XCB_INCLUDE_DIRS "")
set(XCB_LIBRARIES "")
foreach(comp ${XCB_FIND_COMPONENTS})
# component name
string(TOUPPER ${comp} compname)
string(REPLACE "-" "_" compname ${compname})
# header name
string(REPLACE "xcb-" "" headername xcb/${comp}.h)
# library name
set(libname ${comp})
pkg_check_modules(PC_${comp} QUIET ${comp})
find_path(${compname}_INCLUDE_DIR NAMES ${headername}
HINTS
${PC_${comp}_INCLUDEDIR}
${PC_${comp}_INCLUDE_DIRS}
)
find_library(${compname}_LIBRARY NAMES ${libname}
HINTS
${PC_${comp}_LIBDIR}
${PC_${comp}_LIBRARY_DIRS}
)
find_package_handle_standard_args(${comp}
FOUND_VAR ${comp}_FOUND
REQUIRED_VARS ${compname}_INCLUDE_DIR ${compname}_LIBRARY)
mark_as_advanced(${compname}_INCLUDE_DIR ${compname}_LIBRARY)
list(APPEND XCB_INCLUDE_DIRS ${${compname}_INCLUDE_DIR})
list(APPEND XCB_LIBRARIES ${${compname}_LIBRARY})
if(NOT ${comp}_FOUND)
set(XCB_FOUND false)
endif()
endforeach()
list(REMOVE_DUPLICATES XCB_INCLUDE_DIRS)
================================================
FILE: CMakeModules/GetGitRevisionDescription.cmake
================================================
# - Returns a version string from Git
#
# These functions force a re-configure on each git commit so that you can
# trust the values of the variables in your build system.
#
# get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
#
# Returns the refspec and sha hash of the current head revision
#
# git_describe(<var> [<additional arguments to git describe> ...])
#
# Returns the results of git describe on the source tree, and adjusting
# the output so that it tests false if an error occurs.
#
# git_get_exact_tag(<var> [<additional arguments to git describe> ...])
#
# Returns the results of git describe --exact-match on the source tree,
# and adjusting the output so that it tests false if there was no exact
# matching tag.
#
# Requires CMake 2.6 or newer (uses the 'function' command)
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
if(__get_git_revision_description)
return()
endif()
set(__get_git_revision_description YES)
# We must run the following at "include" time, not at function call time,
# to find the path to this module rather than the path to a calling list file
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
function(get_git_head_revision _refspecvar _hashvar)
set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories
set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH)
if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT)
# We have reached the root directory, we are not in git
set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
return()
endif()
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
endwhile()
# check if this is a submodule
if(NOT IS_DIRECTORY ${GIT_DIR})
file(READ ${GIT_DIR} submodule)
string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule})
get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
endif()
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
if(NOT EXISTS "${GIT_DATA}")
file(MAKE_DIRECTORY "${GIT_DATA}")
endif()
if(NOT EXISTS "${GIT_DIR}/HEAD")
return()
endif()
set(HEAD_FILE "${GIT_DATA}/HEAD")
configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
"${GIT_DATA}/grabRef.cmake"
@ONLY)
include("${GIT_DATA}/grabRef.cmake")
set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
endfunction()
function(git_branch_name _var)
if(NOT GIT_FOUND)
find_package(Git QUIET)
endif()
if(NOT GIT_FOUND)
set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
return()
endif()
execute_process(COMMAND
"${GIT_EXECUTABLE}"
rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY
"${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE
res
OUTPUT_VARIABLE
out
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT res EQUAL 0)
set(out "${out}-${res}-NOTFOUND")
endif()
set(${_var} "${out}" PARENT_SCOPE)
endfunction()
function(git_describe _var)
if(NOT GIT_FOUND)
find_package(Git QUIET)
endif()
#get_git_head_revision(refspec hash)
if(NOT GIT_FOUND)
set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
return()
endif()
#if(NOT hash)
# set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
# return()
#endif()
# TODO sanitize
#if((${ARGN}" MATCHES "&&") OR
# (ARGN MATCHES "||") OR
# (ARGN MATCHES "\\;"))
# message("Please report the following error to the project!")
# message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
#endif()
#message(STATUS "Arguments to execute_process: ${ARGN}")
execute_process(COMMAND
"${GIT_EXECUTABLE}"
describe
${hash}
${ARGN}
WORKING_DIRECTORY
"${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE
res
OUTPUT_VARIABLE
out
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT res EQUAL 0)
set(out "${out}-${res}-NOTFOUND")
endif()
set(${_var} "${out}" PARENT_SCOPE)
endfunction()
function(git_get_exact_tag _var)
git_describe(out --exact-match ${ARGN})
set(${_var} "${out}" PARENT_SCOPE)
endfunction()
================================================
FILE: CMakeModules/GetGitRevisionDescription.cmake.in
================================================
#
# Internal file for GetGitRevisionDescription.cmake
#
# Requires CMake 2.6 or newer (uses the 'function' command)
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
set(HEAD_HASH)
file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
if(HEAD_CONTENTS MATCHES "ref")
# named branch
string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
if(EXISTS "@GIT_DIR@/${HEAD_REF}")
configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}")
configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
set(HEAD_HASH "${HEAD_REF}")
endif()
else()
# detached HEAD
configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
endif()
if(NOT HEAD_HASH)
if(EXISTS "@GIT_DATA@/head-ref")
file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
string(STRIP "${HEAD_HASH}" HEAD_HASH)
else()
set(HEAD_HASH "Unknown")
endif()
endif()
================================================
FILE: CMakePresets.json
================================================
{
"version": 3,
"cmakeMinimumRequired": {
"major": 3,
"minor": 21,
"patch": 0
},
"configurePresets": [
{
"name": "vcpkg",
"displayName": "vcpkg build",
"description": "Use vcpkg for dependencies",
"toolchainFile": "${sourceDir}/libraries/vcpkg/scripts/buildsystems/vcpkg.cmake",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
}
]
}
================================================
FILE: LICENSE.md
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
{project} Copyright (C) {year} {fullname}
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
================================================
FILE: README.md
================================================
[](https://github.com/decaf-emu/decaf-emu/actions?workflow=C%2FC%2B%2B+CI)
# decaf-emu
Researching Wii U emulation. Licensed under the terms of the GNU General Public License, version 3 or later (GPLv3+).
You can find us for developer discussion:
- on discord using https://discord.gg/tPqFBnr
<p float="left">
<img src="https://user-images.githubusercontent.com/1302758/147675484-c0308d89-55a9-4927-8665-1826ee5d4771.png" width="250" />
<img src="https://user-images.githubusercontent.com/1302758/147674695-d8baf6ac-87e2-487c-8358-ef1588c5e5bf.png" width="250" />
<img src="https://user-images.githubusercontent.com/1302758/147674704-17767241-e0b4-497e-8841-aa968d14c8e3.png" width="250" />
</p>
## Support
None, this is an in-development project and user support is not provided.
## Building from Source
See [BUILDING.md](BUILDING.md)
## Binaries
The latest Windows and Linux binaries are available via [Actions artifacts](https://github.com/decaf-emu/decaf-emu/actions?query=branch%3Amaster+is%3Asuccess). You must be logged into GitHub in order to download the artifacts.
MacOS builds are currently not provided due to complications with Vulkan.
## Running
Run the `decaf-qt` executable, it is recommended to run the emulator from the root git directory so that it is able to access `resources/fonts/*`. Alternatively, set `resources_path` in the configuration file to point to the resources directory.
Configuration files can be found at:
- Windows - `%APPDATA%\decaf`
- Linux - `~/.config/decaf`
On Linux, a "Bus error" crash usually indicates an out-of-space error in the temporary directory. Set the `TMPDIR` environment variable to a directory on a filesystem with at least 2GB free.
Additionally there is an SDL command line application which can be used by `./decaf-sdl play <path to game>`
================================================
FILE: libraries/CMakeLists.txt
================================================
# addrlib
add_library(addrlib STATIC
"addrlib/src/addrinterface.cpp"
"addrlib/src/core/addrelemlib.cpp"
"addrlib/src/core/addrlib.cpp"
"addrlib/src/core/addrobject.cpp"
"addrlib/src/r600/r600addrlib.cpp")
set_target_properties(addrlib PROPERTIES FOLDER libraries)
target_include_directories(addrlib
PRIVATE "addrlib/src"
PUBLIC "addrlib/include")
# libbinrec
set(BINREC_ENABLE_RTL_DEBUG_OPTIMIZE FALSE CACHE BOOL "Enable debug output from optimization passes")
set(BINREC_ENABLE_ASSERT FALSE CACHE BOOL "Enable basic assertion checks")
add_subdirectory(libbinrec)
set_target_properties(binrec PROPERTIES FOLDER libraries)
# catch
add_library(catch2 INTERFACE IMPORTED GLOBAL)
set_target_properties(catch2 PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "CATCH_CONFIG_ENABLE_BENCHMARKING"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/catch/single_include/catch2")
# cereal
add_library(cereal INTERFACE IMPORTED GLOBAL)
set_target_properties(cereal PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/cereal/include")
# cnl
add_library(cnl INTERFACE IMPORTED GLOBAL)
set_target_properties(cnl PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/cnl/include")
# excmd
add_library(excmd INTERFACE IMPORTED GLOBAL)
set_target_properties(excmd PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/excmd/src")
# fmt
add_subdirectory(fmt)
set_target_properties(fmt PROPERTIES FOLDER libraries)
# glslang
if(DECAF_VULKAN OR DECAF_BUILD_TOOLS)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "glslang: BUILD_SHARED_LIBS" FORCE)
set(BUILD_TESTING OFF CACHE BOOL "glslang: BUILD_TESTING" FORCE)
set(ENABLE_HLSL OFF CACHE BOOL "glslang: ENABLE_HLSL" FORCE)
set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "glslang: ENABLE_GLSLANG_BINARIES" FORCE)
set(ENABLE_OPT ON CACHE BOOL "glslang: ENABLE_OPT" FORCE)
set(ENABLE_SPVREMAPPER OFF CACHE BOOL "glslang: ENABLE_SPVREMAPPER" FORCE)
set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "glslang: SKIP_GLSLANG_INSTALL" FORCE)
add_subdirectory(glslang)
macro(remove_flag_from_target _target _flag)
get_target_property(_target_cxx_flags ${_target} COMPILE_OPTIONS)
if(_target_cxx_flags)
list(REMOVE_ITEM _target_cxx_flags ${_flag})
set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${_target_cxx_flags}")
endif()
endmacro()
# As we inherit spv::Builder in libgpu, we must remove -fno-rtti
remove_flag_from_target(SPIRV -fno-rtti)
endif()
# gsl
add_library(gsl INTERFACE IMPORTED GLOBAL)
set_target_properties(gsl PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "GSL_THROWS_FOR_TESTING"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/gsl-lite/include")
# imgui
add_library(imgui STATIC
"imgui/imgui.cpp"
"imgui/imgui_draw.cpp")
set_target_properties(imgui PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/imgui"
FOLDER libraries)
# ovsocket
add_library(ovsocket INTERFACE IMPORTED GLOBAL)
set_target_properties(ovsocket PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/ovsocket/ovsocket")
# peglib
add_library(peglib INTERFACE IMPORTED GLOBAL)
set_target_properties(peglib PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/cpp-peglib")
# pugixml
add_library(pugixml STATIC
"pugixml/src/pugixml.cpp")
set_target_properties(pugixml PROPERTIES
FOLDER libraries
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/pugixml/src")
# spdlog
set(SPDLOG_FMT_EXTERNAL ON CACHE BOOL "Use external fmt library instead of bundled" FORCE)
add_subdirectory(spdlog)
set_target_properties(spdlog PROPERTIES FOLDER libraries)
# tomlplusplus
add_library(tomlplusplus INTERFACE IMPORTED GLOBAL)
set_target_properties(tomlplusplus PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/tomlplusplus/include")
# Qt Advanced Docking System
if(DECAF_QT)
set(BUILD_STATIC TRUE CACHE BOOL "ADS: Build the static library")
set(BUILD_EXAMPLES FALSE CACHE BOOL "ADS: Build the examples")
set(ADS_VERSION "3.8.1" CACHE STRING "ADS: Version")
add_subdirectory(qtads EXCLUDE_FROM_ALL)
set_target_properties(qtadvanceddocking PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "ADS_STATIC"
FOLDER libraries)
endif()
================================================
FILE: libraries/bin2c.cmake
================================================
# https://github.com/wjakob/nanogui/blob/f9c3b7a/resources/bin2c.cmake
# Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>, All rights reserved.
# BSD-3-Clause-LBNL (https://github.com/wjakob/nanogui/blob/f9c3b7a/LICENSE.txt)
cmake_minimum_required (VERSION 2.8.12)
# Create header for C file
file(WRITE ${OUTPUT_C} "/* Autogenerated by bin2c */\n\n")
file(APPEND ${OUTPUT_C} "#include <stdint.h>\n\n")
# Create header of H file
file(WRITE ${OUTPUT_H} "/* Autogenerated by bin2c */\n\n")
file(APPEND ${OUTPUT_H} "#pragma once\n")
file(APPEND ${OUTPUT_H} "#include <stdint.h>\n\n")
string(REPLACE "," ";" INPUT_LIST ${INPUT_FILES})
# Iterate through binary files files
foreach(bin ${INPUT_LIST})
# Get short filename
string(REGEX MATCH "([^/]+)$" filename ${bin})
# Replace filename spaces & extension separator for C compatibility
string(REGEX REPLACE "\\.| |-" "_" filename ${filename})
# Convert to lower case
string(TOLOWER ${filename} filename)
# Read hex data from file
file(READ ${bin} filedata HEX)
# Convert hex data for C compatibility
string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," filedata ${filedata})
# Append data to c file
file(APPEND ${OUTPUT_C} "uint8_t ${filename}[] = {${filedata}};\n\nuint32_t ${filename}_size = sizeof(${filename});\n\n")
# Append extern definitions to h file
file(APPEND ${OUTPUT_H} "extern uint8_t ${filename}[];\n\nextern uint32_t ${filename}_size;\n\n")
endforeach()
================================================
FILE: resources/CMakeLists.txt
================================================
project(resources)
set(Fonts
fonts/CafeCn.ttf
fonts/CafeKr.ttf
fonts/CafeStd.ttf
fonts/CafeTw.ttf
fonts/DejaVuSansMono.ttf)
set(Docs
fonts/DejaVuSansMono.LICENSE
fonts/NotoSansCJK.LICENSE
../README.md
../LICENSE.md)
set(ResourceFiles ${Fonts})
add_custom_target(resources ALL SOURCES ${ResourceFiles})
foreach(ResourceFile ${ResourceFiles})
add_custom_command(TARGET resources PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E
copy ${CMAKE_SOURCE_DIR}/resources/${ResourceFile}
$<TARGET_FILE_DIR:libdecaf>/resources/${ResourceFile})
endforeach()
install(FILES ${Fonts} DESTINATION "${DECAF_INSTALL_RESOURCESDIR}/fonts")
install(FILES ${Docs} DESTINATION "${DECAF_INSTALL_DOCSDIR}")
================================================
FILE: resources/fonts/DejaVuSansMono.LICENSE
================================================
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
Bitstream Vera Fonts Copyright
------------------------------
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
a trademark of Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of the fonts accompanying this license ("Fonts") and associated
documentation files (the "Font Software"), to reproduce and distribute the
Font Software, including without limitation the rights to use, copy, merge,
publish, distribute, and/or sell copies of the Font Software, and to permit
persons to whom the Font Software is furnished to do so, subject to the
following conditions:
The above copyright and trademark notices and this permission notice shall
be included in all copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular
the designs of glyphs or characters in the Fonts may be modified and
additional glyphs or characters may be added to the Fonts, only if the fonts
are renamed to names not containing either the words "Bitstream" or the word
"Vera".
This License becomes null and void to the extent applicable to Fonts or Font
Software that has been modified and is distributed under the "Bitstream
Vera" names.
The Font Software may be sold as part of a larger software package but no
copy of one or more of the Font Software typefaces may be sold by itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
FONT SOFTWARE.
Except as contained in this notice, the names of Gnome, the Gnome
Foundation, and Bitstream Inc., shall not be used in advertising or
otherwise to promote the sale, use or other dealings in this Font Software
without prior written authorization from the Gnome Foundation or Bitstream
Inc., respectively. For further information, contact: fonts at gnome dot
org.
Arev Fonts Copyright
------------------------------
Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the fonts accompanying this license ("Fonts") and
associated documentation files (the "Font Software"), to reproduce
and distribute the modifications to the Bitstream Vera Font Software,
including without limitation the rights to use, copy, merge, publish,
distribute, and/or sell copies of the Font Software, and to permit
persons to whom the Font Software is furnished to do so, subject to
the following conditions:
The above copyright and trademark notices and this permission notice
shall be included in all copies of one or more of the Font Software
typefaces.
The Font Software may be modified, altered, or added to, and in
particular the designs of glyphs or characters in the Fonts may be
modified and additional glyphs or characters may be added to the
Fonts, only if the fonts are renamed to names not containing either
the words "Tavmjong Bah" or the word "Arev".
This License becomes null and void to the extent applicable to Fonts
or Font Software that has been modified and is distributed under the
"Tavmjong Bah Arev" names.
The Font Software may be sold as part of a larger software package but
no copy of one or more of the Font Software typefaces may be sold by
itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
Except as contained in this notice, the name of Tavmjong Bah shall not
be used in advertising or otherwise to promote the sale, use or other
dealings in this Font Software without prior written authorization
from Tavmjong Bah. For further information, contact: tavmjong @ free
. fr.
TeX Gyre DJV Math
-----------------
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
Math extensions done by B. Jackowski, P. Strzelczyk and P. Pianowski
(on behalf of TeX users groups) are in public domain.
Letters imported from Euler Fraktur from AMSfonts are (c) American
Mathematical Society (see below).
Bitstream Vera Fonts Copyright
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera
is a trademark of Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of the fonts accompanying this license (“Fonts”) and associated
documentation
files (the “Font Software”), to reproduce and distribute the Font Software,
including without limitation the rights to use, copy, merge, publish,
distribute,
and/or sell copies of the Font Software, and to permit persons to whom
the Font Software is furnished to do so, subject to the following
conditions:
The above copyright and trademark notices and this permission notice
shall be
included in all copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular
the designs of glyphs or characters in the Fonts may be modified and
additional
glyphs or characters may be added to the Fonts, only if the fonts are
renamed
to names not containing either the words “Bitstream” or the word “Vera”.
This License becomes null and void to the extent applicable to Fonts or
Font Software
that has been modified and is distributed under the “Bitstream Vera”
names.
The Font Software may be sold as part of a larger software package but
no copy
of one or more of the Font Software typefaces may be sold by itself.
THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
FOUNDATION
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL,
SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN
ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
INABILITY TO USE
THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
Except as contained in this notice, the names of GNOME, the GNOME
Foundation,
and Bitstream Inc., shall not be used in advertising or otherwise to promote
the sale, use or other dealings in this Font Software without prior written
authorization from the GNOME Foundation or Bitstream Inc., respectively.
For further information, contact: fonts at gnome dot org.
AMSFonts (v. 2.2) copyright
The PostScript Type 1 implementation of the AMSFonts produced by and
previously distributed by Blue Sky Research and Y&Y, Inc. are now freely
available for general use. This has been accomplished through the
cooperation
of a consortium of scientific publishers with Blue Sky Research and Y&Y.
Members of this consortium include:
Elsevier Science IBM Corporation Society for Industrial and Applied
Mathematics (SIAM) Springer-Verlag American Mathematical Society (AMS)
In order to assure the authenticity of these fonts, copyright will be
held by
the American Mathematical Society. This is not meant to restrict in any way
the legitimate use of the fonts, such as (but not limited to) electronic
distribution of documents containing these fonts, inclusion of these fonts
into other public domain or commercial font collections or computer
applications, use of the outline data to create derivative fonts and/or
faces, etc. However, the AMS does require that the AMS copyright notice be
removed from any derivative versions of the fonts which have been altered in
any way. In addition, to ensure the fidelity of TeX documents using Computer
Modern fonts, Professor Donald Knuth, creator of the Computer Modern faces,
has requested that any alterations which yield different font metrics be
given a different name.
$Id$
================================================
FILE: resources/fonts/NotoSansCJK.LICENSE
================================================
Copyright (c) <dates>, <Copyright Holder> (<URL|email>),
with Reserved Font Name <Reserved Font Name>.
Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>),
with Reserved Font Name <additional Reserved Font Name>.
Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>).
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
================================================
FILE: resources/hidpi.manifest
================================================
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
<asmv3:application>
<asmv3:windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware> <!-- legacy -->
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness> <!-- falls back to pm if pmv2 is not available -->
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
================================================
FILE: src/CMakeLists.txt
================================================
include_directories(".")
add_subdirectory(common)
add_subdirectory(libconfig)
add_subdirectory(libcpu)
add_subdirectory(libdecaf)
add_subdirectory(libgfd)
add_subdirectory(libgpu)
add_subdirectory(decaf-cli)
add_subdirectory(decaf-sdl)
if(DECAF_QT)
add_subdirectory(decaf-qt)
endif()
================================================
FILE: src/common/CMakeLists.txt
================================================
project(common)
include_directories(".")
file(GLOB_RECURSE SOURCE_FILES *.cpp)
file(GLOB_RECURSE HEADER_FILES *.h *.inl)
add_library(common STATIC ${SOURCE_FILES} ${HEADER_FILES})
GroupSources("Source Files" src)
target_link_libraries(common
cnl
fmt::fmt
gsl
spdlog::spdlog)
if(MSVC)
target_link_libraries(common Dbghelp)
elseif(UNIX AND NOT APPLE)
target_link_libraries(common rt)
endif()
if(DECAF_PCH)
target_precompile_headers(common
PRIVATE
"pch.h"
)
AutoGroupPCHFiles()
endif()
================================================
FILE: src/common/align.h
================================================
#pragma once
#include <cstddef>
template<typename Type>
constexpr inline Type
align_up(Type value, size_t alignment)
{
return static_cast<Type>((static_cast<size_t>(value) + (alignment - 1)) & ~(alignment - 1));
}
template<typename Type>
constexpr inline Type
align_down(Type value, size_t alignment)
{
return static_cast<Type>(static_cast<size_t>(value) & ~(alignment - 1));
}
template<typename Type>
constexpr inline Type *
align_up(Type *value, size_t alignment)
{
return reinterpret_cast<Type*>((reinterpret_cast<size_t>(value) + (alignment - 1)) & ~(alignment - 1));
}
template<typename Type>
constexpr inline Type *
align_down(Type *value, size_t alignment)
{
return reinterpret_cast<Type*>(reinterpret_cast<size_t>(value) & ~(alignment - 1));
}
template<typename Type>
constexpr bool
align_check(Type *value, size_t alignment)
{
return (reinterpret_cast<size_t>(value) & (alignment - 1)) == 0;
}
template<typename Type>
constexpr bool
align_check(Type value, size_t alignment)
{
return (static_cast<size_t>(value) & (alignment - 1)) == 0;
}
================================================
FILE: src/common/atomicqueue.h
================================================
#pragma once
#include <atomic>
/**
* Multi-producer multi-consumer queue.
* This is unsafe and full of assumptions, should be very careful about using it.
*
* This is not a safe queue, it does not check if the queue is full before
* pushing, or if it is empty before popping.
*
* Size must be a power of two so you don't need to be careful for wrapping of
* read / write position.
*
* Empty when writePos = readPos.
* Full when writePos + 1 == readPos.
*/
template<typename Type, std::size_t Size>
class alignas(64) AtomicQueue
{
static_assert(Size && ((Size & (Size - 1)) == 0), "N must be a power of two");
public:
constexpr std::size_t capacity() const
{
return Size - 1;
}
bool wasFull() const
{
return (mWritePosition.load() + 1) == mReadPosition.load();
}
bool wasEmpty() const
{
return mWritePosition.load() == mReadPosition.load();
}
void push(Type value)
{
auto writePos = mWritePosition.fetch_add(1);
mBuffer[writePos % Size] = value;
}
Type pop()
{
auto readPos = mReadPosition.fetch_add(1);
return mBuffer[readPos % Size];
}
private:
alignas(64) std::atomic<std::size_t> mWritePosition = 0;
Type mBuffer[Size];
alignas(64) std::atomic<std::size_t> mReadPosition = 0;
};
/**
* Single producer, single consumer queue.
* Much safer than MultiAtomicQueue, preferred when only one thread is writing
* and one thread is reading.
*
* Safe, can detect whether queue is full on push, or empty on pop.
*
* Does not require size to be power of two.
*
* Empty when read == write
* Full when (write + 1) == read
*/
template<typename Type, std::size_t Size>
class SingleAtomicQueue
{
public:
constexpr std::size_t capacity() const
{
return Size - 1;
}
bool push(Type value)
{
const auto writePos = mWritePosition.load(std::memory_order_relaxed);
const auto nextWritePos = (writePos + 1) % Size;
if (nextWritePos == mReadPosition.load(std::memory_order_acquire)) {
// Queue is full!
return false;
}
mBuffer[writePos] = value;
mWritePosition.store(writePos, std::memory_order_release);
return true;
}
bool pop(Type &value)
{
const auto readPos = mReadPosition.load(std::memory_order_relaxed);
if (readPos == mWritePosition.load(std::memory_order_acquire)) {
// Queue is empty!
return false;
}
value = mBuffer[readPos];
mReadPosition.store((readPos + 1) % Size, std::memory_order_release);
return true;
}
private:
alignas(64) std::atomic<std::size_t> mWritePosition = 0;
Type mBuffer[Size];
alignas(64) std::atomic<std::size_t> mReadPosition = 0;
};
================================================
FILE: src/common/bit_cast.h
================================================
#pragma once
#include <cstring>
#include <memory>
#include <type_traits>
// reinterpret_cast for value types
template<typename DstType, typename SrcType>
inline DstType
bit_cast(const SrcType& src)
{
static_assert(sizeof(SrcType) == sizeof(DstType), "bit_cast must be between same sized types");
static_assert(std::is_trivially_copyable<SrcType>::value, "SrcType is not trivially copyable.");
static_assert(std::is_trivially_copyable<DstType>::value, "DstType is not trivially copyable.");
DstType dst;
std::memcpy(std::addressof(dst), std::addressof(src), sizeof(SrcType));
return dst;
}
================================================
FILE: src/common/bitfield.h
================================================
#pragma once
#include "bit_cast.h"
#include "bitutils.h"
#include "decaf_assert.h"
#include <common/type_traits.h>
#include <fmt/core.h>
template<typename BitfieldType, typename ValueType, unsigned Position, unsigned Bits>
struct BitfieldHelper
{
using underlying_type = typename safe_underlying_type<ValueType>::type;
using unsigned_underlying_type = typename std::make_unsigned<underlying_type>::type;
static const auto RelativeMask = static_cast<unsigned_underlying_type>((1ull << (Bits)) - 1);
static const auto AbsoluteMask = static_cast<typename BitfieldType::StorageType>(RelativeMask) << (Position);
static inline ValueType get(BitfieldType bitfield)
{
auto value = static_cast<unsigned_underlying_type>((bitfield.value & AbsoluteMask) >> (Position));
if (std::is_signed<underlying_type>::value) {
value = sign_extend<Bits>(value);
}
return bit_cast<ValueType>(value);
}
static inline BitfieldType set(BitfieldType bitfield,
ValueType value)
{
auto uValue = bit_cast<unsigned_underlying_type>(value);
if (std::is_signed<underlying_type>::value) {
uValue &= RelativeMask;
}
decaf_assert(uValue <= RelativeMask, fmt::format("{} <= {}", uValue, static_cast<unsigned>(RelativeMask)));
bitfield.value &= ~AbsoluteMask;
bitfield.value |= static_cast<typename BitfieldType::StorageType>(uValue) << (Position);
return bitfield;
}
};
// Specialise for float because of errors using make_unsigned on float type
template<typename BitfieldType, unsigned Position, unsigned Bits>
struct BitfieldHelper<BitfieldType, float, Position, Bits>
{
using ValueBitfield = BitfieldHelper<BitfieldType, uint32_t, Position, Bits>;
static float get(BitfieldType bitfield)
{
return bit_cast<float>(ValueBitfield::get(bitfield));
}
static inline BitfieldType set(BitfieldType bitfield, float floatValue)
{
return ValueBitfield::set(bitfield, bit_cast<uint32_t>(floatValue));
}
};
// Specialise for bool because of compiler warnings for static_cast<bool>(int)
template<typename BitfieldType, unsigned Position, unsigned Bits>
struct BitfieldHelper<BitfieldType, bool, Position, Bits>
{
static const auto AbsoluteMask = (static_cast<typename BitfieldType::StorageType>((1ull << (Bits)) - 1)) << (Position);
static constexpr bool get(BitfieldType bitfield)
{
return !!(bitfield.value & AbsoluteMask);
}
static inline BitfieldType set(BitfieldType bitfield, bool value)
{
bitfield.value &= ~AbsoluteMask;
bitfield.value |= (static_cast<typename BitfieldType::StorageType>(value ? 1 : 0)) << (Position);
return bitfield;
}
};
#ifndef DECAF_USE_STDLAYOUT_BITFIELD
#define BITFIELD_BEG(Name, Type) \
union Name \
{ \
using BitfieldType = Name; \
using StorageType = Type; \
Type value; \
explicit operator StorageType() { return value; } \
static inline Name get(Type v) { \
Name bitfield; \
bitfield.value = v; \
return bitfield; \
}
#define BITFIELD_ENTRY(Pos, Size, ValueType, Name) \
private: struct { StorageType : Pos; StorageType _##Name : Size; }; \
public: inline ValueType Name() const { \
return BitfieldHelper<BitfieldType, ValueType, Pos, Size>::get(*this); \
} \
inline BitfieldType Name(ValueType fieldValue) const { \
return BitfieldHelper<BitfieldType, ValueType, Pos, Size> \
::set(*this, fieldValue); \
}
#else
#define BITFIELD_BEG(Name, Type) \
union Name \
{ \
using BitfieldType = Name; \
using StorageType = Type; \
Type value; \
explicit operator StorageType() { return value; } \
static inline Name get(Type v) { \
Name bitfield; \
bitfield.value = v; \
return bitfield; \
}
#define BITFIELD_ENTRY(Pos, Size, ValueType, Name) \
inline ValueType Name() const { \
return BitfieldHelper<BitfieldType, ValueType, Pos, Size>::get(*this); \
} \
inline BitfieldType Name(ValueType fieldValue) const { \
return BitfieldHelper<BitfieldType, ValueType, Pos, Size> \
::set(*this, fieldValue); \
}
#endif
#define BITFIELD_END \
};
================================================
FILE: src/common/bitutils.h
================================================
#pragma once
#include "platform.h"
#include <climits>
#include <cstdint>
#include <cstddef>
#ifdef PLATFORM_WINDOWS
#include <intrin.h>
#endif
// Gets the value of a bit
template<typename Type>
constexpr Type
get_bit(Type src, unsigned bit)
{
return (src >> bit) & static_cast<Type>(1);
}
template<unsigned bit, typename Type>
constexpr Type
get_bit(Type src)
{
return (src >> (bit)) & static_cast<Type>(1);
}
// Sets the value of a bit to 1
template<typename Type>
constexpr Type
set_bit(Type src, unsigned bit)
{
return src | (static_cast<Type>(1) << bit);
}
template<unsigned bit, typename Type>
constexpr Type
set_bit(Type src)
{
return src | (static_cast<Type>(1) << (bit));
}
// Flips the value of a bit to 1
template<typename Type>
constexpr Type
flip_bit(Type src, unsigned bit)
{
return src ^ (static_cast<Type>(1) << bit);
}
template<unsigned bit, typename Type>
constexpr Type
flip_bit(Type src)
{
return src ^ (static_cast<Type>(1) << (bit));
}
// Clears the value of a bit
template<typename Type>
constexpr Type
clear_bit(Type src, unsigned bit)
{
return src & ~(static_cast<Type>(1) << bit);
}
template<unsigned bit, typename Type>
constexpr Type
clear_bit(Type src)
{
return src & ~(static_cast<Type>(1) << (bit));
}
// Sets the value of a bit to value
template<typename Type>
inline Type
set_bit_value(Type src, unsigned bit, Type value)
{
src = clear_bit(src, bit);
return src | ((value & static_cast<Type>(1)) << bit);
}
template<unsigned bit, typename Type>
inline Type
set_bit_value(Type src, Type value)
{
src = clear_bit(src, bit);
return src | (value << bit);
}
// Create a bitmask for bits
template<typename Type>
constexpr Type
make_bitmask(Type bits)
{
return static_cast<Type>((1ull << bits) - 1);
}
template<unsigned bits, typename Type>
constexpr Type
make_bitmask()
{
return static_cast<Type>((1ull << (bits)) - 1);
}
template<>
constexpr uint32_t
make_bitmask<32, uint32_t>()
{
return 0xffffffff;
}
template<>
constexpr uint64_t
make_bitmask<64, uint64_t>()
{
return 0xffffffffffffffffull;
}
// Creates a bitmask between begin and end
template<typename Type>
constexpr Type
make_bitmask(Type begin, Type end)
{
return make_bitmask(end - begin + 1) << begin;
}
template<unsigned begin, unsigned end, typename Type>
constexpr Type
make_bitmask()
{
return make_bitmask<(end) - (begin) + 1, Type>() << (begin);
}
// Creates a bitmask between mb and me
inline uint32_t
make_ppc_bitmask(int mb, int me)
{
uint32_t begin, end, mask;
begin = 0xFFFFFFFF >> mb;
end = me < 31 ? (0xFFFFFFFF >> (me + 1)) : 0;
mask = begin ^ end;
return (me < mb) ? ~mask : mask;
}
// Sign extend bits to int32_t
template<typename Type>
inline Type
sign_extend(Type src, unsigned bits)
{
auto mask = make_bitmask<Type>(bits);
src &= mask;
if (get_bit(src, bits)) {
return src | ~mask;
} else {
return src;
}
}
template<unsigned bits, typename Type>
inline Type
sign_extend(Type src)
{
auto mask = make_bitmask<bits, Type>();
src &= mask;
if (get_bit<(bits) - 1>(src)) {
return src | ~mask;
} else {
return src;
}
}
#ifdef PLATFORM_WINDOWS
inline int
clz(uint32_t bits)
{
unsigned long a;
if (!_BitScanReverse(&a, bits)) {
return 32;
} else {
return 31 - a;
}
}
#else
#define clz __builtin_clz
#endif
#ifdef PLATFORM_WINDOWS
inline int
clz64(uint64_t bits)
{
unsigned long a;
if (!_BitScanReverse64(&a, bits)) {
return 64;
} else {
return 63 - a;
}
}
#else
#define clz64 __builtin_clzll
#endif
inline bool
bit_scan_reverse(unsigned long *out_position, uint32_t bits)
{
#ifdef PLATFORM_WINDOWS
return !!_BitScanReverse(out_position, bits);
#elif defined(PLATFORM_POSIX)
if (bits == 0) {
return false;
}
*out_position = 31 - __builtin_clz(bits);
return true;
#endif
}
#ifdef PLATFORM_WINDOWS
#define bit_rotate_left _rotl
#else
inline uint32_t bit_rotate_left(uint32_t x, int shift)
{
shift &= 31;
if (!shift) {
return x;
}
return (x << shift) | (x >> (32 - shift));
}
#endif
#ifdef PLATFORM_WINDOWS
#define bit_rotate_right _rotr
#else
inline uint32_t bit_rotate_right(uint32_t x, int shift)
{
shift &= 31;
if (!shift) {
return x;
}
return (x >> shift) | (x << (32 - shift));
}
#endif
// Return number of bits in type
template<typename Type>
struct bit_width
{
static constexpr size_t value = sizeof(Type) * CHAR_BIT;
constexpr operator size_t() const
{
return value;
}
};
================================================
FILE: src/common/byte_swap.h
================================================
#pragma once
#include "platform.h"
#include "bit_cast.h"
#include <cstdint>
#ifdef PLATFORM_LINUX
#include <byteswap.h>
#endif
// Utility class to swap endian for types of size 1, 2, 4, 8
// other type sizes are not supported
template<typename Type, unsigned Size = sizeof(Type)>
struct byte_swap_t;
template<typename Type>
struct byte_swap_t<Type, 1>
{
static Type swap(Type src)
{
return src;
}
};
template<typename Type>
struct byte_swap_t<Type, 2>
{
static Type swap(Type src)
{
#ifdef PLATFORM_WINDOWS
return bit_cast<Type>(_byteswap_ushort(bit_cast<uint16_t>(src)));
#elif defined(PLATFORM_APPLE)
// Apple has no 16-bit byteswap intrinsic
const uint16_t data = bit_cast<uint16_t>(src);
return bit_cast<Type>((uint16_t)((data >> 8) | (data << 8)));
#elif defined(PLATFORM_LINUX)
return bit_cast<Type>(bswap_16(bit_cast<uint16_t>(src)));
#endif
}
};
template<typename Type>
struct byte_swap_t<Type, 4>
{
static Type swap(Type src)
{
#ifdef PLATFORM_WINDOWS
return bit_cast<Type>(_byteswap_ulong(bit_cast<uint32_t>(src)));
#elif defined(PLATFORM_APPLE)
return bit_cast<Type>(__builtin_bswap32(bit_cast<uint32_t>(src)));
#elif defined(PLATFORM_LINUX)
return bit_cast<Type>(bswap_32(bit_cast<uint32_t>(src)));
#endif
}
};
template<typename Type>
struct byte_swap_t<Type, 8>
{
static Type swap(Type src)
{
#ifdef PLATFORM_WINDOWS
return bit_cast<Type>(_byteswap_uint64(bit_cast<uint64_t>(src)));
#elif defined(PLATFORM_APPLE)
return bit_cast<Type>(__builtin_bswap64(bit_cast<uint64_t>(src)));
#elif defined(PLATFORM_LINUX)
return bit_cast<Type>(bswap_64(bit_cast<uint64_t>(src)));
#endif
}
};
// Swaps endian of src
template<typename Type>
inline Type
byte_swap(Type src)
{
return byte_swap_t<Type>::swap(src);
}
================================================
FILE: src/common/byte_swap_array.h
================================================
#pragma once
#include "byte_swap.h"
#include "platform.h"
#include "platform_intrin.h"
#include <vector>
template<typename DataType>
static inline void
byte_swap_unaligned(DataType *dst,
const DataType *srcStart,
const DataType *srcEnd)
{
for (auto *src = srcStart; src < srcEnd; ) {
*dst++ = byte_swap(*src++);
}
}
#ifdef PLATFORM_HAS_SSE3
template<typename DataType>
static inline void
byte_swap_aligned(DataType *dst,
const DataType *srcStart,
const DataType *srcEnd)
{
auto sseDst = reinterpret_cast<__m128i *>(dst);
auto sseSrc = reinterpret_cast<const __m128i *>(srcStart);
auto sseSrcEnd = reinterpret_cast<const __m128i *>(srcEnd);
static_assert(sizeof(DataType) == 2 || sizeof(DataType) == 4,
"unexpected data type size for aligned byte swap");
__m128i sseMask;
if constexpr (sizeof(DataType) == 2) {
sseMask = _mm_set_epi8(14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1);
} else if constexpr (sizeof(DataType) == 4) {
sseMask = _mm_set_epi8(12, 13, 14, 15, 8, 9, 10, 11, 4, 5, 6, 7, 0, 1, 2, 3);
}
while (sseSrc < sseSrcEnd) {
_mm_storeu_si128(sseDst++,
_mm_shuffle_epi8(_mm_loadu_si128(sseSrc++), sseMask));
}
}
#else
template<typename DataType>
static inline void
byte_swap_aligned(DataType *dst, const DataType *srcStart, const DataType *srcEnd)
{
byte_swap_unaligned<DataType>(dst, srcStart, srcEnd);
}
#endif
#ifdef PLATFORM_HAS_SSE3
template<typename DataType>
static inline void *
byte_swap_to_scratch(const void *data,
uint32_t numBytes,
std::vector<uint8_t> &scratch)
{
// We pad the output buffer to guarentee we can align it to any source address.
scratch.resize(numBytes + 32);
// Calculate some information about the indices
auto swapSrc = reinterpret_cast<const DataType *>(data);
auto swapSrcEnd = swapSrc + (numBytes / sizeof(DataType));
// The source must be aligned at least to the swap boundary...
decaf_check(swapSrc == align_up(swapSrc, sizeof(DataType)));
// Align our destination exactly the same as the source
auto unalignedOffset = reinterpret_cast<uintptr_t>(swapSrc) & 0xF;
auto alignMatchedScratch = align_up(scratch.data(), 16) + unalignedOffset;
auto swapDest = reinterpret_cast<DataType *>(alignMatchedScratch);
// Calculate our aligned memory
auto alignedSwapDest = align_up(swapDest, 16);
auto alignedSwapSrc = align_up(swapSrc, 16);
auto alignedSwapSrcEnd = align_down(swapSrcEnd, 16);
auto alignedSize = alignedSwapSrcEnd - alignedSwapSrc;
// Do the unaligned before portion
byte_swap_unaligned<DataType>(swapDest, swapSrc, alignedSwapSrc);
// Do the aligned portion
byte_swap_aligned<DataType>(alignedSwapDest, alignedSwapSrc, alignedSwapSrcEnd);
// Do the unaligned after portion
byte_swap_unaligned<DataType>(alignedSwapDest + alignedSize,
alignedSwapSrc + alignedSize,
swapSrcEnd);
return alignMatchedScratch;
}
#else
template<typename DataType>
static inline void *
byte_swap_to_scratch(const void *data, uint32_t numBytes, std::vector<uint8_t>& scratch)
{
scratch.resize(numBytes);
auto swapDest = reinterpret_cast<DataType *>(scratch.data());
auto swapSrc = reinterpret_cast<const DataType *>(data);
auto swapSrcEnd = swapSrc + (numBytes / sizeof(DataType));
byte_swap_unaligned<DataType>(swapDest, swapSrc, swapSrcEnd);
return swapDest;
}
#endif
================================================
FILE: src/common/cbool.h
================================================
#pragma once
#include <cstdint>
#ifndef BOOL
using BOOL = int32_t;
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
================================================
FILE: src/common/configstorage.h
================================================
#pragma once
#include <functional>
#include <memory>
#include <mutex>
#include <vector>
template<typename SettingsType>
class ConfigStorage
{
public:
using ChangeListener = std::function<void(const SettingsType &)>;
using Settings = SettingsType;
ConfigStorage() :
mStorage(std::make_shared<Settings>())
{
}
void set(std::shared_ptr<Settings> settings)
{
std::lock_guard<std::mutex> lock { mMutex };
mStorage = settings;
for (auto &listener : mListeners) {
listener(*settings);
}
}
std::shared_ptr<Settings> get()
{
std::lock_guard<std::mutex> lock { mMutex };
return mStorage;
}
void addListener(ChangeListener listener)
{
std::lock_guard<std::mutex> lock { mMutex };
mListeners.emplace_back(std::move(listener));
}
private:
std::mutex mMutex;
std::shared_ptr<Settings> mStorage;
std::vector<ChangeListener> mListeners;
};
================================================
FILE: src/common/count_of.h
================================================
#pragma once
#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))
================================================
FILE: src/common/datahash.h
================================================
#pragma once
#define XXH_INLINE_ALL
#define XXH_CPU_LITTLE_ENDIAN 1
#define XXH_STATIC_LINKING_ONLY
#include "xxhash.h"
#include <array>
#include <functional>
#include <random>
class DataHash
{
public:
inline DataHash()
{
}
inline bool operator!=(const DataHash &rhs) const
{
return mHash != rhs.mHash;
}
inline bool operator==(const DataHash &rhs) const
{
return mHash == rhs.mHash;
}
inline DataHash& write(const void *data, size_t size)
{
mHash ^= XXH64(data, size, 0);
return *this;
}
template <typename T>
inline DataHash& write(const std::vector<T> &data)
{
static_assert(std::is_trivially_copyable<T>::value, "Hashed types must be trivial");
#ifdef DECAF_USE_STDLAYOUT_BITFIELD
// On vs2019 this fails without stdlayout bitfield, but non-stdlayout bitfield is
// nicer for debugging in visual studio
static_assert(std::has_unique_object_representations<T>::value,
"Hashed types must have unique object representations");
#endif
return write(data.data(), data.size() * sizeof(T));
}
template <typename T>
inline DataHash& write(const T &data)
{
static_assert(std::is_trivially_copyable<T>::value, "Hashed types must be trivial");
#ifdef DECAF_USE_STDLAYOUT_BITFIELD
// On vs2019 this fails without stdlayout bitfield, but non-stdlayout bitfield is
// nicer for debugging in visual studio
static_assert(std::has_unique_object_representations<T>::value,
"Hashed types must have unique object representations");
#endif
return write(&data, sizeof(T));
}
inline uint64_t value() const
{
return mHash;
}
static inline DataHash random()
{
static std::random_device r;
static std::mt19937 gen(r());
static std::uniform_int_distribution<uint64_t> unidist;
DataHash hash;
hash.mHash = unidist(gen);
return hash;
}
private:
uint64_t mHash = 0;
};
namespace std
{
template <> struct hash<DataHash>
{
uint64_t operator()(const DataHash& x) const
{
return x.value();
}
};
} // namespace std
================================================
FILE: src/common/decaf_assert.h
================================================
#pragma once
#include <string>
#include "platform.h"
#include "platform_compiler.h"
#include "platform_stacktrace.h"
#ifdef PLATFORM_WINDOWS
#define decaf_handle_assert(x, e, m) \
if (!(x)) { \
assertFailed(__FILE__, __LINE__, e, m); \
__debugbreak(); \
abort(); \
}
#define decaf_handle_warn_once_assert(x, e, m) \
if (!(x)) { \
static bool seen_this_error_before = false; \
if (!seen_this_error_before) { \
seen_this_error_before = true; \
assertWarnFailed(__FILE__, __LINE__, e, m); \
} \
}
#define decaf_host_fault(f, t) \
hostFaultWithStackTrace(f, t); \
__debugbreak(); \
abort();
#else
#define decaf_handle_assert(x, e, m) \
if (UNLIKELY(!(x))) { \
assertFailed(__FILE__, __LINE__, e, m); \
abort(); \
}
#define decaf_handle_warn_once_assert(x, e, m) \
if (UNLIKELY(!(x))) { \
static bool seen_this_error_before = false; \
if (!seen_this_error_before) { \
seen_this_error_before = true; \
assertWarnFailed(__FILE__, __LINE__, e, m); \
} \
}
#define decaf_host_fault(f, t) \
hostFaultWithStackTrace(f, t); \
abort();
#endif
#define decaf_assert(x, m) \
decaf_handle_assert(x, #x, m)
#define decaf_check(x) \
decaf_handle_assert(x, #x, "")
#define decaf_check_warn_once(x) \
decaf_handle_warn_once_assert(x, #x, "")
#define decaf_abort(m) \
decaf_handle_assert(false, "0", m)
void
assertFailed(const char *file,
unsigned line,
const char *expression,
const std::string &message);
void
assertWarnFailed(const char *file,
unsigned line,
const char *expression,
const std::string &message);
void
hostFaultWithStackTrace(const std::string &fault,
platform::StackTrace *stackTrace);
================================================
FILE: src/common/enum_end.inl
================================================
#undef ENUM_BEG
#undef ENUM_END
#undef ENUM_VALUE
#undef FLAGS_BEG
#undef FLAGS_END
#undef FLAGS_VALUE
#undef ENUM_NAMESPACE_ENTER
#undef ENUM_NAMESPACE_EXIT
================================================
FILE: src/common/enum_start.inl
================================================
#ifndef ENUM_BEG
#include <cstdint>
#include <type_traits>
#define ENUM_BEG(name, type) namespace name##_ { enum Value : type {
#endif
#ifndef ENUM_END
#define ENUM_END(name) }; }; using name = name##_::Value;
#endif
#ifndef ENUM_VALUE
#define ENUM_VALUE(key, value) key = value,
#endif
#ifndef FLAGS_BEG
#define FLAGS_BEG(name, type) namespace name##_ { enum Value : type {
#endif
#ifndef FLAGS_END
#define FLAGS_END(E) }; \
inline Value operator | (Value lhs, Value rhs) { return static_cast<Value>(static_cast<std::underlying_type_t<Value>>(lhs) | static_cast<std::underlying_type_t<Value>>(rhs)); } \
inline Value operator & (Value lhs, Value rhs) { return static_cast<Value>(static_cast<std::underlying_type_t<Value>>(lhs) & static_cast<std::underlying_type_t<Value>>(rhs)); } \
inline Value operator ^ (Value lhs, Value rhs) { return static_cast<Value>(static_cast<std::underlying_type_t<Value>>(lhs) ^ static_cast<std::underlying_type_t<Value>>(rhs)); } \
inline Value operator ~ (Value lhs) { return static_cast<Value>(~static_cast<std::underlying_type_t<Value>>(lhs)); } \
inline Value &operator |= (Value &lhs, Value rhs) { return (lhs = lhs | rhs); } \
inline Value &operator &= (Value &lhs, Value rhs) { return (lhs = lhs & rhs); } \
inline Value &operator ^= (Value &lhs, Value rhs) { return (lhs = lhs ^ rhs); } \
}; using E = E##_::Value;
#endif
#ifndef FLAGS_VALUE
#define FLAGS_VALUE(key, value) key = value,
#endif
#ifndef ENUM_NAMESPACE_ENTER
#define ENUM_NAMESPACE_ENTER(name) namespace name {
#endif
#ifndef ENUM_NAMESPACE_EXIT
#define ENUM_NAMESPACE_EXIT(name) }
#endif
================================================
FILE: src/common/enum_string_declare.inl
================================================
#define ENUM_BEG(name, type) \
std::string to_string(name enumValue);
#define ENUM_VALUE(key, value)
#define ENUM_END(name)
#define FLAGS_BEG(name, type) \
std::string to_string(name enumValue);
#define FLAGS_VALUE(key, value)
#define FLAGS_END(name)
================================================
FILE: src/common/enum_string_define.inl
================================================
#define ENUM_BEG(name, type) \
std::string to_string(name enumValue) { \
using namespace name##_; \
switch (enumValue) {
#define ENUM_VALUE(key, value) \
case key: \
return #key;
#define ENUM_END(name) \
default: \
return std::to_string(static_cast<int>(enumValue)); \
} \
}
#define FLAGS_BEG(name, type) \
std::string to_string(name enumValue) { \
using namespace name##_; \
std::string out;
#define FLAGS_VALUE(key, value) \
if (enumValue & value) { \
if (out.size()) { out += " | "; } \
out += #key; \
}
#define FLAGS_END(name) \
return out; \
}
================================================
FILE: src/common/fastregionmap.h
================================================
#pragma once
#include <atomic>
#include <common/decaf_assert.h>
static_assert(sizeof(std::atomic<void*>) == sizeof(void*), "This class assumes std::atomic has no overhead");
template<typename Type>
class FastRegionMap
{
public:
FastRegionMap()
: mData(nullptr)
{
clear();
}
~FastRegionMap()
{
// Currently we do not clean up due to atomics
}
// Note that there must be no readers or writers to call this
void clear()
{
if (mData) {
for (auto i = 0u; i < 0x100; ++i) {
auto level1 = mData[i].load();
if (level1) {
for (auto j = 0u; j < 0x100; ++j) {
auto level2 = level1[j].load();
if (level2) {
delete[] level2;
}
}
delete[] level1;
}
}
} else {
mData = new std::atomic<std::atomic<std::atomic<Type>*>*>[0x100];
}
memset(mData, 0, sizeof(void*) * 0x100);
}
Type find(uint32_t location)
{
auto index1 = (location & 0xFF000000) >> 24;
auto index2 = (location & 0x00FF0000) >> 16;
auto index3 = (location & 0x0000FFFC) >> 2;
auto level1 = mData[index1].load();
if (!level1) {
return nullptr;
}
auto level2 = level1[index2].load();
if (!level2) {
return nullptr;
}
return level2[index3].load();
}
void set(uint32_t location, Type data)
{
if (location & 0x3) {
decaf_abort("Location was not power-of-two.");
}
auto index1 = (location & 0xFF000000) >> 24;
auto index2 = (location & 0x00FF0000) >> 16;
auto index3 = (location & 0x0000FFFC) >> 2;
auto level1 = mData[index1].load();
if (!level1) {
auto newTable = new std::atomic<std::atomic<Type>*>[0x100];
std::memset(newTable, 0, sizeof(void*) * 0x100);
if (mData[index1].compare_exchange_strong(level1, newTable)) {
level1 = newTable;
} else {
// compare_exchange updates level1 if we were pre-empted
delete[] newTable;
}
}
auto level2 = level1[index2].load();
if (!level2) {
auto newTable = new std::atomic<Type>[0x4000];
std::memset(newTable, 0, sizeof(void*) * 0x4000);
if (level1[index2].compare_exchange_strong(level2, newTable)) {
level2 = newTable;
} else {
// compare_exchange updates level2 if we were preempted
delete[] newTable;
}
}
level2[index3].store(data);
}
private:
std::atomic<std::atomic<std::atomic<Type>*>*>*
mData;
};
================================================
FILE: src/common/fixed.h
================================================
#pragma once
#include "bitfield.h"
#include <cnl/fixed_point.h>
using ufixed_16_16_t = cnl::fixed_point<uint32_t, -16>;
using sfixed_1_0_15_t = cnl::fixed_point<int16_t, -15>;
using ufixed_0_16_t = cnl::fixed_point<uint16_t, -16>;
using ufixed_1_15_t = cnl::fixed_point<uint16_t, -15>;
using ufixed_1_5_t = cnl::fixed_point<uint32_t, -5>;
using ufixed_4_6_t = cnl::fixed_point<uint32_t, -6>;
using sfixed_1_3_1_t = cnl::fixed_point<int8_t, -1>;
using sfixed_1_3_3_t = cnl::fixed_point<int8_t, -3>;
using sfixed_1_5_6_t = cnl::fixed_point<int16_t, -6>;
template<typename T>
struct UnwrapFixedPoint;
template<typename Rep, int Exponent, int Radix>
struct UnwrapFixedPoint<cnl::fixed_point<Rep, Exponent, Radix>>
{
using rep = Rep;
static constexpr int exponent = Exponent;
static constexpr int radix = Radix;
};
template<typename FixedPointType>
static constexpr FixedPointType
fixed_from_data(typename UnwrapFixedPoint<FixedPointType>::rep data)
{
return cnl::from_rep<FixedPointType,
typename UnwrapFixedPoint<FixedPointType>::rep> {}
(data);
}
template<typename Rep, int Exponent, int Radix>
static constexpr Rep
fixed_to_data(cnl::fixed_point<Rep, Exponent, Radix> data)
{
return cnl::to_rep<cnl::fixed_point<Rep, Exponent, Radix>>{}(data);
}
// Specialise of BitfieldHelper for fixed_point
template<typename BitfieldType, unsigned Position, unsigned Bits, class Rep, int Exponent, int Radix>
struct BitfieldHelper<BitfieldType, cnl::fixed_point<Rep, Exponent, Radix>, Position, Bits>
{
using FixedType = cnl::fixed_point<Rep, Exponent, Radix>;
using ValueBitfield = BitfieldHelper<BitfieldType, Rep, Position, Bits>;
static FixedType get(BitfieldType bitfield)
{
return cnl::from_rep<FixedType, Rep>{}(ValueBitfield::get(bitfield));
}
static inline BitfieldType set(BitfieldType bitfield, FixedType fixedValue)
{
return ValueBitfield::set(bitfield, cnl::to_rep<FixedType>{}(fixedValue));
}
};
================================================
FILE: src/common/floatutils.h
================================================
#pragma once
#include "bit_cast.h"
#include "bitutils.h"
#include <numeric>
union FloatBitsSingle
{
static const unsigned exponent_min = 0;
static const unsigned exponent_max = 0xff;
float v;
uint32_t uv;
struct
{
uint32_t mantissa : 23;
uint32_t exponent : 8;
uint32_t sign : 1;
};
struct
{
uint32_t : 22;
uint32_t quiet : 1;
uint32_t : 9;
};
};
union FloatBitsDouble
{
static const uint64_t exponent_min = 0;
static const uint64_t exponent_max = 0x7ff;
double v;
uint64_t uv;
struct
{
uint64_t mantissa : 52;
uint64_t exponent : 11;
uint64_t sign : 1;
};
struct
{
uint64_t : 51;
uint64_t quiet : 1;
uint64_t : 12;
};
};
inline FloatBitsSingle
get_float_bits(float v)
{
return { v };
}
inline FloatBitsDouble
get_float_bits(double v)
{
return { v };
}
template<typename Type>
inline bool
is_negative(Type v)
{
return get_float_bits(v).sign;
}
template<typename Type>
inline bool
is_positive(Type v)
{
return !is_negative(v);
}
template<typename Type>
inline bool
is_zero(Type v)
{
auto b = get_float_bits(v);
return b.exponent == 0 && b.mantissa == 0;
}
template<typename Type>
inline bool
is_positive_zero(Type v)
{
return is_positive(v) && is_zero(v);
}
template<typename Type>
inline bool
is_negative_zero(Type v)
{
return is_negative(v) && is_zero(v);
}
template<typename Type>
inline bool
is_normal(Type v)
{
auto d = get_float_bits(v);
return d.exponent > d.exponent_min
&& d.exponent < d.exponent_max;
}
template<typename Type>
inline bool
is_denormal(Type v)
{
auto d = get_float_bits(v);
return d.exponent == d.exponent_min
&& d.mantissa != 0;
}
template<typename Type>
inline bool
is_infinity(Type v)
{
auto d = get_float_bits(v);
return d.exponent == d.exponent_max
&& d.mantissa == 0;
}
template<typename Type>
inline bool
is_positive_infinity(Type v)
{
return is_positive(v) && is_infinity(v);
}
template<typename Type>
inline bool
is_negative_infinity(Type v)
{
return is_negative(v) && is_infinity(v);
}
template<typename Type>
inline bool
is_nan(Type v)
{
auto d = get_float_bits(v);
return d.exponent == d.exponent_max
&& d.mantissa != 0;
}
template<typename Type>
inline bool
is_quiet(Type v)
{
return !!get_float_bits(v).quiet;
}
template<typename Type>
inline bool
is_quiet_nan(Type v)
{
return is_nan(v) && is_quiet(v);
}
template<typename Type>
inline bool
is_signalling_nan(Type v)
{
return is_nan(v) && !is_quiet(v);
}
template<typename Type>
Type
make_quiet(Type v)
{
auto bits = get_float_bits(v);
bits.quiet = 1;
return bits.v;
}
template<typename Type>
Type
make_nan()
{
auto bits = get_float_bits(static_cast<Type>(0));
bits.exponent = bits.exponent_max;
bits.quiet = 1;
return bits.v;
}
inline uint64_t
extend_float_nan_bits(uint32_t v)
{
return ((uint64_t)(v & 0xC0000000) << 32
| (v & 0x40000000 ? UINT64_C(7) : UINT64_C(0)) << 59
| (uint64_t)(v & 0x3FFFFFFF) << 29);
}
inline double
extend_float(float v)
{
if (is_nan(v)) {
return bit_cast<double>(extend_float_nan_bits(bit_cast<uint32_t>(v)));
} else {
return static_cast<double>(v);
}
}
inline uint32_t
truncate_double_bits(uint64_t v)
{
return (v>>32 & 0xC0000000) | (v>>29 & 0x3FFFFFFF);
}
inline float
truncate_double(double v)
{
const FloatBitsDouble bits = get_float_bits(v);
if (bits.exponent <= 873) {
return bit_cast<float>(static_cast<uint32_t>(bits.sign)<<31);
} else if (bits.exponent <= 896) {
uint32_t mantissa = static_cast<uint32_t>(1<<23 | bits.mantissa>>29);
return bit_cast<float>(static_cast<uint32_t>(bits.sign)<<31 | (mantissa >> (897 - bits.exponent)));
} else if (bits.exponent >= 1151 && bits.exponent != 2047) {
return bit_cast<float>(static_cast<uint32_t>(bits.sign)<<31 | 0x7F800000);
} else {
return bit_cast<float>(truncate_double_bits(bits.uv));
}
}
================================================
FILE: src/common/frameallocator.h
================================================
#pragma once
#include <cstdint>
#include "align.h"
#include "decaf_assert.h"
class FrameAllocator
{
public:
FrameAllocator() :
mBase(nullptr),
mSize(0),
mOffset(0)
{
}
FrameAllocator(void *base,
size_t size) :
mBase(reinterpret_cast<uint8_t *>(base)),
mSize(size),
mOffset(0)
{
}
bool
empty() const
{
return mOffset == 0;
}
uint8_t *
top() const
{
return mBase + mOffset;
}
void *
allocate(size_t size,
size_t alignment = 4)
{
// Ensure section alignment
auto alignOffset = align_up(top(), alignment) - top();
size += alignOffset;
// Check we have enough size
decaf_check(mOffset + size <= mSize);
// Allocate data
auto result = top() + alignOffset;
mOffset += size;
return result;
}
void
reset()
{
mOffset = 0;
}
protected:
uint8_t *mBase;
size_t mSize;
size_t mOffset;
};
================================================
FILE: src/common/log.h
================================================
#pragma once
#include <fmt/core.h>
#include <memory>
#include <string_view>
/**
* Looks and acts like a spdlog logger but without including the spdlog header.
*/
class Logger
{
public:
enum class Level
{
trace = 0,
debug = 1,
info = 2,
warn = 3,
err = 4,
critical = 5,
off = 6
};
public:
template<typename String, typename... Args>
inline void trace(const String &str, const Args & ... args)
{
log(Level::trace, fmt::format(str, args...));
}
template<typename String, typename... Args>
inline void debug(const String &str, const Args & ... args)
{
log(Level::debug, fmt::format(str, args...));
}
template<typename String, typename... Args>
inline void info(const String &str, const Args & ... args)
{
log(Level::info, fmt::format(str, args...));
}
template<typename String, typename... Args>
inline void warn(const String &str, const Args & ... args)
{
log(Level::warn, fmt::format(str, args...));
}
template<typename String, typename... Args>
inline void error(const String &str, const Args & ... args)
{
log(Level::err, fmt::format(str, args...));
}
template<typename String, typename... Args>
inline void critical(const String &str, const Args & ... args)
{
log(Level::critical, fmt::format(str, args...));
}
inline void trace(std::string_view msg)
{
log(Level::trace, msg);
}
inline void debug(std::string_view msg)
{
log(Level::debug, msg);
}
inline void info(std::string_view msg)
{
log(Level::info, msg);
}
inline void warn(std::string_view msg)
{
log(Level::warn, msg);
}
inline void error(std::string_view msg)
{
log(Level::err, msg);
}
inline void critical(std::string_view msg)
{
log(Level::critical, msg);
}
Logger &operator=(std::shared_ptr<void> logger)
{
mLogger = logger;
return *this;
}
Logger *operator->()
{
return this;
}
bool should_log(Level level);
private:
void log(Level lvl, std::string_view msg);
private:
std::shared_ptr<void> mLogger;
};
extern Logger
gLog;
================================================
FILE: src/common/make_array.h
================================================
#pragma once
#include <array>
template <class ArrayType, class... ValueTypes>
constexpr auto make_array(ValueTypes&&... values)
-> std::array<ArrayType, sizeof...(ValueTypes)>
{
return { { std::forward<ValueTypes>(values)... } };
}
template<size_t Size, typename Type>
static auto make_filled_array(const Type &value)
{
std::array<Type, Size> a;
a.fill(value);
return a;
}
================================================
FILE: src/common/murmur3.h
================================================
//-----------------------------------------------------------------------------
// MurmurHash3 was written by Austin Appleby, and is placed in the
// public domain. The author hereby disclaims copyright to this source
// code.
#ifndef _MURMURHASH3_H_
#define _MURMURHASH3_H_
#include <cstdint>
#ifdef __cplusplus
extern "C" {
#endif
//-----------------------------------------------------------------------------
void MurmurHash3_x86_32(const void *key, int len, uint32_t seed, void *out);
void MurmurHash3_x86_128(const void *key, int len, uint32_t seed, void *out);
void MurmurHash3_x64_128(const void *key, int len, uint32_t seed, void *out);
//-----------------------------------------------------------------------------
#ifdef __cplusplus
}
#endif
#endif // _MURMURHASH3_H_
================================================
FILE: src/common/pch.h
================================================
#pragma once
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <cstdint>
#include <cstring>
#include <deque>
#include <fstream>
#include <functional>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <mutex>
#include <random>
#include <sstream>
#include <stack>
#include <string>
#include <string_view>
#include <thread>
#include <unordered_map>
#include <utility>
#include <vector>
#include <cnl/fixed_point.h>
#include <fmt/core.h>
#include <gsl/gsl-lite.hpp>
================================================
FILE: src/common/platform.h
================================================
#pragma once
#if defined(WIN32) || defined(_WIN32) || defined(_MSC_VER)
#define PLATFORM_WINDOWS
#elif __APPLE__
#define PLATFORM_APPLE
#define PLATFORM_POSIX
#define _XOPEN_SOURCE
#elif __linux__
#define PLATFORM_LINUX
#define PLATFORM_POSIX
#endif
================================================
FILE: src/common/platform_compiler.h
================================================
#pragma once
// Macro to indicate that a branch is likely or unlikely to be taken.
#ifdef __GNUC__ // Includes Clang.
#define LIKELY(x) __builtin_expect(!!(x), 1)
#define UNLIKELY(x) __builtin_expect(!!(x), 0)
#else
#define LIKELY(x) (x)
#define UNLIKELY(x) (x)
#endif
// Macros to force a function to always or never be inlined.
#ifdef __GNUC__
#define ALWAYS_INLINE inline __attribute__((always_inline))
#define NEVER_INLINE __attribute__((noinline))
#elif defined(_MSC_VER)
#define ALWAYS_INLINE __forceinline
#define NEVER_INLINE __declspec(noinline)
#else
#define ALWAYS_INLINE //nothing
#define NEVER_INLINE //nothing
#endif
// Macro to disable optimization when building with Clang on a function which
// both performs floating-point operations and checks exception flags that
// could be affected by those operations. This is required because LLVM is
// unaware of the fact that floating-point operations can raise exceptions
// (see http://llvm.org/bugs/show_bug.cgi?id=6050). Place this immediately
// before the opening brace for the function.
#ifdef __clang__
#define CLANG_FPU_BUG_WORKAROUND __attribute__((optnone))
#else
#define CLANG_FPU_BUG_WORKAROUND //nothing
#endif
================================================
FILE: src/common/platform_debug.h
================================================
#pragma once
#include <string>
namespace platform
{
void
debugBreak();
void
debugLog(const std::string& message);
} // namespace platform
================================================
FILE: src/common/platform_dir.h
================================================
#pragma once
#include <string>
namespace platform
{
bool
createDirectory(const std::string &path);
bool
createParentDirectories(const std::string &path);
bool
fileExists(const std::string &path);
bool
isFile(const std::string &path);
bool
isDirectory(const std::string &path);
std::string
getConfigDirectory();
} // namespace platform
================================================
FILE: src/common/platform_exception.h
================================================
#pragma once
#include <functional>
namespace platform
{
struct Fiber;
struct Exception
{
enum Type
{
AccessViolation = 1,
InvalidInstruction = 2,
};
Exception(Type type_) :
type(type_)
{
}
Type type;
};
struct AccessViolationException : Exception
{
AccessViolationException(uint64_t address_) :
Exception(Exception::AccessViolation),
address(address_)
{
}
uint64_t address;
};
struct InvalidInstructionException : Exception
{
InvalidInstructionException() :
Exception(Exception::InvalidInstruction)
{
}
};
typedef void (*ExceptionResumeFunc)();
using ExceptionHandler = std::function<ExceptionResumeFunc(Exception *exception)>;
// Can be returned from ExceptionHandler to indicate to resume
// execute of current fiber.
static ExceptionResumeFunc const
HandledException = reinterpret_cast<ExceptionResumeFunc>(static_cast<uintptr_t>(-1));
static ExceptionResumeFunc const
UnhandledException = reinterpret_cast<ExceptionResumeFunc>(static_cast<uintptr_t>(0));
bool
installExceptionHandler(ExceptionHandler handler);
} // namespace platform
================================================
FILE: src/common/platform_fiber.h
================================================
#pragma once
#include <functional>
namespace platform
{
struct Fiber;
using FiberEntryPoint = std::function<void(void *)>;
Fiber *
getThreadFiber();
Fiber *
createFiber(FiberEntryPoint entry,
void *entryParam);
void
destroyFiber(Fiber *fiber);
void
swapToFiber(Fiber *current,
Fiber *target);
} // namespace platform
================================================
FILE: src/common/platform_intrin.h
================================================
#pragma once
#if defined(_MSC_VER) || defined(__SSE3__)
#define PLATFORM_HAS_SSE3
#endif
#if defined(_MSC_VER)
#include <intrin.h>
#else
#include <x86intrin.h>
#endif
================================================
FILE: src/common/platform_memory.h
================================================
#pragma once
#include <cstddef>
#include <cstdint>
#include <string>
namespace platform
{
enum class ProtectFlags
{
NoAccess,
ReadOnly,
ReadWrite,
ReadExecute,
ReadWriteExecute
};
using MapFileHandle = intptr_t;
static constexpr MapFileHandle InvalidMapFileHandle = -1;
size_t
getSystemPageSize();
MapFileHandle
createMemoryMappedFile(size_t size);
MapFileHandle
openMemoryMappedFile(const std::string &path,
ProtectFlags flags,
size_t *outSize);
bool
closeMemoryMappedFile(MapFileHandle handle);
void *
mapViewOfFile(MapFileHandle handle,
ProtectFlags flags,
size_t offset,
size_t size,
void *dst = nullptr);
bool
unmapViewOfFile(void *view,
size_t size);
bool
reserveMemory(uintptr_t address,
size_t size);
bool
freeMemory(uintptr_t address,
size_t size);
bool
commitMemory(uintptr_t address,
size_t size,
ProtectFlags flags = ProtectFlags::ReadWrite);
bool
uncommitMemory(uintptr_t address,
size_t size);
bool
protectMemory(uintptr_t address,
size_t size,
ProtectFlags flags);
} // namespace platform
================================================
FILE: src/common/platform_socket.h
================================================
#pragma once
#include "platform.h"
#ifdef PLATFORM_WINDOWS
#define WIN32_LEAN_AND_MEAN
#include <WinSock2.h>
#include <Ws2tcpip.h>
#else
#include <fcntl.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/select.h>
#include <sys/types.h>
#endif
namespace platform
{
#ifdef PLATFORM_WINDOWS
using Socket = SOCKET;
#else
using Socket = int;
#endif
bool socketWouldBlock(int result);
int socketSetBlocking(Socket socket, bool blocking);
int socketClose(Socket socket);
} // namespace platform
================================================
FILE: src/common/platform_stacktrace.h
================================================
#pragma once
#include <string>
namespace platform
{
struct StackTrace;
StackTrace *
captureStackTrace();
void
freeStackTrace(StackTrace *trace);
std::string
formatStackTrace(StackTrace *trace);
void
printStackTrace(StackTrace *trace);
} // namespace platform
================================================
FILE: src/common/platform_thread.h
================================================
#pragma once
#include <thread>
#include <string>
namespace platform
{
void
setThreadName(std::thread *thread,
const std::string &name);
void
exitThread(int result);
} // namespace platform
================================================
FILE: src/common/platform_time.h
================================================
#pragma once
#include <ctime>
namespace platform
{
tm
localtime(const std::time_t& time);
time_t
make_gm_time(std::tm time);
} // namespace platform
================================================
FILE: src/common/platform_winapi_string.h
================================================
#pragma once
#include "platform.h"
#ifdef PLATFORM_WINDOWS
#include <string>
#include <string_view>
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
namespace platform
{
/**
* Convert from UTF-8 string to UTF-16 string expected by Windows API.
*/
static inline std::wstring
toWinApiString(const std::string_view &utf8)
{
auto result = std::wstring { };
auto size = MultiByteToWideChar(CP_UTF8, 0,
utf8.data(), static_cast<int>(utf8.size()),
NULL, 0);
result.resize(size);
MultiByteToWideChar(CP_UTF8, 0,
utf8.data(), static_cast<int>(utf8.size()),
result.data(), static_cast<int>(result.size()));
return result;
}
/**
* Convert to UTF-8 string from UTF-16 string returned by Windows API.
*/
static inline std::string
fromWinApiString(const std::wstring_view &utf16)
{
auto result = std::string { };
auto size = WideCharToMultiByte(CP_UTF8, 0,
utf16.data(), static_cast<int>(utf16.size()),
NULL, 0,
NULL, NULL);
result.resize(size);
WideCharToMultiByte(CP_UTF8, 0,
utf16.data(), static_cast<int>(utf16.size()),
result.data(), static_cast<int>(result.size()),
NULL, NULL);
return result;
}
} // namespace platform
#endif // ifdef PLATFORM_WINDOWS
================================================
FILE: src/common/pow.h
================================================
#pragma once
template<typename Type>
inline Type
Log2(Type x)
{
Type y = 0;
while (x > 1) {
x >>= 1;
y++;
}
return y;
}
================================================
FILE: src/common/rangecombiner.h
================================================
#pragma once
// void(_ObjType object, _OffsetType offset, _SizeType size)
template<typename _ObjType, typename _OffsetType, typename _SizeType, typename _FunctorType>
class RangeCombiner
{
public:
RangeCombiner(_FunctorType functor)
: _functor(functor)
{
}
void push(_ObjType object, _OffsetType offset, _SizeType size)
{
if (_size > 0 && _object == object && _offset + _size == offset) {
_size += size;
} else {
flush();
_object = object;
_offset = offset;
_size = size;
}
}
void flush()
{
if (_size == 0) {
return;
}
_functor(_object, _offset, _size);
_object = {};
_offset = {};
_size = {};
}
protected:
_FunctorType _functor = nullptr;
_ObjType _object = {};
_OffsetType _offset = {};
_SizeType _size = {};
};
template<typename _ObjType, typename _OffsetType, typename _SizeType, typename _FunctorType>
static inline RangeCombiner<_ObjType, _OffsetType, _SizeType, _FunctorType>
makeRangeCombiner(_FunctorType functor)
{
return RangeCombiner<_ObjType, _OffsetType, _SizeType, _FunctorType>(functor);
}
================================================
FILE: src/common/src/assert.cpp
================================================
#include "decaf_assert.h"
#include "log.h"
#include "platform.h"
#include "platform_stacktrace.h"
#include <fmt/format.h>
#include <iterator>
#include <iostream>
#ifdef PLATFORM_WINDOWS
#include "platform_winapi_string.h"
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#undef NDEBUG
#include <cassert>
#endif
void
assertFailed(const char *file,
unsigned line,
const char *expression,
const std::string &message)
{
auto stackTrace = platform::captureStackTrace();
auto trace = platform::formatStackTrace(stackTrace);
platform::freeStackTrace(stackTrace);
fmt::memory_buffer out;
fmt::format_to(std::back_inserter(out), "Assertion failed:\n");
fmt::format_to(std::back_inserter(out), "Expression: {}\n", expression);
fmt::format_to(std::back_inserter(out), "File: {}\n", file);
fmt::format_to(std::back_inserter(out), "Line: {}\n", line);
if (!message.empty()) {
fmt::format_to(std::back_inserter(out), "Message: {}\n", message);
}
if (trace.size()) {
fmt::format_to(std::back_inserter(out), "Stacktrace:\n{}\n", trace);
}
out.push_back('\0');
gLog->critical("{}", out.data());
std::cerr << out.data() << std::endl;
#ifdef PLATFORM_WINDOWS
if (IsDebuggerPresent()) {
OutputDebugStringW(platform::toWinApiString(out.data()).c_str());
} else {
auto wmsg = platform::toWinApiString(message);
auto expr = platform::toWinApiString(expression);
if (!wmsg.empty()) {
expr += L"\nMessage: ";
expr += wmsg;
}
_wassert(expr.c_str(), platform::toWinApiString(file).c_str(), line);
}
#endif
}
void
assertWarnFailed(const char *file,
unsigned line,
const char *expression,
const std::string &message)
{
gLog->warn("Asserted `{}` ({}) at {}:{}", expression, message, file, line);
}
void
hostFaultWithStackTrace(const std::string &fault,
platform::StackTrace *stackTrace)
{
auto trace = platform::formatStackTrace(stackTrace);
fmt::memory_buffer out;
fmt::format_to(std::back_inserter(out), "Encountered host cpu fault:\n");
fmt::format_to(std::back_inserter(out), "Fault: {}\n", fault);
if (trace.size()) {
fmt::format_to(std::back_inserter(out), "Stacktrace:\n{}\n", trace);
}
out.push_back('\0');
gLog->critical("{}", out.data());
std::cerr << out.data() << std::endl;
#ifdef PLATFORM_WINDOWS
if (IsDebuggerPresent()) {
OutputDebugStringW(platform::toWinApiString(out.data()).c_str());
} else {
MessageBoxW(NULL,
platform::toWinApiString(fault).c_str(),
L"Encountered host cpu fault",
MB_OK | MB_ICONERROR);
}
#endif
}
================================================
FILE: src/common/src/log.cpp
================================================
#include "log.h"
#include <spdlog/spdlog.h>
Logger gLog;
void
Logger::log(Level lvl, std::string_view msg)
{
if (mLogger) {
auto logger = reinterpret_cast<spdlog::logger *>(mLogger.get());
logger->log(static_cast<spdlog::level::level_enum>(lvl), msg);
}
}
bool
Logger::should_log(Level level)
{
if (!mLogger) {
return false;
}
auto logger = reinterpret_cast<spdlog::logger *>(mLogger.get());
return logger->should_log(static_cast<spdlog::level::level_enum>(level));
}
================================================
FILE: src/common/src/murmur3.cpp
================================================
//-----------------------------------------------------------------------------
// MurmurHash3 was written by Austin Appleby, and is placed in the public
// domain. The author hereby disclaims copyright to this source code.
// Note - The x86 and x64 versions do _not_ produce the same results, as the
// algorithms are optimized for their respective platforms. You can still
// compile and run any of them on any platform, but your performance with the
// non-native version will be less than optimal.
#include "murmur3.h"
//-----------------------------------------------------------------------------
// Platform-specific functions and macros
#ifdef __GNUC__
#define FORCE_INLINE __attribute__((always_inline)) inline
#else
#define FORCE_INLINE inline
#endif
static FORCE_INLINE uint32_t rotl32(uint32_t x, int8_t r)
{
return (x << r) | (x >> (32 - r));
}
static FORCE_INLINE uint64_t rotl64(uint64_t x, int8_t r)
{
return (x << r) | (x >> (64 - r));
}
#define ROTL32(x,y) rotl32(x,y)
#define ROTL64(x,y) rotl64(x,y)
#define BIG_CONSTANT(x) (x##LLU)
//-----------------------------------------------------------------------------
// Block read - if your platform needs to do endian-swapping or can only
// handle aligned reads, do the conversion here
#define getblock(p, i) (p[i])
//-----------------------------------------------------------------------------
// Finalization mix - force all bits of a hash block to avalanche
static FORCE_INLINE uint32_t fmix32(uint32_t h)
{
h ^= h >> 16;
h *= 0x85ebca6b;
h ^= h >> 13;
h *= 0xc2b2ae35;
h ^= h >> 16;
return h;
}
//----------
static FORCE_INLINE uint64_t fmix64(uint64_t k)
{
k ^= k >> 33;
k *= BIG_CONSTANT(0xff51afd7ed558ccd);
k ^= k >> 33;
k *= BIG_CONSTANT(0xc4ceb9fe1a85ec53);
k ^= k >> 33;
return k;
}
//-----------------------------------------------------------------------------
void MurmurHash3_x86_32(const void * key, int len,
uint32_t seed, void * out)
{
const uint8_t * data = (const uint8_t*)key;
const int nblocks = len / 4;
int i;
uint32_t h1 = seed;
uint32_t c1 = 0xcc9e2d51;
uint32_t c2 = 0x1b873593;
//----------
// body
const uint32_t * blocks = (const uint32_t *)(data + nblocks * 4);
for (i = -nblocks; i; i++)
{
uint32_t k1 = getblock(blocks, i);
k1 *= c1;
k1 = ROTL32(k1, 15);
k1 *= c2;
h1 ^= k1;
h1 = ROTL32(h1, 13);
h1 = h1 * 5 + 0xe6546b64;
}
//----------
// tail
const uint8_t * tail = (const uint8_t*)(data + nblocks * 4);
uint32_t k1 = 0;
switch (len & 3)
{
case 3: k1 ^= tail[2] << 16;
case 2: k1 ^= tail[1] << 8;
case 1: k1 ^= tail[0];
k1 *= c1; k1 = ROTL32(k1, 15); k1 *= c2; h1 ^= k1;
};
//----------
// finalization
h1 ^= len;
h1 = fmix32(h1);
*(uint32_t*)out = h1;
}
//-----------------------------------------------------------------------------
void MurmurHash3_x86_128(const void * key, const int len,
uint32_t seed, void * out)
{
const uint8_t * data = (const uint8_t*)key;
const int nblocks = len / 16;
int i;
uint32_t h1 = seed;
uint32_t h2 = seed;
uint32_t h3 = seed;
uint32_t h4 = seed;
uint32_t c1 = 0x239b961b;
uint32_t c2 = 0xab0e9789;
uint32_t c3 = 0x38b34ae5;
uint32_t c4 = 0xa1e38b93;
//----------
// body
const uint32_t * blocks = (const uint32_t *)(data + nblocks * 16);
for (i = -nblocks; i; i++)
{
uint32_t k1 = getblock(blocks, i * 4 + 0);
uint32_t k2 = getblock(blocks, i * 4 + 1);
uint32_t k3 = getblock(blocks, i * 4 + 2);
uint32_t k4 = getblock(blocks, i * 4 + 3);
k1 *= c1; k1 = ROTL32(k1, 15); k1 *= c2; h1 ^= k1;
h1 = ROTL32(h1, 19); h1 += h2; h1 = h1 * 5 + 0x561ccd1b;
k2 *= c2; k2 = ROTL32(k2, 16); k2 *= c3; h2 ^= k2;
h2 = ROTL32(h2, 17); h2 += h3; h2 = h2 * 5 + 0x0bcaa747;
k3 *= c3; k3 = ROTL32(k3, 17); k3 *= c4; h3 ^= k3;
h3 = ROTL32(h3, 15); h3 += h4; h3 = h3 * 5 + 0x96cd1c35;
k4 *= c4; k4 = ROTL32(k4, 18); k4 *= c1; h4 ^= k4;
h4 = ROTL32(h4, 13); h4 += h1; h4 = h4 * 5 + 0x32ac3b17;
}
//----------
// tail
const uint8_t * tail = (const uint8_t*)(data + nblocks * 16);
uint32_t k1 = 0;
uint32_t k2 = 0;
uint32_t k3 = 0;
uint32_t k4 = 0;
switch (len & 15)
{
case 15: k4 ^= tail[14] << 16;
case 14: k4 ^= tail[13] << 8;
case 13: k4 ^= tail[12] << 0;
k4 *= c4; k4 = ROTL32(k4, 18); k4 *= c1; h4 ^= k4;
case 12: k3 ^= tail[11] << 24;
case 11: k3 ^= tail[10] << 16;
case 10: k3 ^= tail[9] << 8;
case 9: k3 ^= tail[8] << 0;
k3 *= c3; k3 = ROTL32(k3, 17); k3 *= c4; h3 ^= k3;
case 8: k2 ^= tail[7] << 24;
case 7: k2 ^= tail[6] << 16;
case 6: k2 ^= tail[5] << 8;
case 5: k2 ^= tail[4] << 0;
k2 *= c2; k2 = ROTL32(k2, 16); k2 *= c3; h2 ^= k2;
case 4: k1 ^= tail[3] << 24;
case 3: k1 ^= tail[2] << 16;
case 2: k1 ^= tail[1] << 8;
case 1: k1 ^= tail[0] << 0;
k1 *= c1; k1 = ROTL32(k1, 15); k1 *= c2; h1 ^= k1;
};
//----------
// finalization
h1 ^= len; h2 ^= len; h3 ^= len; h4 ^= len;
h1 += h2; h1 += h3; h1 += h4;
h2 += h1; h3 += h1; h4 += h1;
h1 = fmix32(h1);
h2 = fmix32(h2);
h3 = fmix32(h3);
h4 = fmix32(h4);
h1 += h2; h1 += h3; h1 += h4;
h2 += h1; h3 += h1; h4 += h1;
((uint32_t*)out)[0] = h1;
((uint32_t*)out)[1] = h2;
((uint32_t*)out)[2] = h3;
((uint32_t*)out)[3] = h4;
}
//-----------------------------------------------------------------------------
void MurmurHash3_x64_128(const void * key, const int len,
const uint32_t seed, void * out)
{
const uint8_t * data = (const uint8_t*)key;
const int nblocks = len / 16;
int i;
uint64_t h1 = seed;
uint64_t h2 = seed;
uint64_t c1 = BIG_CONSTANT(0x87c37b91114253d5);
uint64_t c2 = BIG_CONSTANT(0x4cf5ad432745937f);
//----------
// body
const uint64_t * blocks = (const uint64_t *)(data);
for (i = 0; i < nblocks; i++)
{
uint64_t k1 = getblock(blocks, i * 2 + 0);
uint64_t k2 = getblock(blocks, i * 2 + 1);
k1 *= c1; k1 = ROTL64(k1, 31); k1 *= c2; h1 ^= k1;
h1 = ROTL64(h1, 27); h1 += h2; h1 = h1 * 5 + 0x52dce729;
k2 *= c2; k2 = ROTL64(k2, 33); k2 *= c1; h2 ^= k2;
h2 = ROTL64(h2, 31); h2 += h1; h2 = h2 * 5 + 0x38495ab5;
}
//----------
// tail
const uint8_t * tail = (const uint8_t*)(data + nblocks * 16);
uint64_t k1 = 0;
uint64_t k2 = 0;
switch (len & 15)
{
case 15: k2 ^= (uint64_t)(tail[14]) << 48;
case 14: k2 ^= (uint64_t)(tail[13]) << 40;
case 13: k2 ^= (uint64_t)(tail[12]) << 32;
case 12: k2 ^= (uint64_t)(tail[11]) << 24;
case 11: k2 ^= (uint64_t)(tail[10]) << 16;
case 10: k2 ^= (uint64_t)(tail[9]) << 8;
case 9: k2 ^= (uint64_t)(tail[8]) << 0;
k2 *= c2; k2 = ROTL64(k2, 33); k2 *= c1; h2 ^= k2;
case 8: k1 ^= (uint64_t)(tail[7]) << 56;
case 7: k1 ^= (uint64_t)(tail[6]) << 48;
case 6: k1 ^= (uint64_t)(tail[5]) << 40;
case 5: k1 ^= (uint64_t)(tail[4]) << 32;
case 4: k1 ^= (uint64_t)(tail[3]) << 24;
case 3: k1 ^= (uint64_t)(tail[2]) << 16;
case 2: k1 ^= (uint64_t)(tail[1]) << 8;
case 1: k1 ^= (uint64_t)(tail[0]) << 0;
k1 *= c1; k1 = ROTL64(k1, 31); k1 *= c2; h1 ^= k1;
};
//----------
// finalization
h1 ^= len; h2 ^= len;
h1 += h2;
h2 += h1;
h1 = fmix64(h1);
h2 = fmix64(h2);
h1 += h2;
h2 += h1;
((uint64_t*)out)[0] = h1;
((uint64_t*)out)[1] = h2;
}
//-----------------------------------------------------------------------------
================================================
FILE: src/common/src/platform_posix_debug.cpp
================================================
#include "platform.h"
#include "platform_debug.h"
#ifdef PLATFORM_POSIX
namespace platform
{
void
debugBreak()
{
// TODO: Implement debug breaks for POSIX
}
void
debugLog(const std::string& message)
{
// TODO: Implement IDE debug logging for POSIX
}
} // namespace platform
#endif
================================================
FILE: src/common/src/platform_posix_dir.cpp
================================================
#include "platform.h"
#include "platform_dir.h"
#ifdef PLATFORM_POSIX
#include <errno.h>
#include <fmt/core.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
namespace platform
{
bool
createDirectory(const std::string &path)
{
if (!createParentDirectories(path)) {
return false;
}
return mkdir(path.c_str(), 0755) == 0
|| (errno == EEXIST && isDirectory(path));
}
bool
createParentDirectories(const std::string &path)
{
auto slashPos = path.rfind('/');
if (slashPos == std::string::npos || slashPos == 0) {
return true;
}
return createDirectory(path.substr(0, slashPos));
}
bool
fileExists(const std::string &path)
{
return access(path.c_str(), F_OK) != -1;
}
bool
isFile(const std::string &path)
{
struct stat info;
auto result = stat(path.c_str(), &info);
if (result != 0) {
return false;
}
return S_ISREG(info.st_mode);
}
bool
isDirectory(const std::string &path)
{
struct stat info;
auto result = stat(path.c_str(), &info);
if (result != 0) {
return false;
}
return S_ISDIR(info.st_mode);
}
std::string
getConfigDirectory()
{
// TODO: will be different for Mac
const char *home = getenv("HOME");
if (home && *home) {
return fmt::format("{}/.config", home);
} else {
return ".";
}
}
} // namespace platform
#endif
================================================
FILE: src/common/src/platform_posix_exception.cpp
================================================
#include <vector>
#include "platform.h"
#include "platform_exception.h"
#include "platform_fiber.h"
#include "log.h"
#ifdef PLATFORM_POSIX
#ifndef _GNU_SOURCE
# define _GNU_SOURCE
#endif
#include <errno.h>
#include <signal.h>
#include <string.h>
#include <ucontext.h>
namespace platform
{
static std::vector<ExceptionHandler>
sExceptionHandlers;
static struct sigaction
sSegvHandler;
static struct sigaction
sSystemSegvHandler;
static struct sigaction
sIllHandler;
static struct sigaction
sSystemIllHandler;
static void
dispatchException(Exception *exception,
void *context,
int signum,
const struct sigaction *ourHandler,
const struct sigaction *sysHandler)
{
// Reset to the original signal handler in case an exception handler
// generates a signal of its own
sigaction(signum, sysHandler, nullptr);
static bool sInSignal = false;
// Avoid recursive signal handling (in case an exception handler looking
// at a SIGILL causes a SIGSEGV, for example)
if (sInSignal) {
return;
}
sInSignal = true;
for (auto &handler : sExceptionHandlers) {
auto func = handler(exception);
if (func == UnhandledException) {
// Exception unhandled, try another handler
continue;
}
sInSignal = false;
// Reinstall our signal handler
sigaction(signum, ourHandler, nullptr);
if (func == HandledException) {
// Exception handled, resume execution
return;
} else {
// Exception handled, switch execution to target function
auto ctx = reinterpret_cast<ucontext_t *>(context);
#ifdef PLATFORM_APPLE
ctx->uc_mcontext->__ss.__rip = reinterpret_cast<uint64_t>(func);
#else
ctx->uc_mcontext.gregs[REG_RIP] = reinterpret_cast<uint64_t>(func);
#endif
return;
}
}
// No exception handlers, found, so re-run the failing instruction to
// call the original signal handler
return;
}
static void
segvHandler(int signum, siginfo_t *info, void *context)
{
auto exception = AccessViolationException { reinterpret_cast<uint64_t>(info->si_addr) };
dispatchException(&exception, context, signum, &sSegvHandler, &sSystemSegvHandler);
}
static void
illHandler(int signum, siginfo_t *info, void *context)
{
auto exception = InvalidInstructionException { };
dispatchException(&exception, context, signum, &sIllHandler, &sSystemIllHandler);
}
bool
installExceptionHandler(ExceptionHandler handler)
{
static bool addedHandlers = false;
if (!addedHandlers) {
sigemptyset(&sSegvHandler.sa_mask);
// Set SA_RESETHAND so that a SEGV in the handler will terminate the
// program rather than going into an infinite loop.
sSegvHandler.sa_flags = SA_SIGINFO | SA_RESETHAND;
sSegvHandler.sa_sigaction = segvHandler;
if (sigaction(SIGSEGV, &sSegvHandler, &sSystemSegvHandler) != 0) {
gLog->error("sigaction(SIGSEGV) failed: {}", strerror(errno));
return false;
}
sIllHandler = sSegvHandler;
sIllHandler.sa_sigaction = illHandler;
if (sigaction(SIGILL, &sIllHandler, &sSystemIllHandler) != 0) {
gLog->error("sigaction(SIGILL) failed: {}", strerror(errno));
return false;
}
addedHandlers = true;
}
sExceptionHandlers.push_back(handler);
return true;
}
} // namespace platform
#endif
================================================
FILE: src/common/src/platform_posix_fiber.cpp
================================================
#include "platform.h"
#include "platform_fiber.h"
#include "log.h"
#ifdef PLATFORM_POSIX
#include <array>
#include <errno.h>
#include <signal.h>
#include <ucontext.h>
#ifdef DECAF_VALGRIND
#include <valgrind/valgrind.h>
#endif
namespace platform
{
static const size_t
DefaultStackSize = 1024 * 1024;
struct Fiber
{
ucontext_t context;
FiberEntryPoint entry = nullptr;
void *entryParam = nullptr;
#ifdef DECAF_VALGRIND
unsigned int valgrindStackId;
#endif
std::array<char, DefaultStackSize> stack;
};
Fiber *
getThreadFiber()
{
auto fiber = new Fiber();
return fiber;
}
static void
fiberEntryPoint(Fiber *fiber)
{
fiber->entry(fiber->entryParam);
}
Fiber *
createFiber(FiberEntryPoint entry, void *entryParam)
{
auto fiber = new Fiber();
fiber->entry = entry;
fiber->entryParam = entryParam;
#ifdef DECAF_VALGRIND
fiber->valgrindStackId = VALGRIND_STACK_REGISTER(&fiber->stack[0], &fiber->stack[fiber->stack.size() - 1]);
#endif
getcontext(&fiber->context);
fiber->context.uc_stack.ss_sp = &fiber->stack[0];
fiber->context.uc_stack.ss_size = fiber->stack.size();
fiber->context.uc_link = nullptr;
makecontext(&fiber->context, reinterpret_cast<void(*)()>(&fiberEntryPoint), 1, fiber);
return fiber;
}
void
destroyFiber(Fiber *fiber)
{
#ifdef DECAF_VALGRIND
VALGRIND_STACK_DEREGISTER(fiber->valgrindStackId);
#endif
delete fiber;
}
void
swapToFiber(Fiber *current, Fiber *target)
{
if (!current) {
setcontext(&target->context);
} else {
swapcontext(¤t->context, &target->context);
}
}
} // namespace platform
#endif
================================================
FILE: src/common/src/platform_posix_memory.cpp
================================================
#include "platform.h"
#include "platform_memory.h"
#include "log.h"
#ifdef PLATFORM_POSIX
#include <common/decaf_assert.h>
#include <cstdlib>
#include <errno.h>
#include <fmt/core.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>
namespace platform
{
static int
flagsToProt(ProtectFlags flags)
{
switch (flags) {
case ProtectFlags::ReadOnly:
return PROT_READ;
case ProtectFlags::ReadWrite:
return PROT_READ | PROT_WRITE;
case ProtectFlags::ReadExecute:
return PROT_READ | PROT_EXEC;
case ProtectFlags::ReadWriteExecute:
return PROT_READ | PROT_WRITE | PROT_EXEC;
case ProtectFlags::NoAccess:
default:
return PROT_WRITE;
}
}
static int
flagsToOpen(ProtectFlags flags)
{
switch (flags) {
case ProtectFlags::ReadOnly:
return O_RDONLY;
case ProtectFlags::ReadWrite:
return O_RDWR;
case ProtectFlags::ReadExecute:
return O_RDONLY;
case ProtectFlags::ReadWriteExecute:
return O_RDWR;
case ProtectFlags::NoAccess:
default:
return PROT_WRITE;
}
}
size_t
getSystemPageSize()
{
return static_cast<size_t>(sysconf(_SC_PAGESIZE));
}
MapFileHandle
createMemoryMappedFile(size_t size)
{
const char *tmpdir = getenv("TMPDIR");
if (!tmpdir || !*tmpdir) {
tmpdir = "/tmp";
}
const std::string pattern = fmt::format("{}/decafXXXXXX", tmpdir);
char *path = strdup(pattern.c_str()); // Must be a modifiable char array.
int old_umask = umask(0077);
int fd = mkstemp(path);
if (fd == -1) {
gLog->error("createMemoryMappedFile({}) mkstemp failed with error: {}",
size, errno);
umask(old_umask);
return InvalidMapFileHandle;
}
umask(old_umask);
if (unlink(path) == -1) {
gLog->error("createMemoryMappedFile({}) unlink failed with error: {}",
size, errno);
}
free(path);
#ifdef PLATFORM_APPLE
if (ftruncate(fd, size) == -1) {
#else
if (ftruncate64(fd, size) == -1) {
#endif
gLog->error("createMemoryMappedFile({}) ftruncate64 failed with error: {}",
size, errno);
}
return static_cast<MapFileHandle>(fd);
}
MapFileHandle
openMemoryMappedFile(const std::string &path,
ProtectFlags flags,
size_t *outSize)
{
// Only support READ ONLY for now
decaf_check(flags == ProtectFlags::ReadOnly);
struct stat st;
if (stat(path.c_str(), &st) == -1) {
gLog->error("openMemoryMappedFile(\"{}\") stat failed with error: {}",
path, errno);
return InvalidMapFileHandle;
}
auto fd = open(path.c_str(), flagsToOpen(flags), 0);
if (fd == -1) {
gLog->error("openMemoryMappedFile(\"{}\") open failed with error: {}",
path, errno);
return InvalidMapFileHandle;
}
*outSize = st.st_size;
return static_cast<MapFileHandle>(fd);
}
bool
closeMemoryMappedFile(MapFileHandle handle)
{
if (close(static_cast<int>(handle)) == -1) {
gLog->error("closeMemoryMappedFile({}) close failed with error: {}",
static_cast<int>(handle), errno);
return false;
}
return true;
}
void *
mapViewOfFile(MapFileHandle handle,
ProtectFlags flags,
size_t offset,
size_t size,
void *dst)
{
auto prot = flagsToProt(flags);
auto result = mmap(dst,
size,
prot,
MAP_SHARED,
static_cast<int>(handle),
offset);
if (result == MAP_FAILED) {
gLog->error("mapViewOfFile(offset: 0x{:X}, size: 0x{:X}, dst: {}) mmap failed with error: {}",
offset, size, dst, errno);
return nullptr;
}
if (result != dst) {
gLog->error("mapViewOfFile(offset: 0x{:X}, size: 0x{:X}, dst: {}) mmap returned unexpected address: {}",
offset, size, dst, result);
munmap(result, size);
return nullptr;
}
return result;
}
bool
unmapViewOfFile(void *view,
size_t size)
{
if (munmap(view, size) == -1) {
gLog->error("unmapViewOfFile(view: 0x{:X}, size: 0x{:X}) munmap failed with error: {}",
view, size, errno);
return false;
}
return true;
}
bool
reserveMemory(uintptr_t address,
size_t size)
{
// On *nix systems, regions mapped with mmap are reserved only by default
// and become automatically commited on first use. Because these pages
// have no protection rights, they are forced to stay reserved.
auto baseAddress = reinterpret_cast<void *>(address);
auto result = mmap(baseAddress,
size,
PROT_NONE,
MAP_PRIVATE | MAP_ANONYMOUS,
-1,
0);
if (result == MAP_FAILED) {
gLog->debug("reserveMemory(address: 0x{:08X}, size: 0x{:X}) mmap failed with error: {}",
address, size, errno);
return false;
}
if (result != baseAddress) {
gLog->debug("reserveMemory(address: 0x{:08X}, size: 0x{:X}) returned unexpected address: {}",
address, size, result);
munmap(result, size);
return false;
}
return true;
}
bool
freeMemory(uintptr_t address,
size_t size)
{
auto baseAddress = reinterpret_cast<void *>(address);
if (munmap(baseAddress, size) == -1) {
gLog->error("freeMemory(address: 0x{:08X}, size: 0x{:X}) munmap failed with error: {}",
address, size, errno);
return false;
}
return true;
}
bool
commitMemory(uintptr_t address,
size_t size,
ProtectFlags flags)
{
auto baseAddress = reinterpret_cast<void *>(address);
if (mprotect(baseAddress, size, flagsToProt(flags)) == -1) {
gLog->error("commitMemory(address: 0x{:08X}, size: 0x{:X}, flags: {}) mprotect failed with error: {}",
address, size, static_cast<int>(flags), errno);
return false;
}
return true;
}
bool
uncommitMemory(uintptr_t address,
size_t size)
{
// On *nix systems, there is not really a way to forcibly uncommit
// a particular region of code. We just lock it out.
auto baseAddress = reinterpret_cast<void *>(address);
if (mprotect(baseAddress, size, PROT_NONE) == -1) {
gLog->error("uncommitMemory(address: {}, size: {}) mprotect failed with error: {}",
address, size, errno);
return false;
}
return true;
}
bool
protectMemory(uintptr_t address,
size_t size,
ProtectFlags flags)
{
auto baseAddress = reinterpret_cast<void *>(address);
if (mprotect(baseAddress, size, flagsToProt(flags)) == -1) {
gLog->error("protectMemory(address: {}, size: {}, flags: {}) mprotect failed with error: {}",
address, size, static_cast<int>(flags), errno);
return false;
}
return true;
}
} // namespace platform
#endif
================================================
FILE: src/common/src/platform_posix_socket.cpp
================================================
#include "platform_socket.h"
#ifdef PLATFORM_POSIX
#include <errno.h>
#include <unistd.h>
namespace platform
{
bool socketWouldBlock(int result)
{
return (result == EWOULDBLOCK);
}
int socketSetBlocking(Socket socket, bool blocking)
{
auto fl = fcntl(socket, F_GETFL, 0);
if (blocking) {
fl &= ~O_NONBLOCK;
} else {
fl |= O_NONBLOCK;
}
return fcntl(socket, F_SETFL, fl);
}
int socketClose(Socket socket)
{
return close(socket);
}
} // namespace platform
#endif
================================================
FILE: src/common/src/platform_posix_stacktrace.cpp
================================================
#include "decaf_assert.h"
#include "platform.h"
#include "platform_stacktrace.h"
#ifdef PLATFORM_POSIX
#include <stdexcept>
namespace platform
{
StackTrace * captureStackTrace()
{
return nullptr;
}
void freeStackTrace(StackTrace *)
{
}
std::string
formatStackTrace(StackTrace *trace)
{
return { };
}
void printStackTrace(StackTrace *)
{
decaf_abort("POSIX support for stack tracing is not implemented");
}
} // namespace platform
#endif
================================================
FILE: src/common/src/platform_posix_thread.cpp
================================================
#include "platform.h"
#include "platform_thread.h"
#ifdef PLATFORM_POSIX
#include <cstdlib>
#include <pthread.h>
namespace platform
{
void
setThreadName(std::thread *thread,
const std::string &name)
{
#ifndef PLATFORM_APPLE
auto handle = thread->native_handle();
pthread_setname_np(handle, name.c_str());
#endif
}
void
exitThread(int result)
{
auto res = reinterpret_cast<int *>(malloc(sizeof(int)));
*res = result;
pthread_exit(res);
}
} // namespace platform
#endif
================================================
FILE: src/common/src/platform_posix_time.cpp
================================================
#include "platform.h"
#include "platform_time.h"
#ifdef PLATFORM_POSIX
#include <time.h>
namespace platform
{
tm
localtime(const std::time_t& time)
{
std::tm tm_snapshot;
localtime_r(&time, &tm_snapshot);
return tm_snapshot;
}
time_t
make_gm_time(std::tm time)
{
return timegm(&time);
}
}
#endif
================================================
FILE: src/common/src/platform_win_debug.cpp
================================================
#include "platform.h"
#ifdef PLATFORM_WINDOWS
#include "platform_debug.h"
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
namespace platform
{
void
debugBreak()
{
DebugBreak();
}
void
debugLog(const std::string& message)
{
OutputDebugStringA(message.c_str());
}
} // namespace platform
#endif
================================================
FILE: src/common/src/platform_win_dir.cpp
====================================
gitextract_agvsy06u/ ├── .clang-format ├── .github/ │ └── workflows/ │ └── ccpp.yml ├── .gitignore ├── .gitmodules ├── BUILDING.md ├── CMakeLists.txt ├── CMakeModules/ │ ├── FindCARES.cmake │ ├── FindFFMPEG.cmake │ ├── FindLibUV.cmake │ ├── FindSDL2.cmake │ ├── FindWAYLAND.cmake │ ├── FindXCB.cmake │ ├── GetGitRevisionDescription.cmake │ └── GetGitRevisionDescription.cmake.in ├── CMakePresets.json ├── LICENSE.md ├── README.md ├── libraries/ │ ├── CMakeLists.txt │ └── bin2c.cmake ├── resources/ │ ├── CMakeLists.txt │ ├── decaf-sdl.rc │ ├── fonts/ │ │ ├── DejaVuSansMono.LICENSE │ │ └── NotoSansCJK.LICENSE │ ├── hidpi.manifest │ └── resource.h ├── src/ │ ├── CMakeLists.txt │ ├── common/ │ │ ├── CMakeLists.txt │ │ ├── align.h │ │ ├── atomicqueue.h │ │ ├── bit_cast.h │ │ ├── bitfield.h │ │ ├── bitutils.h │ │ ├── byte_swap.h │ │ ├── byte_swap_array.h │ │ ├── cbool.h │ │ ├── configstorage.h │ │ ├── count_of.h │ │ ├── datahash.h │ │ ├── decaf_assert.h │ │ ├── enum_end.inl │ │ ├── enum_start.inl │ │ ├── enum_string_declare.inl │ │ ├── enum_string_define.inl │ │ ├── fastregionmap.h │ │ ├── fixed.h │ │ ├── floatutils.h │ │ ├── frameallocator.h │ │ ├── log.h │ │ ├── make_array.h │ │ ├── murmur3.h │ │ ├── pch.h │ │ ├── platform.h │ │ ├── platform_compiler.h │ │ ├── platform_debug.h │ │ ├── platform_dir.h │ │ ├── platform_exception.h │ │ ├── platform_fiber.h │ │ ├── platform_intrin.h │ │ ├── platform_memory.h │ │ ├── platform_socket.h │ │ ├── platform_stacktrace.h │ │ ├── platform_thread.h │ │ ├── platform_time.h │ │ ├── platform_winapi_string.h │ │ ├── pow.h │ │ ├── rangecombiner.h │ │ ├── src/ │ │ │ ├── assert.cpp │ │ │ ├── log.cpp │ │ │ ├── murmur3.cpp │ │ │ ├── platform_posix_debug.cpp │ │ │ ├── platform_posix_dir.cpp │ │ │ ├── platform_posix_exception.cpp │ │ │ ├── platform_posix_fiber.cpp │ │ │ ├── platform_posix_memory.cpp │ │ │ ├── platform_posix_socket.cpp │ │ │ ├── platform_posix_stacktrace.cpp │ │ │ ├── platform_posix_thread.cpp │ │ │ ├── platform_posix_time.cpp │ │ │ ├── platform_win_debug.cpp │ │ │ ├── platform_win_dir.cpp │ │ │ ├── platform_win_exception.cpp │ │ │ ├── platform_win_fiber.cpp │ │ │ ├── platform_win_memory.cpp │ │ │ ├── platform_win_socket.cpp │ │ │ ├── platform_win_stacktrace.cpp │ │ │ ├── platform_win_thread.cpp │ │ │ └── platform_win_time.cpp │ │ ├── structsize.h │ │ ├── strutils.h │ │ ├── teenyheap.h │ │ ├── tga_encoder.cpp │ │ ├── tga_encoder.h │ │ ├── type_list.h │ │ ├── type_traits.h │ │ ├── vulkan_hpp.h │ │ ├── xxhash.c │ │ └── xxhash.h │ ├── decaf-cli/ │ │ ├── CMakeLists.txt │ │ ├── config.cpp │ │ ├── config.h │ │ ├── decafcli.cpp │ │ ├── decafcli.h │ │ └── main.cpp │ ├── decaf-qt/ │ │ ├── CMakeLists.txt │ │ ├── resources/ │ │ │ └── resources.qrc │ │ ├── src/ │ │ │ ├── aboutdialog.h │ │ │ ├── debugger/ │ │ │ │ ├── addresstextdocumentwidget.cpp │ │ │ │ ├── addresstextdocumentwidget.h │ │ │ │ ├── breakpointsmodel.h │ │ │ │ ├── breakpointswindow.cpp │ │ │ │ ├── breakpointswindow.h │ │ │ │ ├── debugdata.cpp │ │ │ │ ├── debugdata.h │ │ │ │ ├── debuggershortcuts.h │ │ │ │ ├── debuggerwindow.cpp │ │ │ │ ├── debuggerwindow.h │ │ │ │ ├── disassemblywidget.cpp │ │ │ │ ├── disassemblywidget.h │ │ │ │ ├── disassemblywindow.cpp │ │ │ │ ├── disassemblywindow.h │ │ │ │ ├── functionsmodel.h │ │ │ │ ├── functionswindow.cpp │ │ │ │ ├── functionswindow.h │ │ │ │ ├── jitprofilingmodel.h │ │ │ │ ├── jitprofilingwindow.cpp │ │ │ │ ├── jitprofilingwindow.h │ │ │ │ ├── memorywidget.cpp │ │ │ │ ├── memorywidget.h │ │ │ │ ├── memorywindow.cpp │ │ │ │ ├── memorywindow.h │ │ │ │ ├── registerswindow.cpp │ │ │ │ ├── registerswindow.h │ │ │ │ ├── segmentsmodel.h │ │ │ │ ├── segmentswindow.cpp │ │ │ │ ├── segmentswindow.h │ │ │ │ ├── stackwidget.cpp │ │ │ │ ├── stackwidget.h │ │ │ │ ├── stackwindow.cpp │ │ │ │ ├── stackwindow.h │ │ │ │ ├── threadsmodel.h │ │ │ │ ├── threadswindow.cpp │ │ │ │ ├── threadswindow.h │ │ │ │ ├── voicesmodel.h │ │ │ │ ├── voiceswindow.cpp │ │ │ │ └── voiceswindow.h │ │ │ ├── decafinterface.cpp │ │ │ ├── decafinterface.h │ │ │ ├── erreuladriver.cpp │ │ │ ├── erreuladriver.h │ │ │ ├── inputdriver.cpp │ │ │ ├── inputdriver.h │ │ │ ├── inputeventfilter.h │ │ │ ├── main.cpp │ │ │ ├── mainwindow.cpp │ │ │ ├── mainwindow.h │ │ │ ├── renderwidget.cpp │ │ │ ├── renderwidget.h │ │ │ ├── settings/ │ │ │ │ ├── audiosettingswidget.cpp │ │ │ │ ├── audiosettingswidget.h │ │ │ │ ├── colourlineedit.h │ │ │ │ ├── contentsettingswidget.cpp │ │ │ │ ├── contentsettingswidget.h │ │ │ │ ├── debugsettingswidget.cpp │ │ │ │ ├── debugsettingswidget.h │ │ │ │ ├── displaysettingswidget.cpp │ │ │ │ ├── displaysettingswidget.h │ │ │ │ ├── inputsettingswidget.cpp │ │ │ │ ├── inputsettingswidget.h │ │ │ │ ├── loggingsettingswidget.cpp │ │ │ │ ├── loggingsettingswidget.h │ │ │ │ ├── settingsdialog.cpp │ │ │ │ ├── settingsdialog.h │ │ │ │ ├── settingswidget.h │ │ │ │ ├── systemsettingswidget.cpp │ │ │ │ └── systemsettingswidget.h │ │ │ ├── settings.cpp │ │ │ ├── settings.h │ │ │ ├── softwarekeyboarddriver.cpp │ │ │ ├── softwarekeyboarddriver.h │ │ │ ├── sounddriver.cpp │ │ │ ├── sounddriver.h │ │ │ ├── tgahandler.cpp │ │ │ ├── tgahandler.h │ │ │ ├── titlelistmodel.h │ │ │ ├── titlelistscanner.h │ │ │ ├── titlelistwidget.cpp │ │ │ └── titlelistwidget.h │ │ └── ui/ │ │ ├── about.ui │ │ ├── audiosettings.ui │ │ ├── contentsettings.ui │ │ ├── debugger/ │ │ │ ├── breakpointswindow.ui │ │ │ ├── debuggerwindow.ui │ │ │ ├── disassemblywindow.ui │ │ │ ├── functionswindow.ui │ │ │ ├── jitprofilingwindow.ui │ │ │ ├── memorywindow.ui │ │ │ ├── segmentswindow.ui │ │ │ ├── stackwindow.ui │ │ │ ├── threadswindow.ui │ │ │ └── voiceswindow.ui │ │ ├── debugsettings.ui │ │ ├── displaysettings.ui │ │ ├── inputsettings.ui │ │ ├── loggingsettings.ui │ │ ├── mainwindow.ui │ │ ├── settings.ui │ │ ├── systemsettings.ui │ │ └── titlelist.ui │ ├── decaf-sdl/ │ │ ├── CMakeLists.txt │ │ ├── clilog.h │ │ ├── config.cpp │ │ ├── config.h │ │ ├── decafsdl.cpp │ │ ├── decafsdl.h │ │ ├── decafsdl_input.cpp │ │ ├── decafsdl_posix.cpp │ │ ├── decafsdl_sound.cpp │ │ ├── decafsdl_sound.h │ │ ├── decafsdl_win.cpp │ │ └── main.cpp │ ├── decaf_buildinfo.h.in │ ├── decaf_game.h │ ├── libconfig/ │ │ ├── CMakeLists.txt │ │ ├── config_excmd.h │ │ ├── config_toml.h │ │ └── src/ │ │ ├── loader_excmd.cpp │ │ └── loader_toml.cpp │ ├── libcpu/ │ │ ├── CMakeLists.txt │ │ ├── address.h │ │ ├── be2_array.h │ │ ├── be2_atomic.h │ │ ├── be2_struct.h │ │ ├── be2_val.h │ │ ├── cpu.h │ │ ├── cpu.natvis │ │ ├── cpu_breakpoints.h │ │ ├── cpu_config.h │ │ ├── cpu_control.h │ │ ├── cpu_formatters.h │ │ ├── espresso/ │ │ │ ├── espresso_disassembler.cpp │ │ │ ├── espresso_disassembler.h │ │ │ ├── espresso_instruction.h │ │ │ ├── espresso_instruction_aliases.inl │ │ │ ├── espresso_instruction_definitions.inl │ │ │ ├── espresso_instruction_fields.inl │ │ │ ├── espresso_instructionid.h │ │ │ ├── espresso_instructionset.cpp │ │ │ ├── espresso_instructionset.h │ │ │ ├── espresso_registerformats.h │ │ │ └── espresso_spr.h │ │ ├── functionpointer.h │ │ ├── jit_stats.h │ │ ├── mem.h │ │ ├── memtrack.h │ │ ├── mmu.h │ │ ├── pointer.h │ │ ├── src/ │ │ │ ├── cpu.cpp │ │ │ ├── cpu_alarm.cpp │ │ │ ├── cpu_alarm.h │ │ │ ├── cpu_breakpoints.cpp │ │ │ ├── cpu_configstorage.cpp │ │ │ ├── cpu_configstorage.h │ │ │ ├── cpu_host_exception.cpp │ │ │ ├── cpu_host_exception.h │ │ │ ├── cpu_internal.h │ │ │ ├── cpu_interrupts.cpp │ │ │ ├── cpu_memtrack_posix.cpp │ │ │ ├── cpu_memtrack_win.cpp │ │ │ ├── cpu_mmu.cpp │ │ │ ├── cpu_systemcall.cpp │ │ │ ├── interpreter/ │ │ │ │ ├── interpreter.cpp │ │ │ │ ├── interpreter.h │ │ │ │ ├── interpreter_branch.cpp │ │ │ │ ├── interpreter_condition.cpp │ │ │ │ ├── interpreter_float.cpp │ │ │ │ ├── interpreter_float.h │ │ │ │ ├── interpreter_insreg.h │ │ │ │ ├── interpreter_integer.cpp │ │ │ │ ├── interpreter_internal.h │ │ │ │ ├── interpreter_loadstore.cpp │ │ │ │ ├── interpreter_pairedsingle.cpp │ │ │ │ └── interpreter_system.cpp │ │ │ ├── jit/ │ │ │ │ ├── binrec/ │ │ │ │ │ ├── jit_binrec.cpp │ │ │ │ │ ├── jit_binrec.h │ │ │ │ │ ├── jit_binrec_opt.cpp │ │ │ │ │ └── jit_binrec_verify.cpp │ │ │ │ ├── jit.cpp │ │ │ │ ├── jit.h │ │ │ │ ├── jit_backend.h │ │ │ │ ├── jit_codecache.cpp │ │ │ │ ├── jit_codecache.h │ │ │ │ └── jit_stats.cpp │ │ │ ├── memorymap.cpp │ │ │ ├── memorymap.h │ │ │ ├── statedbg.h │ │ │ ├── trace.cpp │ │ │ └── utils.h │ │ ├── state.h │ │ └── trace.h │ ├── libdecaf/ │ │ ├── CMakeLists.txt │ │ ├── decaf.h │ │ ├── decaf_config.h │ │ ├── decaf_content.h │ │ ├── decaf_debug_api.h │ │ ├── decaf_erreula.h │ │ ├── decaf_eventlistener.h │ │ ├── decaf_graphics.h │ │ ├── decaf_input.h │ │ ├── decaf_log.h │ │ ├── decaf_nullinputdriver.h │ │ ├── decaf_pm4replay.h │ │ ├── decaf_softwarekeyboard.h │ │ ├── decaf_sound.h │ │ └── src/ │ │ ├── cafe/ │ │ │ ├── cafe_ppc_interface.h │ │ │ ├── cafe_ppc_interface_invoke_guest.h │ │ │ ├── cafe_ppc_interface_invoke_host.h │ │ │ ├── cafe_ppc_interface_params.h │ │ │ ├── cafe_ppc_interface_trace_host.cpp │ │ │ ├── cafe_ppc_interface_trace_host.h │ │ │ ├── cafe_ppc_interface_varargs.h │ │ │ ├── cafe_stackobject.h │ │ │ ├── cafe_tinyheap.cpp │ │ │ ├── cafe_tinyheap.h │ │ │ ├── kernel/ │ │ │ │ ├── cafe_kernel.cpp │ │ │ │ ├── cafe_kernel.h │ │ │ │ ├── cafe_kernel_context.cpp │ │ │ │ ├── cafe_kernel_context.h │ │ │ │ ├── cafe_kernel_exception.cpp │ │ │ │ ├── cafe_kernel_exception.h │ │ │ │ ├── cafe_kernel_heap.cpp │ │ │ │ ├── cafe_kernel_heap.h │ │ │ │ ├── cafe_kernel_info.cpp │ │ │ │ ├── cafe_kernel_info.h │ │ │ │ ├── cafe_kernel_interrupts.cpp │ │ │ │ ├── cafe_kernel_interrupts.h │ │ │ │ ├── cafe_kernel_ipc.cpp │ │ │ │ ├── cafe_kernel_ipc.h │ │ │ │ ├── cafe_kernel_ipckdriver.cpp │ │ │ │ ├── cafe_kernel_ipckdriver.h │ │ │ │ ├── cafe_kernel_ipckdriverfifo.h │ │ │ │ ├── cafe_kernel_loader.cpp │ │ │ │ ├── cafe_kernel_loader.h │ │ │ │ ├── cafe_kernel_lock.cpp │ │ │ │ ├── cafe_kernel_lock.h │ │ │ │ ├── cafe_kernel_mcp.cpp │ │ │ │ ├── cafe_kernel_mcp.h │ │ │ │ ├── cafe_kernel_mmu.cpp │ │ │ │ ├── cafe_kernel_mmu.h │ │ │ │ ├── cafe_kernel_process.cpp │ │ │ │ ├── cafe_kernel_process.h │ │ │ │ ├── cafe_kernel_processid.cpp │ │ │ │ ├── cafe_kernel_processid.h │ │ │ │ ├── cafe_kernel_shareddata.cpp │ │ │ │ ├── cafe_kernel_shareddata.h │ │ │ │ ├── cafe_kernel_userdrivers.cpp │ │ │ │ └── cafe_kernel_userdrivers.h │ │ │ ├── libraries/ │ │ │ │ ├── avm/ │ │ │ │ │ ├── avm.cpp │ │ │ │ │ └── avm.h │ │ │ │ ├── cafe_hle.cpp │ │ │ │ ├── cafe_hle.h │ │ │ │ ├── cafe_hle_library.cpp │ │ │ │ ├── cafe_hle_library.h │ │ │ │ ├── cafe_hle_library_data.h │ │ │ │ ├── cafe_hle_library_function.h │ │ │ │ ├── cafe_hle_library_register.h │ │ │ │ ├── cafe_hle_library_symbol.h │ │ │ │ ├── cafe_hle_library_typeinfo.h │ │ │ │ ├── cafe_hle_stub.cpp │ │ │ │ ├── cafe_hle_stub.h │ │ │ │ ├── camera/ │ │ │ │ │ ├── camera.cpp │ │ │ │ │ ├── camera.h │ │ │ │ │ ├── camera_cam.cpp │ │ │ │ │ ├── camera_cam.h │ │ │ │ │ └── camera_enum.h │ │ │ │ ├── coreinit/ │ │ │ │ │ ├── coreinit.cpp │ │ │ │ │ ├── coreinit.h │ │ │ │ │ ├── coreinit_alarm.cpp │ │ │ │ │ ├── coreinit_alarm.h │ │ │ │ │ ├── coreinit_appio.cpp │ │ │ │ │ ├── coreinit_appio.h │ │ │ │ │ ├── coreinit_atomic.cpp │ │ │ │ │ ├── coreinit_atomic.h │ │ │ │ │ ├── coreinit_atomic64.cpp │ │ │ │ │ ├── coreinit_atomic64.h │ │ │ │ │ ├── coreinit_bsp.cpp │ │ │ │ │ ├── coreinit_bsp.h │ │ │ │ │ ├── coreinit_cache.cpp │ │ │ │ │ ├── coreinit_cache.h │ │ │ │ │ ├── coreinit_clipboard.cpp │ │ │ │ │ ├── coreinit_clipboard.h │ │ │ │ │ ├── coreinit_codegen.cpp │ │ │ │ │ ├── coreinit_codegen.h │ │ │ │ │ ├── coreinit_context.cpp │ │ │ │ │ ├── coreinit_context.h │ │ │ │ │ ├── coreinit_core.cpp │ │ │ │ │ ├── coreinit_core.h │ │ │ │ │ ├── coreinit_coroutine.cpp │ │ │ │ │ ├── coreinit_coroutine.h │ │ │ │ │ ├── coreinit_cosreport.cpp │ │ │ │ │ ├── coreinit_cosreport.h │ │ │ │ │ ├── coreinit_device.cpp │ │ │ │ │ ├── coreinit_device.h │ │ │ │ │ ├── coreinit_driver.cpp │ │ │ │ │ ├── coreinit_driver.h │ │ │ │ │ ├── coreinit_dynload.cpp │ │ │ │ │ ├── coreinit_dynload.h │ │ │ │ │ ├── coreinit_enum.h │ │ │ │ │ ├── coreinit_enum_string.cpp │ │ │ │ │ ├── coreinit_enum_string.h │ │ │ │ │ ├── coreinit_event.cpp │ │ │ │ │ ├── coreinit_event.h │ │ │ │ │ ├── coreinit_exception.cpp │ │ │ │ │ ├── coreinit_exception.h │ │ │ │ │ ├── coreinit_fastmutex.cpp │ │ │ │ │ ├── coreinit_fastmutex.h │ │ │ │ │ ├── coreinit_fiber.cpp │ │ │ │ │ ├── coreinit_fiber.h │ │ │ │ │ ├── coreinit_fs.cpp │ │ │ │ │ ├── coreinit_fs.h │ │ │ │ │ ├── coreinit_fs_client.cpp │ │ │ │ │ ├── coreinit_fs_client.h │ │ │ │ │ ├── coreinit_fs_cmd.cpp │ │ │ │ │ ├── coreinit_fs_cmd.h │ │ │ │ │ ├── coreinit_fs_cmdblock.cpp │ │ │ │ │ ├── coreinit_fs_cmdblock.h │ │ │ │ │ ├── coreinit_fs_cmdqueue.cpp │ │ │ │ │ ├── coreinit_fs_cmdqueue.h │ │ │ │ │ ├── coreinit_fs_driver.cpp │ │ │ │ │ ├── coreinit_fs_driver.h │ │ │ │ │ ├── coreinit_fs_statemachine.cpp │ │ │ │ │ ├── coreinit_fs_statemachine.h │ │ │ │ │ ├── coreinit_fsa.cpp │ │ │ │ │ ├── coreinit_fsa.h │ │ │ │ │ ├── coreinit_fsa_cmd.cpp │ │ │ │ │ ├── coreinit_fsa_cmd.h │ │ │ │ │ ├── coreinit_fsa_shim.cpp │ │ │ │ │ ├── coreinit_fsa_shim.h │ │ │ │ │ ├── coreinit_ghs.cpp │ │ │ │ │ ├── coreinit_ghs.h │ │ │ │ │ ├── coreinit_handle.cpp │ │ │ │ │ ├── coreinit_handle.h │ │ │ │ │ ├── coreinit_im.cpp │ │ │ │ │ ├── coreinit_im.h │ │ │ │ │ ├── coreinit_internal_idlock.cpp │ │ │ │ │ ├── coreinit_internal_idlock.h │ │ │ │ │ ├── coreinit_internal_queue.h │ │ │ │ │ ├── coreinit_interrupts.cpp │ │ │ │ │ ├── coreinit_interrupts.h │ │ │ │ │ ├── coreinit_ios.cpp │ │ │ │ │ ├── coreinit_ios.h │ │ │ │ │ ├── coreinit_ipcbufpool.cpp │ │ │ │ │ ├── coreinit_ipcbufpool.h │ │ │ │ │ ├── coreinit_ipcdriver.cpp │ │ │ │ │ ├── coreinit_ipcdriver.h │ │ │ │ │ ├── coreinit_lockedcache.cpp │ │ │ │ │ ├── coreinit_lockedcache.h │ │ │ │ │ ├── coreinit_log.cpp │ │ │ │ │ ├── coreinit_log.h │ │ │ │ │ ├── coreinit_mcp.cpp │ │ │ │ │ ├── coreinit_mcp.h │ │ │ │ │ ├── coreinit_memallocator.cpp │ │ │ │ │ ├── coreinit_memallocator.h │ │ │ │ │ ├── coreinit_memblockheap.cpp │ │ │ │ │ ├── coreinit_memblockheap.h │ │ │ │ │ ├── coreinit_memdefaultheap.cpp │ │ │ │ │ ├── coreinit_memdefaultheap.h │ │ │ │ │ ├── coreinit_memexpheap.cpp │ │ │ │ │ ├── coreinit_memexpheap.h │ │ │ │ │ ├── coreinit_memframeheap.cpp │ │ │ │ │ ├── coreinit_memframeheap.h │ │ │ │ │ ├── coreinit_memheap.cpp │ │ │ │ │ ├── coreinit_memheap.h │ │ │ │ │ ├── coreinit_memlist.cpp │ │ │ │ │ ├── coreinit_memlist.h │ │ │ │ │ ├── coreinit_memory.cpp │ │ │ │ │ ├── coreinit_memory.h │ │ │ │ │ ├── coreinit_memunitheap.cpp │ │ │ │ │ ├── coreinit_memunitheap.h │ │ │ │ │ ├── coreinit_messagequeue.cpp │ │ │ │ │ ├── coreinit_messagequeue.h │ │ │ │ │ ├── coreinit_mutex.cpp │ │ │ │ │ ├── coreinit_mutex.h │ │ │ │ │ ├── coreinit_osreport.cpp │ │ │ │ │ ├── coreinit_osreport.h │ │ │ │ │ ├── coreinit_overlayarena.cpp │ │ │ │ │ ├── coreinit_overlayarena.h │ │ │ │ │ ├── coreinit_rendezvous.cpp │ │ │ │ │ ├── coreinit_rendezvous.h │ │ │ │ │ ├── coreinit_scheduler.cpp │ │ │ │ │ ├── coreinit_scheduler.h │ │ │ │ │ ├── coreinit_screen.cpp │ │ │ │ │ ├── coreinit_screen.h │ │ │ │ │ ├── coreinit_screenfont.h │ │ │ │ │ ├── coreinit_semaphore.cpp │ │ │ │ │ ├── coreinit_semaphore.h │ │ │ │ │ ├── coreinit_snprintf.cpp │ │ │ │ │ ├── coreinit_snprintf.h │ │ │ │ │ ├── coreinit_spinlock.cpp │ │ │ │ │ ├── coreinit_spinlock.h │ │ │ │ │ ├── coreinit_systemheap.cpp │ │ │ │ │ ├── coreinit_systemheap.h │ │ │ │ │ ├── coreinit_systeminfo.cpp │ │ │ │ │ ├── coreinit_systeminfo.h │ │ │ │ │ ├── coreinit_systemmessagequeue.cpp │ │ │ │ │ ├── coreinit_systemmessagequeue.h │ │ │ │ │ ├── coreinit_taskqueue.cpp │ │ │ │ │ ├── coreinit_taskqueue.h │ │ │ │ │ ├── coreinit_thread.cpp │ │ │ │ │ ├── coreinit_thread.h │ │ │ │ │ ├── coreinit_time.cpp │ │ │ │ │ ├── coreinit_time.h │ │ │ │ │ ├── coreinit_userconfig.cpp │ │ │ │ │ └── coreinit_userconfig.h │ │ │ │ ├── dc/ │ │ │ │ │ ├── dc.cpp │ │ │ │ │ └── dc.h │ │ │ │ ├── dmae/ │ │ │ │ │ ├── dmae.cpp │ │ │ │ │ ├── dmae.h │ │ │ │ │ ├── dmae_enum.h │ │ │ │ │ ├── dmae_ring.cpp │ │ │ │ │ └── dmae_ring.h │ │ │ │ ├── drmapp/ │ │ │ │ │ ├── drmapp.cpp │ │ │ │ │ └── drmapp.h │ │ │ │ ├── erreula/ │ │ │ │ │ ├── erreula.cpp │ │ │ │ │ ├── erreula.h │ │ │ │ │ ├── erreula_enum.h │ │ │ │ │ ├── erreula_errorviewer.cpp │ │ │ │ │ └── erreula_errorviewer.h │ │ │ │ ├── ghs/ │ │ │ │ │ ├── cafe_ghs_enum.h │ │ │ │ │ ├── cafe_ghs_malloc.cpp │ │ │ │ │ ├── cafe_ghs_malloc.h │ │ │ │ │ ├── cafe_ghs_typeinfo.cpp │ │ │ │ │ └── cafe_ghs_typeinfo.h │ │ │ │ ├── gx2/ │ │ │ │ │ ├── gx2.cpp │ │ │ │ │ ├── gx2.h │ │ │ │ │ ├── gx2_addrlib.cpp │ │ │ │ │ ├── gx2_addrlib.h │ │ │ │ │ ├── gx2_aperture.cpp │ │ │ │ │ ├── gx2_aperture.h │ │ │ │ │ ├── gx2_cbpool.cpp │ │ │ │ │ ├── gx2_cbpool.h │ │ │ │ │ ├── gx2_clear.cpp │ │ │ │ │ ├── gx2_clear.h │ │ │ │ │ ├── gx2_contextstate.cpp │ │ │ │ │ ├── gx2_contextstate.h │ │ │ │ │ ├── gx2_counter.cpp │ │ │ │ │ ├── gx2_counter.h │ │ │ │ │ ├── gx2_debug.cpp │ │ │ │ │ ├── gx2_debug.h │ │ │ │ │ ├── gx2_debug_dds.cpp │ │ │ │ │ ├── gx2_debug_dds.h │ │ │ │ │ ├── gx2_debugcapture.cpp │ │ │ │ │ ├── gx2_debugcapture.h │ │ │ │ │ ├── gx2_display.cpp │ │ │ │ │ ├── gx2_display.h │ │ │ │ │ ├── gx2_displaylist.cpp │ │ │ │ │ ├── gx2_displaylist.h │ │ │ │ │ ├── gx2_draw.cpp │ │ │ │ │ ├── gx2_draw.h │ │ │ │ │ ├── gx2_enum.h │ │ │ │ │ ├── gx2_enum_string.cpp │ │ │ │ │ ├── gx2_enum_string.h │ │ │ │ │ ├── gx2_event.cpp │ │ │ │ │ ├── gx2_event.h │ │ │ │ │ ├── gx2_fence.cpp │ │ │ │ │ ├── gx2_fence.h │ │ │ │ │ ├── gx2_fetchshader.cpp │ │ │ │ │ ├── gx2_fetchshader.h │ │ │ │ │ ├── gx2_format.cpp │ │ │ │ │ ├── gx2_format.h │ │ │ │ │ ├── gx2_internal_flush.cpp │ │ │ │ │ ├── gx2_internal_flush.h │ │ │ │ │ ├── gx2_internal_gfd.cpp │ │ │ │ │ ├── gx2_internal_gfd.h │ │ │ │ │ ├── gx2_internal_pm4cap.cpp │ │ │ │ │ ├── gx2_internal_pm4cap.h │ │ │ │ │ ├── gx2_internal_writegatherptr.h │ │ │ │ │ ├── gx2_memory.cpp │ │ │ │ │ ├── gx2_memory.h │ │ │ │ │ ├── gx2_query.cpp │ │ │ │ │ ├── gx2_query.h │ │ │ │ │ ├── gx2_registers.cpp │ │ │ │ │ ├── gx2_registers.h │ │ │ │ │ ├── gx2_sampler.cpp │ │ │ │ │ ├── gx2_sampler.h │ │ │ │ │ ├── gx2_shaders.cpp │ │ │ │ │ ├── gx2_shaders.h │ │ │ │ │ ├── gx2_state.cpp │ │ │ │ │ ├── gx2_state.h │ │ │ │ │ ├── gx2_surface.cpp │ │ │ │ │ ├── gx2_surface.h │ │ │ │ │ ├── gx2_temp.cpp │ │ │ │ │ ├── gx2_temp.h │ │ │ │ │ ├── gx2_tessellation.cpp │ │ │ │ │ ├── gx2_tessellation.h │ │ │ │ │ ├── gx2_texture.cpp │ │ │ │ │ ├── gx2_texture.h │ │ │ │ │ ├── gx2r_buffer.cpp │ │ │ │ │ ├── gx2r_buffer.h │ │ │ │ │ ├── gx2r_displaylist.cpp │ │ │ │ │ ├── gx2r_displaylist.h │ │ │ │ │ ├── gx2r_draw.cpp │ │ │ │ │ ├── gx2r_draw.h │ │ │ │ │ ├── gx2r_memory.cpp │ │ │ │ │ ├── gx2r_memory.h │ │ │ │ │ ├── gx2r_resource.cpp │ │ │ │ │ ├── gx2r_resource.h │ │ │ │ │ ├── gx2r_shaders.cpp │ │ │ │ │ ├── gx2r_shaders.h │ │ │ │ │ ├── gx2r_surface.cpp │ │ │ │ │ └── gx2r_surface.h │ │ │ │ ├── h264/ │ │ │ │ │ ├── h264.cpp │ │ │ │ │ ├── h264.h │ │ │ │ │ ├── h264_bitstream.h │ │ │ │ │ ├── h264_decode.cpp │ │ │ │ │ ├── h264_decode.h │ │ │ │ │ ├── h264_decode_ffmpeg.cpp │ │ │ │ │ ├── h264_decode_ffmpeg.h │ │ │ │ │ ├── h264_decode_null.cpp │ │ │ │ │ ├── h264_decode_null.h │ │ │ │ │ ├── h264_enum.h │ │ │ │ │ ├── h264_stream.cpp │ │ │ │ │ └── h264_stream.h │ │ │ │ ├── lzma920/ │ │ │ │ │ ├── lzma920.cpp │ │ │ │ │ └── lzma920.h │ │ │ │ ├── mic/ │ │ │ │ │ ├── mic.cpp │ │ │ │ │ ├── mic.h │ │ │ │ │ ├── mic_mic.cpp │ │ │ │ │ └── mic_mic.h │ │ │ │ ├── nfc/ │ │ │ │ │ ├── nfc.cpp │ │ │ │ │ └── nfc.h │ │ │ │ ├── nio_prof/ │ │ │ │ │ ├── nio_prof.cpp │ │ │ │ │ └── nio_prof.h │ │ │ │ ├── nlibcurl/ │ │ │ │ │ ├── nlibcurl.cpp │ │ │ │ │ ├── nlibcurl.h │ │ │ │ │ ├── nlibcurl_curl.cpp │ │ │ │ │ ├── nlibcurl_curl.h │ │ │ │ │ ├── nlibcurl_easy.cpp │ │ │ │ │ └── nlibcurl_easy.h │ │ │ │ ├── nlibnss/ │ │ │ │ │ ├── nlibnss.cpp │ │ │ │ │ └── nlibnss.h │ │ │ │ ├── nlibnss2/ │ │ │ │ │ ├── nlibnss2.cpp │ │ │ │ │ └── nlibnss2.h │ │ │ │ ├── nn_ac/ │ │ │ │ │ ├── nn_ac.cpp │ │ │ │ │ ├── nn_ac.h │ │ │ │ │ ├── nn_ac_capi.cpp │ │ │ │ │ ├── nn_ac_capi.h │ │ │ │ │ ├── nn_ac_client.cpp │ │ │ │ │ ├── nn_ac_client.h │ │ │ │ │ ├── nn_ac_enum.h │ │ │ │ │ ├── nn_ac_service.cpp │ │ │ │ │ └── nn_ac_service.h │ │ │ │ ├── nn_acp/ │ │ │ │ │ ├── nn_acp.cpp │ │ │ │ │ ├── nn_acp.h │ │ │ │ │ ├── nn_acp_acpresult.cpp │ │ │ │ │ ├── nn_acp_acpresult.h │ │ │ │ │ ├── nn_acp_client.cpp │ │ │ │ │ ├── nn_acp_client.h │ │ │ │ │ ├── nn_acp_device.cpp │ │ │ │ │ ├── nn_acp_device.h │ │ │ │ │ ├── nn_acp_internal_driver.cpp │ │ │ │ │ ├── nn_acp_internal_driver.h │ │ │ │ │ ├── nn_acp_miscservice.cpp │ │ │ │ │ ├── nn_acp_miscservice.h │ │ │ │ │ ├── nn_acp_saveservice.cpp │ │ │ │ │ └── nn_acp_saveservice.h │ │ │ │ ├── nn_act/ │ │ │ │ │ ├── nn_act.cpp │ │ │ │ │ ├── nn_act.h │ │ │ │ │ ├── nn_act_accountloaderservice.cpp │ │ │ │ │ ├── nn_act_accountloaderservice.h │ │ │ │ │ ├── nn_act_accountmanagerservice.cpp │ │ │ │ │ ├── nn_act_accountmanagerservice.h │ │ │ │ │ ├── nn_act_client.cpp │ │ │ │ │ ├── nn_act_client.h │ │ │ │ │ ├── nn_act_clientstandardservice.cpp │ │ │ │ │ ├── nn_act_clientstandardservice.h │ │ │ │ │ ├── nn_act_serverstandardservice.cpp │ │ │ │ │ └── nn_act_serverstandardservice.h │ │ │ │ ├── nn_aoc/ │ │ │ │ │ ├── nn_aoc.cpp │ │ │ │ │ ├── nn_aoc.h │ │ │ │ │ ├── nn_aoc_enum.h │ │ │ │ │ ├── nn_aoc_lib.cpp │ │ │ │ │ └── nn_aoc_lib.h │ │ │ │ ├── nn_boss/ │ │ │ │ │ ├── nn_boss.cpp │ │ │ │ │ ├── nn_boss.h │ │ │ │ │ ├── nn_boss_account.cpp │ │ │ │ │ ├── nn_boss_account.h │ │ │ │ │ ├── nn_boss_almightystorage.cpp │ │ │ │ │ ├── nn_boss_almightystorage.h │ │ │ │ │ ├── nn_boss_almightytask.cpp │ │ │ │ │ ├── nn_boss_almightytask.h │ │ │ │ │ ├── nn_boss_client.cpp │ │ │ │ │ ├── nn_boss_client.h │ │ │ │ │ ├── nn_boss_dataname.cpp │ │ │ │ │ ├── nn_boss_dataname.h │ │ │ │ │ ├── nn_boss_enum.h │ │ │ │ │ ├── nn_boss_nbdltasksetting.cpp │ │ │ │ │ ├── nn_boss_nbdltasksetting.h │ │ │ │ │ ├── nn_boss_nettasksetting.cpp │ │ │ │ │ ├── nn_boss_nettasksetting.h │ │ │ │ │ ├── nn_boss_playloguploadtasksetting.cpp │ │ │ │ │ ├── nn_boss_playloguploadtasksetting.h │ │ │ │ │ ├── nn_boss_playreportsetting.cpp │ │ │ │ │ ├── nn_boss_playreportsetting.h │ │ │ │ │ ├── nn_boss_privilegedtask.cpp │ │ │ │ │ ├── nn_boss_privilegedtask.h │ │ │ │ │ ├── nn_boss_rawultasksetting.cpp │ │ │ │ │ ├── nn_boss_rawultasksetting.h │ │ │ │ │ ├── nn_boss_storage.cpp │ │ │ │ │ ├── nn_boss_storage.h │ │ │ │ │ ├── nn_boss_task.cpp │ │ │ │ │ ├── nn_boss_task.h │ │ │ │ │ ├── nn_boss_taskid.cpp │ │ │ │ │ ├── nn_boss_taskid.h │ │ │ │ │ ├── nn_boss_tasksetting.cpp │ │ │ │ │ ├── nn_boss_tasksetting.h │ │ │ │ │ ├── nn_boss_title.cpp │ │ │ │ │ ├── nn_boss_title.h │ │ │ │ │ ├── nn_boss_titleid.cpp │ │ │ │ │ └── nn_boss_titleid.h │ │ │ │ ├── nn_ccr/ │ │ │ │ │ ├── nn_ccr.cpp │ │ │ │ │ └── nn_ccr.h │ │ │ │ ├── nn_cmpt/ │ │ │ │ │ ├── nn_cmpt.cpp │ │ │ │ │ ├── nn_cmpt.h │ │ │ │ │ ├── nn_cmpt_enum.h │ │ │ │ │ ├── nn_cmpt_lib.cpp │ │ │ │ │ └── nn_cmpt_lib.h │ │ │ │ ├── nn_dlp/ │ │ │ │ │ ├── nn_dlp.cpp │ │ │ │ │ └── nn_dlp.h │ │ │ │ ├── nn_ec/ │ │ │ │ │ ├── nn_ec.cpp │ │ │ │ │ ├── nn_ec.h │ │ │ │ │ ├── nn_ec_catalog.cpp │ │ │ │ │ ├── nn_ec_catalog.h │ │ │ │ │ ├── nn_ec_itemlist.cpp │ │ │ │ │ ├── nn_ec_itemlist.h │ │ │ │ │ ├── nn_ec_lib.cpp │ │ │ │ │ ├── nn_ec_lib.h │ │ │ │ │ ├── nn_ec_memorymanager.cpp │ │ │ │ │ ├── nn_ec_memorymanager.h │ │ │ │ │ ├── nn_ec_money.cpp │ │ │ │ │ ├── nn_ec_money.h │ │ │ │ │ ├── nn_ec_noncopyable.h │ │ │ │ │ ├── nn_ec_query.cpp │ │ │ │ │ ├── nn_ec_query.h │ │ │ │ │ ├── nn_ec_result.h │ │ │ │ │ ├── nn_ec_rootobject.cpp │ │ │ │ │ ├── nn_ec_rootobject.h │ │ │ │ │ ├── nn_ec_shoppingcatalog.cpp │ │ │ │ │ └── nn_ec_shoppingcatalog.h │ │ │ │ ├── nn_fp/ │ │ │ │ │ ├── nn_fp.cpp │ │ │ │ │ ├── nn_fp.h │ │ │ │ │ ├── nn_fp_lib.cpp │ │ │ │ │ └── nn_fp_lib.h │ │ │ │ ├── nn_hai/ │ │ │ │ │ ├── nn_hai.cpp │ │ │ │ │ └── nn_hai.h │ │ │ │ ├── nn_hpad/ │ │ │ │ │ ├── nn_hpad.cpp │ │ │ │ │ └── nn_hpad.h │ │ │ │ ├── nn_idbe/ │ │ │ │ │ ├── nn_idbe.cpp │ │ │ │ │ └── nn_idbe.h │ │ │ │ ├── nn_ndm/ │ │ │ │ │ ├── nn_ndm.cpp │ │ │ │ │ ├── nn_ndm.h │ │ │ │ │ ├── nn_ndm_client.cpp │ │ │ │ │ └── nn_ndm_client.h │ │ │ │ ├── nn_nets2/ │ │ │ │ │ ├── nn_nets2.cpp │ │ │ │ │ └── nn_nets2.h │ │ │ │ ├── nn_nfp/ │ │ │ │ │ ├── nn_nfp.cpp │ │ │ │ │ ├── nn_nfp.h │ │ │ │ │ ├── nn_nfp_enum.h │ │ │ │ │ ├── nn_nfp_lib.cpp │ │ │ │ │ └── nn_nfp_lib.h │ │ │ │ ├── nn_nim/ │ │ │ │ │ ├── nn_nim.cpp │ │ │ │ │ ├── nn_nim.h │ │ │ │ │ ├── nn_nim_client.cpp │ │ │ │ │ └── nn_nim_client.h │ │ │ │ ├── nn_olv/ │ │ │ │ │ ├── nn_olv.cpp │ │ │ │ │ ├── nn_olv.h │ │ │ │ │ ├── nn_olv_downloadedcommunitydata.cpp │ │ │ │ │ ├── nn_olv_downloadedcommunitydata.h │ │ │ │ │ ├── nn_olv_downloadeddatabase.cpp │ │ │ │ │ ├── nn_olv_downloadeddatabase.h │ │ │ │ │ ├── nn_olv_downloadedpostdata.cpp │ │ │ │ │ ├── nn_olv_downloadedpostdata.h │ │ │ │ │ ├── nn_olv_downloadedtopicdata.cpp │ │ │ │ │ ├── nn_olv_downloadedtopicdata.h │ │ │ │ │ ├── nn_olv_init.cpp │ │ │ │ │ ├── nn_olv_init.h │ │ │ │ │ ├── nn_olv_initializeparam.cpp │ │ │ │ │ ├── nn_olv_initializeparam.h │ │ │ │ │ ├── nn_olv_uploadeddatabase.cpp │ │ │ │ │ ├── nn_olv_uploadeddatabase.h │ │ │ │ │ ├── nn_olv_uploadedpostdata.cpp │ │ │ │ │ └── nn_olv_uploadedpostdata.h │ │ │ │ ├── nn_pdm/ │ │ │ │ │ ├── nn_pdm.cpp │ │ │ │ │ ├── nn_pdm.h │ │ │ │ │ ├── nn_pdm_client.cpp │ │ │ │ │ ├── nn_pdm_client.h │ │ │ │ │ ├── nn_pdm_cosservice.cpp │ │ │ │ │ └── nn_pdm_cosservice.h │ │ │ │ ├── nn_save/ │ │ │ │ │ ├── nn_save.cpp │ │ │ │ │ ├── nn_save.h │ │ │ │ │ ├── nn_save_cmd.cpp │ │ │ │ │ ├── nn_save_cmd.h │ │ │ │ │ ├── nn_save_path.cpp │ │ │ │ │ └── nn_save_path.h │ │ │ │ ├── nn_sl/ │ │ │ │ │ ├── nn_sl.cpp │ │ │ │ │ ├── nn_sl.h │ │ │ │ │ ├── nn_sl_drctransferrer.cpp │ │ │ │ │ ├── nn_sl_drctransferrer.h │ │ │ │ │ ├── nn_sl_lib.cpp │ │ │ │ │ └── nn_sl_lib.h │ │ │ │ ├── nn_spm/ │ │ │ │ │ ├── nn_spm.cpp │ │ │ │ │ ├── nn_spm.h │ │ │ │ │ ├── nn_spm_client.cpp │ │ │ │ │ ├── nn_spm_client.h │ │ │ │ │ ├── nn_spm_extendedstorageservice.cpp │ │ │ │ │ └── nn_spm_extendedstorageservice.h │ │ │ │ ├── nn_temp/ │ │ │ │ │ ├── nn_temp.cpp │ │ │ │ │ ├── nn_temp.h │ │ │ │ │ ├── nn_temp_enum.h │ │ │ │ │ ├── nn_temp_tempdir.cpp │ │ │ │ │ └── nn_temp_tempdir.h │ │ │ │ ├── nn_uds/ │ │ │ │ │ ├── nn_uds.cpp │ │ │ │ │ ├── nn_uds.h │ │ │ │ │ └── nn_uds_api.cpp │ │ │ │ ├── nn_vctl/ │ │ │ │ │ ├── nn_vctl.cpp │ │ │ │ │ ├── nn_vctl.h │ │ │ │ │ ├── nn_vctl_client.cpp │ │ │ │ │ └── nn_vctl_client.h │ │ │ │ ├── nsysccr/ │ │ │ │ │ ├── nsysccr.cpp │ │ │ │ │ └── nsysccr.h │ │ │ │ ├── nsyshid/ │ │ │ │ │ ├── nsyshid.cpp │ │ │ │ │ └── nsyshid.h │ │ │ │ ├── nsyskbd/ │ │ │ │ │ ├── nsyskbd.cpp │ │ │ │ │ ├── nsyskbd.h │ │ │ │ │ ├── nsyskbd_enum.h │ │ │ │ │ ├── nsyskbd_kpr.cpp │ │ │ │ │ ├── nsyskbd_kpr.h │ │ │ │ │ ├── nsyskbd_skbd.cpp │ │ │ │ │ └── nsyskbd_skbd.h │ │ │ │ ├── nsysnet/ │ │ │ │ │ ├── nsysnet.cpp │ │ │ │ │ ├── nsysnet.h │ │ │ │ │ ├── nsysnet_endian.cpp │ │ │ │ │ ├── nsysnet_enum.h │ │ │ │ │ ├── nsysnet_nssl.cpp │ │ │ │ │ ├── nsysnet_nssl.h │ │ │ │ │ ├── nsysnet_socket_lib.cpp │ │ │ │ │ └── nsysnet_socket_lib.h │ │ │ │ ├── nsysuhs/ │ │ │ │ │ ├── nsysuhs.cpp │ │ │ │ │ └── nsysuhs.h │ │ │ │ ├── nsysuvd/ │ │ │ │ │ ├── nsysuvd.cpp │ │ │ │ │ └── nsysuvd.h │ │ │ │ ├── ntag/ │ │ │ │ │ ├── ntag.cpp │ │ │ │ │ └── ntag.h │ │ │ │ ├── padscore/ │ │ │ │ │ ├── padscore.cpp │ │ │ │ │ ├── padscore.h │ │ │ │ │ ├── padscore_enum.h │ │ │ │ │ ├── padscore_kpad.cpp │ │ │ │ │ ├── padscore_kpad.h │ │ │ │ │ ├── padscore_wpad.cpp │ │ │ │ │ └── padscore_wpad.h │ │ │ │ ├── proc_ui/ │ │ │ │ │ ├── proc_ui.cpp │ │ │ │ │ ├── proc_ui.h │ │ │ │ │ ├── proc_ui_enum.h │ │ │ │ │ ├── proc_ui_messages.cpp │ │ │ │ │ └── proc_ui_messages.h │ │ │ │ ├── snd_core/ │ │ │ │ │ └── snd_core.h │ │ │ │ ├── snd_user/ │ │ │ │ │ └── snd_user.h │ │ │ │ ├── sndcore2/ │ │ │ │ │ ├── sndcore2.cpp │ │ │ │ │ ├── sndcore2.h │ │ │ │ │ ├── sndcore2_ai.cpp │ │ │ │ │ ├── sndcore2_ai.h │ │ │ │ │ ├── sndcore2_config.cpp │ │ │ │ │ ├── sndcore2_config.h │ │ │ │ │ ├── sndcore2_constants.h │ │ │ │ │ ├── sndcore2_device.cpp │ │ │ │ │ ├── sndcore2_device.h │ │ │ │ │ ├── sndcore2_enum.h │ │ │ │ │ ├── sndcore2_rmt.cpp │ │ │ │ │ ├── sndcore2_rmt.h │ │ │ │ │ ├── sndcore2_voice.cpp │ │ │ │ │ ├── sndcore2_voice.h │ │ │ │ │ ├── sndcore2_vs.cpp │ │ │ │ │ └── sndcore2_vs.h │ │ │ │ ├── snduser2/ │ │ │ │ │ ├── snduser2.cpp │ │ │ │ │ ├── snduser2.h │ │ │ │ │ ├── snduser2_axart.cpp │ │ │ │ │ ├── snduser2_axart.h │ │ │ │ │ ├── snduser2_axfx.h │ │ │ │ │ ├── snduser2_axfx_chorus.cpp │ │ │ │ │ ├── snduser2_axfx_chorus.h │ │ │ │ │ ├── snduser2_axfx_chorusexp.cpp │ │ │ │ │ ├── snduser2_axfx_chorusexp.h │ │ │ │ │ ├── snduser2_axfx_delay.cpp │ │ │ │ │ ├── snduser2_axfx_delay.h │ │ │ │ │ ├── snduser2_axfx_delayexp.cpp │ │ │ │ │ ├── snduser2_axfx_delayexp.h │ │ │ │ │ ├── snduser2_axfx_hooks.cpp │ │ │ │ │ ├── snduser2_axfx_hooks.h │ │ │ │ │ ├── snduser2_axfx_multichreverb.cpp │ │ │ │ │ ├── snduser2_axfx_multichreverb.h │ │ │ │ │ ├── snduser2_axfx_reverbhi.cpp │ │ │ │ │ ├── snduser2_axfx_reverbhi.h │ │ │ │ │ ├── snduser2_axfx_reverbhiexp.cpp │ │ │ │ │ ├── snduser2_axfx_reverbhiexp.h │ │ │ │ │ ├── snduser2_axfx_reverbstd.cpp │ │ │ │ │ ├── snduser2_axfx_reverbstd.h │ │ │ │ │ ├── snduser2_axfx_reverbstdexp.cpp │ │ │ │ │ ├── snduser2_axfx_reverbstdexp.h │ │ │ │ │ ├── snduser2_enum.h │ │ │ │ │ ├── snduser2_mix.cpp │ │ │ │ │ ├── snduser2_mix.h │ │ │ │ │ ├── snduser2_sp.cpp │ │ │ │ │ └── snduser2_sp.h │ │ │ │ ├── swkbd/ │ │ │ │ │ ├── swkbd.cpp │ │ │ │ │ ├── swkbd.h │ │ │ │ │ ├── swkbd_enum.h │ │ │ │ │ ├── swkbd_keyboard.cpp │ │ │ │ │ └── swkbd_keyboard.h │ │ │ │ ├── sysapp/ │ │ │ │ │ ├── sysapp.cpp │ │ │ │ │ ├── sysapp.h │ │ │ │ │ ├── sysapp_callerargs.cpp │ │ │ │ │ ├── sysapp_callerargs.h │ │ │ │ │ ├── sysapp_enum.h │ │ │ │ │ ├── sysapp_title.cpp │ │ │ │ │ └── sysapp_title.h │ │ │ │ ├── tcl/ │ │ │ │ │ ├── tcl.cpp │ │ │ │ │ ├── tcl.h │ │ │ │ │ ├── tcl_aperture.cpp │ │ │ │ │ ├── tcl_aperture.h │ │ │ │ │ ├── tcl_driver.cpp │ │ │ │ │ ├── tcl_driver.h │ │ │ │ │ ├── tcl_enum.h │ │ │ │ │ ├── tcl_interrupthandler.cpp │ │ │ │ │ ├── tcl_interrupthandler.h │ │ │ │ │ ├── tcl_register.cpp │ │ │ │ │ ├── tcl_register.h │ │ │ │ │ ├── tcl_ring.cpp │ │ │ │ │ └── tcl_ring.h │ │ │ │ ├── tve/ │ │ │ │ │ ├── tve.cpp │ │ │ │ │ └── tve.h │ │ │ │ ├── uac/ │ │ │ │ │ ├── uac.cpp │ │ │ │ │ └── uac.h │ │ │ │ ├── uac_rpl/ │ │ │ │ │ ├── uac_rpl.cpp │ │ │ │ │ └── uac_rpl.h │ │ │ │ ├── usb_mic/ │ │ │ │ │ ├── usb_mic.cpp │ │ │ │ │ └── usb_mic.h │ │ │ │ ├── uvc/ │ │ │ │ │ ├── uvc.cpp │ │ │ │ │ └── uvc.h │ │ │ │ ├── uvd/ │ │ │ │ │ ├── uvd.cpp │ │ │ │ │ └── uvd.h │ │ │ │ ├── vpad/ │ │ │ │ │ ├── vpad.cpp │ │ │ │ │ ├── vpad.h │ │ │ │ │ ├── vpad_controller.cpp │ │ │ │ │ ├── vpad_controller.h │ │ │ │ │ ├── vpad_enum.h │ │ │ │ │ ├── vpad_gyro.cpp │ │ │ │ │ ├── vpad_gyro.h │ │ │ │ │ ├── vpad_motor.cpp │ │ │ │ │ └── vpad_motor.h │ │ │ │ ├── vpadbase/ │ │ │ │ │ ├── vpadbase.cpp │ │ │ │ │ ├── vpadbase.h │ │ │ │ │ ├── vpadbase_controller.cpp │ │ │ │ │ └── vpadbase_controller.h │ │ │ │ └── zlib125/ │ │ │ │ ├── zlib125.cpp │ │ │ │ ├── zlib125.h │ │ │ │ └── zlib125_zlib.cpp │ │ │ ├── loader/ │ │ │ │ ├── cafe_loader_basics.cpp │ │ │ │ ├── cafe_loader_basics.h │ │ │ │ ├── cafe_loader_bounce.cpp │ │ │ │ ├── cafe_loader_bounce.h │ │ │ │ ├── cafe_loader_elffile.cpp │ │ │ │ ├── cafe_loader_elffile.h │ │ │ │ ├── cafe_loader_entry.cpp │ │ │ │ ├── cafe_loader_entry.h │ │ │ │ ├── cafe_loader_error.cpp │ │ │ │ ├── cafe_loader_error.h │ │ │ │ ├── cafe_loader_flush.cpp │ │ │ │ ├── cafe_loader_flush.h │ │ │ │ ├── cafe_loader_globals.cpp │ │ │ │ ├── cafe_loader_globals.h │ │ │ │ ├── cafe_loader_heap.cpp │ │ │ │ ├── cafe_loader_heap.h │ │ │ │ ├── cafe_loader_init.cpp │ │ │ │ ├── cafe_loader_init.h │ │ │ │ ├── cafe_loader_iop.cpp │ │ │ │ ├── cafe_loader_iop.h │ │ │ │ ├── cafe_loader_ipcldriver.cpp │ │ │ │ ├── cafe_loader_ipcldriver.h │ │ │ │ ├── cafe_loader_ipcldriverfifo.h │ │ │ │ ├── cafe_loader_link.cpp │ │ │ │ ├── cafe_loader_link.h │ │ │ │ ├── cafe_loader_loaded_rpl.h │ │ │ │ ├── cafe_loader_log.h │ │ │ │ ├── cafe_loader_minfileinfo.cpp │ │ │ │ ├── cafe_loader_minfileinfo.h │ │ │ │ ├── cafe_loader_prep.cpp │ │ │ │ ├── cafe_loader_prep.h │ │ │ │ ├── cafe_loader_purge.cpp │ │ │ │ ├── cafe_loader_purge.h │ │ │ │ ├── cafe_loader_query.cpp │ │ │ │ ├── cafe_loader_query.h │ │ │ │ ├── cafe_loader_reloc.cpp │ │ │ │ ├── cafe_loader_reloc.h │ │ │ │ ├── cafe_loader_rpl.h │ │ │ │ ├── cafe_loader_setup.cpp │ │ │ │ ├── cafe_loader_setup.h │ │ │ │ ├── cafe_loader_shared.cpp │ │ │ │ ├── cafe_loader_shared.h │ │ │ │ ├── cafe_loader_utils.h │ │ │ │ ├── cafe_loader_zlib.cpp │ │ │ │ └── cafe_loader_zlib.h │ │ │ └── nn/ │ │ │ ├── cafe_nn_ipc_bufferallocator.cpp │ │ │ ├── cafe_nn_ipc_bufferallocator.h │ │ │ ├── cafe_nn_ipc_client.cpp │ │ │ ├── cafe_nn_ipc_client.h │ │ │ ├── cafe_nn_ipc_client_command.h │ │ │ └── cafe_nn_os_criticalsection.h │ │ ├── debug_api/ │ │ │ ├── debug_api_analyse.cpp │ │ │ ├── debug_api_cafe.cpp │ │ │ ├── debug_api_controller.cpp │ │ │ ├── debug_api_controller.h │ │ │ ├── debug_api_cpu.cpp │ │ │ ├── debug_api_memory.cpp │ │ │ └── debug_api_pm4.cpp │ │ ├── debugger/ │ │ │ ├── debugger.cpp │ │ │ ├── debugger.h │ │ │ ├── debugger_server.h │ │ │ ├── debugger_server_gdb.cpp │ │ │ ├── debugger_server_gdb.h │ │ │ └── debugger_server_gdb_xml.inl │ │ ├── decaf.cpp │ │ ├── decaf_configstorage.cpp │ │ ├── decaf_configstorage.h │ │ ├── decaf_erreula.cpp │ │ ├── decaf_eventlistener.cpp │ │ ├── decaf_events.h │ │ ├── decaf_graphics.cpp │ │ ├── decaf_input.cpp │ │ ├── decaf_log.cpp │ │ ├── decaf_nullinputdriver.cpp │ │ ├── decaf_slc.cpp │ │ ├── decaf_slc.h │ │ ├── decaf_softwarekeyboard.cpp │ │ ├── decaf_sound.cpp │ │ ├── input/ │ │ │ ├── input.cpp │ │ │ └── input.h │ │ ├── ios/ │ │ │ ├── acp/ │ │ │ │ ├── ios_acp.cpp │ │ │ │ ├── ios_acp.h │ │ │ │ ├── ios_acp_client_save.cpp │ │ │ │ ├── ios_acp_client_save.h │ │ │ │ ├── ios_acp_enum.h │ │ │ │ ├── ios_acp_log.h │ │ │ │ ├── ios_acp_main_server.cpp │ │ │ │ ├── ios_acp_main_server.h │ │ │ │ ├── ios_acp_metaxml.cpp │ │ │ │ ├── ios_acp_metaxml.h │ │ │ │ ├── ios_acp_nn_miscservice.cpp │ │ │ │ ├── ios_acp_nn_miscservice.h │ │ │ │ ├── ios_acp_nn_saveservice.cpp │ │ │ │ ├── ios_acp_nn_saveservice.h │ │ │ │ ├── ios_acp_nnsm.cpp │ │ │ │ ├── ios_acp_nnsm.h │ │ │ │ ├── ios_acp_nnsm_ipc.cpp │ │ │ │ ├── ios_acp_nnsm_ipc.h │ │ │ │ ├── ios_acp_pdm_cosservice.cpp │ │ │ │ ├── ios_acp_pdm_cosservice.h │ │ │ │ ├── ios_acp_pdm_server.cpp │ │ │ │ ├── ios_acp_pdm_server.h │ │ │ │ ├── ios_acp_spm_extendedstorageservice.cpp │ │ │ │ └── ios_acp_spm_extendedstorageservice.h │ │ │ ├── auxil/ │ │ │ │ ├── ios_auxil.cpp │ │ │ │ ├── ios_auxil.h │ │ │ │ ├── ios_auxil_config.cpp │ │ │ │ ├── ios_auxil_config.h │ │ │ │ ├── ios_auxil_enum.h │ │ │ │ ├── ios_auxil_im.h │ │ │ │ ├── ios_auxil_im_device.cpp │ │ │ │ ├── ios_auxil_im_device.h │ │ │ │ ├── ios_auxil_im_request.h │ │ │ │ ├── ios_auxil_im_response.h │ │ │ │ ├── ios_auxil_im_thread.cpp │ │ │ │ ├── ios_auxil_im_thread.h │ │ │ │ ├── ios_auxil_usr_cfg.h │ │ │ │ ├── ios_auxil_usr_cfg_device.cpp │ │ │ │ ├── ios_auxil_usr_cfg_device.h │ │ │ │ ├── ios_auxil_usr_cfg_fs.cpp │ │ │ │ ├── ios_auxil_usr_cfg_fs.h │ │ │ │ ├── ios_auxil_usr_cfg_ipc.cpp │ │ │ │ ├── ios_auxil_usr_cfg_ipc.h │ │ │ │ ├── ios_auxil_usr_cfg_request.h │ │ │ │ ├── ios_auxil_usr_cfg_service_thread.cpp │ │ │ │ ├── ios_auxil_usr_cfg_service_thread.h │ │ │ │ ├── ios_auxil_usr_cfg_thread.cpp │ │ │ │ ├── ios_auxil_usr_cfg_thread.h │ │ │ │ └── ios_auxil_usr_cfg_types.h │ │ │ ├── bsp/ │ │ │ │ ├── ios_bsp.cpp │ │ │ │ ├── ios_bsp.h │ │ │ │ ├── ios_bsp_bsp_request.h │ │ │ │ ├── ios_bsp_bsp_response.h │ │ │ │ └── ios_bsp_enum.h │ │ │ ├── crypto/ │ │ │ │ ├── ios_crypto.cpp │ │ │ │ ├── ios_crypto.h │ │ │ │ ├── ios_crypto_enum.h │ │ │ │ ├── ios_crypto_ipc.cpp │ │ │ │ ├── ios_crypto_ipc.h │ │ │ │ ├── ios_crypto_log.h │ │ │ │ ├── ios_crypto_request.h │ │ │ │ └── ios_crypto_types.h │ │ │ ├── fpd/ │ │ │ │ ├── ios_fpd.cpp │ │ │ │ ├── ios_fpd.h │ │ │ │ ├── ios_fpd_act_accountdata.cpp │ │ │ │ ├── ios_fpd_act_accountdata.h │ │ │ │ ├── ios_fpd_act_accountloaderservice.cpp │ │ │ │ ├── ios_fpd_act_accountloaderservice.h │ │ │ │ ├── ios_fpd_act_accountmanagerservice.cpp │ │ │ │ ├── ios_fpd_act_accountmanagerservice.h │ │ │ │ ├── ios_fpd_act_clientstandardservice.cpp │ │ │ │ ├── ios_fpd_act_clientstandardservice.h │ │ │ │ ├── ios_fpd_act_server.cpp │ │ │ │ ├── ios_fpd_act_server.h │ │ │ │ ├── ios_fpd_act_serverstandardservice.cpp │ │ │ │ ├── ios_fpd_act_serverstandardservice.h │ │ │ │ └── ios_fpd_log.h │ │ │ ├── fs/ │ │ │ │ ├── ios_fs.cpp │ │ │ │ ├── ios_fs.h │ │ │ │ ├── ios_fs_enum.h │ │ │ │ ├── ios_fs_fsa.h │ │ │ │ ├── ios_fs_fsa_async_task.cpp │ │ │ │ ├── ios_fs_fsa_async_task.h │ │ │ │ ├── ios_fs_fsa_device.cpp │ │ │ │ ├── ios_fs_fsa_device.h │ │ │ │ ├── ios_fs_fsa_ipc.cpp │ │ │ │ ├── ios_fs_fsa_ipc.h │ │ │ │ ├── ios_fs_fsa_request.h │ │ │ │ ├── ios_fs_fsa_response.h │ │ │ │ ├── ios_fs_fsa_thread.cpp │ │ │ │ ├── ios_fs_fsa_thread.h │ │ │ │ ├── ios_fs_fsa_types.h │ │ │ │ ├── ios_fs_log.h │ │ │ │ ├── ios_fs_mutex.cpp │ │ │ │ ├── ios_fs_mutex.h │ │ │ │ ├── ios_fs_service_thread.cpp │ │ │ │ └── ios_fs_service_thread.h │ │ │ ├── ios.cpp │ │ │ ├── ios.h │ │ │ ├── ios_alarm_thread.cpp │ │ │ ├── ios_alarm_thread.h │ │ │ ├── ios_device.h │ │ │ ├── ios_enum.h │ │ │ ├── ios_enum_string.cpp │ │ │ ├── ios_enum_string.h │ │ │ ├── ios_error.h │ │ │ ├── ios_handlemanager.h │ │ │ ├── ios_ipc.h │ │ │ ├── ios_network_thread.cpp │ │ │ ├── ios_network_thread.h │ │ │ ├── ios_stackobject.h │ │ │ ├── ios_worker_thread.cpp │ │ │ ├── ios_worker_thread.h │ │ │ ├── kernel/ │ │ │ │ ├── ios_kernel.cpp │ │ │ │ ├── ios_kernel.h │ │ │ │ ├── ios_kernel_debug.cpp │ │ │ │ ├── ios_kernel_debug.h │ │ │ │ ├── ios_kernel_enum.h │ │ │ │ ├── ios_kernel_hardware.cpp │ │ │ │ ├── ios_kernel_hardware.h │ │ │ │ ├── ios_kernel_heap.cpp │ │ │ │ ├── ios_kernel_heap.h │ │ │ │ ├── ios_kernel_ipc.cpp │ │ │ │ ├── ios_kernel_ipc.h │ │ │ │ ├── ios_kernel_ipc_thread.cpp │ │ │ │ ├── ios_kernel_ipc_thread.h │ │ │ │ ├── ios_kernel_messagequeue.cpp │ │ │ │ ├── ios_kernel_messagequeue.h │ │ │ │ ├── ios_kernel_otp.cpp │ │ │ │ ├── ios_kernel_otp.h │ │ │ │ ├── ios_kernel_process.cpp │ │ │ │ ├── ios_kernel_process.h │ │ │ │ ├── ios_kernel_resourcemanager.cpp │ │ │ │ ├── ios_kernel_resourcemanager.h │ │ │ │ ├── ios_kernel_scheduler.cpp │ │ │ │ ├── ios_kernel_scheduler.h │ │ │ │ ├── ios_kernel_semaphore.cpp │ │ │ │ ├── ios_kernel_semaphore.h │ │ │ │ ├── ios_kernel_thread.cpp │ │ │ │ ├── ios_kernel_thread.h │ │ │ │ ├── ios_kernel_threadqueue.cpp │ │ │ │ ├── ios_kernel_threadqueue.h │ │ │ │ ├── ios_kernel_timer.cpp │ │ │ │ └── ios_kernel_timer.h │ │ │ ├── mcp/ │ │ │ │ ├── ios_mcp.cpp │ │ │ │ ├── ios_mcp.h │ │ │ │ ├── ios_mcp_config.cpp │ │ │ │ ├── ios_mcp_config.h │ │ │ │ ├── ios_mcp_enum.h │ │ │ │ ├── ios_mcp_ipc.cpp │ │ │ │ ├── ios_mcp_ipc.h │ │ │ │ ├── ios_mcp_mcp.h │ │ │ │ ├── ios_mcp_mcp_device.cpp │ │ │ │ ├── ios_mcp_mcp_device.h │ │ │ │ ├── ios_mcp_mcp_request.h │ │ │ │ ├── ios_mcp_mcp_response.h │ │ │ │ ├── ios_mcp_mcp_thread.cpp │ │ │ │ ├── ios_mcp_mcp_thread.h │ │ │ │ ├── ios_mcp_mcp_types.h │ │ │ │ ├── ios_mcp_pm_thread.cpp │ │ │ │ ├── ios_mcp_pm_thread.h │ │ │ │ ├── ios_mcp_ppc_thread.cpp │ │ │ │ ├── ios_mcp_ppc_thread.h │ │ │ │ ├── ios_mcp_title.cpp │ │ │ │ └── ios_mcp_title.h │ │ │ ├── net/ │ │ │ │ ├── ios_net.cpp │ │ │ │ ├── ios_net.h │ │ │ │ ├── ios_net_ac_main_server.cpp │ │ │ │ ├── ios_net_ac_main_server.h │ │ │ │ ├── ios_net_ac_service.cpp │ │ │ │ ├── ios_net_ac_service.h │ │ │ │ ├── ios_net_enum.h │ │ │ │ ├── ios_net_log.h │ │ │ │ ├── ios_net_ndm_server.cpp │ │ │ │ ├── ios_net_ndm_server.h │ │ │ │ ├── ios_net_socket.h │ │ │ │ ├── ios_net_socket_async_task.cpp │ │ │ │ ├── ios_net_socket_async_task.h │ │ │ │ ├── ios_net_socket_device.cpp │ │ │ │ ├── ios_net_socket_device.h │ │ │ │ ├── ios_net_socket_request.h │ │ │ │ ├── ios_net_socket_response.h │ │ │ │ ├── ios_net_socket_thread.cpp │ │ │ │ ├── ios_net_socket_thread.h │ │ │ │ ├── ios_net_socket_types.h │ │ │ │ ├── ios_net_soshim.cpp │ │ │ │ ├── ios_net_soshim.h │ │ │ │ ├── ios_net_subsys.cpp │ │ │ │ └── ios_net_subsys.h │ │ │ ├── nim/ │ │ │ │ ├── ios_nim.cpp │ │ │ │ ├── ios_nim.h │ │ │ │ ├── ios_nim_boss_privilegedservice.cpp │ │ │ │ ├── ios_nim_boss_privilegedservice.h │ │ │ │ ├── ios_nim_boss_server.cpp │ │ │ │ ├── ios_nim_boss_server.h │ │ │ │ ├── ios_nim_log.h │ │ │ │ ├── ios_nim_nim_server.cpp │ │ │ │ └── ios_nim_nim_server.h │ │ │ ├── nn/ │ │ │ │ ├── ios_nn.cpp │ │ │ │ ├── ios_nn.h │ │ │ │ ├── ios_nn_criticalsection.cpp │ │ │ │ ├── ios_nn_criticalsection.h │ │ │ │ ├── ios_nn_ipc_server.cpp │ │ │ │ ├── ios_nn_ipc_server.h │ │ │ │ ├── ios_nn_ipc_server_command.h │ │ │ │ ├── ios_nn_recursivemutex.cpp │ │ │ │ ├── ios_nn_recursivemutex.h │ │ │ │ ├── ios_nn_thread.cpp │ │ │ │ ├── ios_nn_thread.h │ │ │ │ ├── ios_nn_tls.cpp │ │ │ │ └── ios_nn_tls.h │ │ │ ├── nsec/ │ │ │ │ ├── ios_nsec.cpp │ │ │ │ ├── ios_nsec.h │ │ │ │ ├── ios_nsec_enum.h │ │ │ │ ├── ios_nsec_log.h │ │ │ │ ├── ios_nsec_nssl.h │ │ │ │ ├── ios_nsec_nssl_certstore.cpp │ │ │ │ ├── ios_nsec_nssl_certstore.h │ │ │ │ ├── ios_nsec_nssl_device.cpp │ │ │ │ ├── ios_nsec_nssl_device.h │ │ │ │ ├── ios_nsec_nssl_request.h │ │ │ │ ├── ios_nsec_nssl_response.h │ │ │ │ ├── ios_nsec_nssl_thread.cpp │ │ │ │ ├── ios_nsec_nssl_thread.h │ │ │ │ └── ios_nsec_nssl_types.h │ │ │ ├── pad/ │ │ │ │ ├── ios_pad.cpp │ │ │ │ ├── ios_pad.h │ │ │ │ ├── ios_pad_btrm_device.cpp │ │ │ │ ├── ios_pad_btrm_device.h │ │ │ │ ├── ios_pad_btrm_request.h │ │ │ │ ├── ios_pad_btrm_response.h │ │ │ │ ├── ios_pad_enum.h │ │ │ │ └── ios_pad_log.h │ │ │ ├── test/ │ │ │ │ ├── ios_test.cpp │ │ │ │ └── ios_test.h │ │ │ └── usb/ │ │ │ ├── ios_usb.cpp │ │ │ └── ios_usb.h │ │ ├── nn/ │ │ │ ├── ac/ │ │ │ │ ├── nn_ac_result.h │ │ │ │ └── nn_ac_service.h │ │ │ ├── acp/ │ │ │ │ ├── nn_acp_enum.h │ │ │ │ ├── nn_acp_miscservice.h │ │ │ │ ├── nn_acp_result.h │ │ │ │ ├── nn_acp_saveservice.h │ │ │ │ └── nn_acp_types.h │ │ │ ├── act/ │ │ │ │ ├── nn_act_accountloaderservice.h │ │ │ │ ├── nn_act_accountmanagerservice.h │ │ │ │ ├── nn_act_clientstandardservice.h │ │ │ │ ├── nn_act_enum.h │ │ │ │ ├── nn_act_result.h │ │ │ │ ├── nn_act_serverstandardservice.h │ │ │ │ └── nn_act_types.h │ │ │ ├── boss/ │ │ │ │ ├── nn_boss_management_service.h │ │ │ │ ├── nn_boss_private_service.h │ │ │ │ ├── nn_boss_privileged_service.h │ │ │ │ ├── nn_boss_result.h │ │ │ │ ├── nn_boss_service.h │ │ │ │ ├── nn_boss_test_service.h │ │ │ │ └── nn_boss_types.h │ │ │ ├── dbg/ │ │ │ │ ├── nn_dbg_result_string.cpp │ │ │ │ └── nn_dbg_result_string.h │ │ │ ├── ffl/ │ │ │ │ └── nn_ffl_miidata.h │ │ │ ├── ios/ │ │ │ │ ├── nn_ios_error.cpp │ │ │ │ └── nn_ios_error.h │ │ │ ├── ipc/ │ │ │ │ ├── nn_ipc_command.h │ │ │ │ ├── nn_ipc_format.h │ │ │ │ ├── nn_ipc_managedbuffer.h │ │ │ │ ├── nn_ipc_result.h │ │ │ │ └── nn_ipc_service.h │ │ │ ├── nfp/ │ │ │ │ └── nn_nfp_result.h │ │ │ ├── nn_result.h │ │ │ ├── olv/ │ │ │ │ └── nn_olv_result.h │ │ │ ├── pdm/ │ │ │ │ ├── nn_pdm_cosservice.h │ │ │ │ └── nn_pdm_result.h │ │ │ └── spm/ │ │ │ └── nn_spm_extendedstorageservice.h │ │ ├── traceiter.h │ │ └── vfs/ │ │ ├── vfs_device.h │ │ ├── vfs_directoryiterator.h │ │ ├── vfs_error.h │ │ ├── vfs_filehandle.h │ │ ├── vfs_host_device.cpp │ │ ├── vfs_host_device.h │ │ ├── vfs_host_directoryiterator.cpp │ │ ├── vfs_host_directoryiterator.h │ │ ├── vfs_host_filehandle.cpp │ │ ├── vfs_host_filehandle.h │ │ ├── vfs_link_device.cpp │ │ ├── vfs_link_device.h │ │ ├── vfs_overlay_device.cpp │ │ ├── vfs_overlay_device.h │ │ ├── vfs_overlay_directoryiterator.cpp │ │ ├── vfs_overlay_directoryiterator.h │ │ ├── vfs_path.cpp │ │ ├── vfs_path.h │ │ ├── vfs_pathiterator.cpp │ │ ├── vfs_pathiterator.h │ │ ├── vfs_permissions.h │ │ ├── vfs_result.h │ │ ├── vfs_status.h │ │ ├── vfs_virtual_device.cpp │ │ ├── vfs_virtual_device.h │ │ ├── vfs_virtual_directory.h │ │ ├── vfs_virtual_directoryiterator.cpp │ │ ├── vfs_virtual_directoryiterator.h │ │ ├── vfs_virtual_file.h │ │ ├── vfs_virtual_filehandle.cpp │ │ ├── vfs_virtual_filehandle.h │ │ ├── vfs_virtual_mounteddevice.h │ │ └── vfs_virtual_node.h │ ├── libgfd/ │ │ ├── CMakeLists.txt │ │ ├── gfd.h │ │ ├── gfd_enum.h │ │ ├── gfd_gx2.h │ │ └── src/ │ │ ├── gfd_read.cpp │ │ └── gfd_write.cpp │ └── libgpu/ │ ├── CMakeLists.txt │ ├── gpu.h │ ├── gpu7_displaylayout.h │ ├── gpu7_tiling.h │ ├── gpu7_tiling_cpu.h │ ├── gpu7_tiling_vulkan.h │ ├── gpu_config.h │ ├── gpu_graphicsdriver.h │ ├── gpu_ih.h │ ├── gpu_memory.h │ ├── gpu_ringbuffer.h │ ├── gpu_tiling.h │ ├── gpu_vulkandriver.h │ ├── latte/ │ │ ├── latte_constants.h │ │ ├── latte_contextstate.h │ │ ├── latte_disassembler.h │ │ ├── latte_enum_as_string.cpp │ │ ├── latte_enum_as_string.h │ │ ├── latte_enum_cb.h │ │ ├── latte_enum_common.h │ │ ├── latte_enum_cp.h │ │ ├── latte_enum_db.h │ │ ├── latte_enum_pa.h │ │ ├── latte_enum_pm4.h │ │ ├── latte_enum_spi.h │ │ ├── latte_enum_sq.h │ │ ├── latte_enum_vgt.h │ │ ├── latte_formats.h │ │ ├── latte_instructions.h │ │ ├── latte_instructions_def.inl │ │ ├── latte_pm4.h │ │ ├── latte_pm4_commands.h │ │ ├── latte_pm4_reader.h │ │ ├── latte_pm4_sizer.h │ │ ├── latte_pm4_writer.h │ │ ├── latte_registers.h │ │ ├── latte_registers_cb.h │ │ ├── latte_registers_cp.h │ │ ├── latte_registers_db.h │ │ ├── latte_registers_pa.h │ │ ├── latte_registers_spi.h │ │ ├── latte_registers_sq.h │ │ ├── latte_registers_sx.h │ │ ├── latte_registers_ta.h │ │ ├── latte_registers_td.h │ │ └── latte_registers_vgt.h │ ├── src/ │ │ ├── gpu7_displaylayout.cpp │ │ ├── gpu7_tiling.cpp │ │ ├── gpu7_tiling_cpu.cpp │ │ ├── gpu7_tiling_vulkan.cpp │ │ ├── gpu_clock.h │ │ ├── gpu_configstorage.cpp │ │ ├── gpu_configstorage.h │ │ ├── gpu_event.cpp │ │ ├── gpu_event.h │ │ ├── gpu_graphicsdriver.cpp │ │ ├── gpu_ih.cpp │ │ ├── gpu_ringbuffer.cpp │ │ ├── gpu_tiling.cpp │ │ ├── latte/ │ │ │ ├── latte_decoders.h │ │ │ ├── latte_disassembler.cpp │ │ │ ├── latte_disassembler_alu.cpp │ │ │ ├── latte_disassembler_export.cpp │ │ │ ├── latte_disassembler_state.h │ │ │ ├── latte_disassembler_tex.cpp │ │ │ ├── latte_disassembler_vtx.cpp │ │ │ ├── latte_endian.h │ │ │ ├── latte_formats.cpp │ │ │ ├── latte_instructions.cpp │ │ │ └── latte_shaderparser.h │ │ ├── null/ │ │ │ ├── null_driver.cpp │ │ │ └── null_driver.h │ │ ├── pm4_processor.cpp │ │ ├── pm4_processor.h │ │ ├── spirv/ │ │ │ ├── spirv_alu_op2.cpp │ │ │ ├── spirv_alu_op3.cpp │ │ │ ├── spirv_alu_reduc.cpp │ │ │ ├── spirv_cf.cpp │ │ │ ├── spirv_export.cpp │ │ │ ├── spirv_helpers.cpp │ │ │ ├── spirv_pushconstants.h │ │ │ ├── spirv_shaderspvbuilder.h │ │ │ ├── spirv_spvbuilder.h │ │ │ ├── spirv_tex.cpp │ │ │ ├── spirv_translate.h │ │ │ ├── spirv_transpiler.cpp │ │ │ ├── spirv_transpiler.h │ │ │ └── spirv_vtx.cpp │ │ └── vulkan/ │ │ ├── vk_mem_alloc.cpp │ │ ├── vk_mem_alloc.h │ │ ├── vk_mem_alloc_decaf.h │ │ ├── vulkan_attribbuffers.cpp │ │ ├── vulkan_debug.cpp │ │ ├── vulkan_descs.h │ │ ├── vulkan_display.cpp │ │ ├── vulkan_displayshaders.h │ │ ├── vulkan_draw.cpp │ │ ├── vulkan_driver.cpp │ │ ├── vulkan_driver.h │ │ ├── vulkan_fences.cpp │ │ ├── vulkan_framebuffer.cpp │ │ ├── vulkan_indices.cpp │ │ ├── vulkan_memcache.cpp │ │ ├── vulkan_memtracker.h │ │ ├── vulkan_pipelinelayouts.cpp │ │ ├── vulkan_pipelines.cpp │ │ ├── vulkan_pm4.cpp │ │ ├── vulkan_renderpass.cpp │ │ ├── vulkan_samplers.cpp │ │ ├── vulkan_shaderbuffers.cpp │ │ ├── vulkan_shaders.cpp │ │ ├── vulkan_staging.cpp │ │ ├── vulkan_streamout.cpp │ │ ├── vulkan_surface.cpp │ │ ├── vulkan_swapchain.cpp │ │ ├── vulkan_textures.cpp │ │ ├── vulkan_tiling.cpp │ │ ├── vulkan_utils.cpp │ │ ├── vulkan_utils.h │ │ ├── vulkan_validate.cpp │ │ └── vulkan_viewscissor.cpp │ └── vulkan_shaders/ │ └── gpu7_tiling.comp.glsl ├── tests/ │ ├── CMakeLists.txt │ ├── cpu/ │ │ ├── CMakeLists.txt │ │ ├── data/ │ │ │ ├── input/ │ │ │ │ ├── add │ │ │ │ ├── addc │ │ │ │ ├── adde │ │ │ │ ├── addi │ │ │ │ ├── addic │ │ │ │ ├── addicx │ │ │ │ ├── addis │ │ │ │ ├── addme │ │ │ │ ├── addze │ │ │ │ ├── and │ │ │ │ ├── andc │ │ │ │ ├── andi │ │ │ │ ├── andis │ │ │ │ ├── cmp │ │ │ │ ├── cmpi │ │ │ │ ├── cmpl │ │ │ │ ├── cmpli │ │ │ │ ├── cntlzw │ │ │ │ ├── crand │ │ │ │ ├── crandc │ │ │ │ ├── creqv │ │ │ │ ├── crnand │ │ │ │ ├── crnor │ │ │ │ ├── cror │ │ │ │ ├── crorc │ │ │ │ ├── crxor │ │ │ │ ├── divw │ │ │ │ ├── divwu │ │ │ │ ├── eqv │ │ │ │ ├── extsb │ │ │ │ ├── extsh │ │ │ │ ├── fabs │ │ │ │ ├── fadd │ │ │ │ ├── fadds │ │ │ │ ├── fctiw │ │ │ │ ├── fctiwz │ │ │ │ ├── fdiv │ │ │ │ ├── fdivs │ │ │ │ ├── fmadd │ │ │ │ ├── fmadds │ │ │ │ ├── fmr │ │ │ │ ├── fmsub │ │ │ │ ├── fmsubs │ │ │ │ ├── fmul │ │ │ │ ├── fmuls │ │ │ │ ├── fnabs │ │ │ │ ├── fneg │ │ │ │ ├── fnmadd │ │ │ │ ├── fnmadds │ │ │ │ ├── fnmsub │ │ │ │ ├── fnmsubs │ │ │ │ ├── fres │ │ │ │ ├── frsp │ │ │ │ ├── fsel │ │ │ │ ├── fsub │ │ │ │ ├── fsubs │ │ │ │ ├── mulhw │ │ │ │ ├── mulhwu │ │ │ │ ├── mulli │ │ │ │ ├── mullw │ │ │ │ ├── nand │ │ │ │ ├── neg │ │ │ │ ├── nor │ │ │ │ ├── or │ │ │ │ ├── orc │ │ │ │ ├── ori │ │ │ │ ├── oris │ │ │ │ ├── rlwimi │ │ │ │ ├── rlwinm │ │ │ │ ├── rlwnm │ │ │ │ ├── slw │ │ │ │ ├── sraw │ │ │ │ ├── srawi │ │ │ │ ├── srw │ │ │ │ ├── subf │ │ │ │ ├── subfc │ │ │ │ ├── subfe │ │ │ │ ├── subfic │ │ │ │ ├── subfme │ │ │ │ ├── subfze │ │ │ │ ├── xor │ │ │ │ ├── xori │ │ │ │ └── xoris │ │ │ └── wiiu/ │ │ │ ├── add │ │ │ ├── addc │ │ │ ├── adde │ │ │ ├── addi │ │ │ ├── addic │ │ │ ├── addicx │ │ │ ├── addis │ │ │ ├── addme │ │ │ ├── addze │ │ │ ├── and │ │ │ ├── andc │ │ │ ├── andi │ │ │ ├── andis │ │ │ ├── cmp │ │ │ ├── cmpi │ │ │ ├── cmpl │ │ │ ├── cmpli │ │ │ ├── cntlzw │ │ │ ├── crand │ │ │ ├── crandc │ │ │ ├── creqv │ │ │ ├── crnand │ │ │ ├── crnor │ │ │ ├── cror │ │ │ ├── crorc │ │ │ ├── crxor │ │ │ ├── divw │ │ │ ├── divwu │ │ │ ├── eqv │ │ │ ├── extsb │ │ │ ├── extsh │ │ │ ├── fabs │ │ │ ├── fadd │ │ │ ├── fadds │ │ │ ├── fctiw │ │ │ ├── fctiwz │ │ │ ├── fdiv │ │ │ ├── fdivs │ │ │ ├── fmadd │ │ │ ├── fmadds │ │ │ ├── fmr │ │ │ ├── fmsub │ │ │ ├── fmsubs │ │ │ ├── fmul │ │ │ ├── fmuls │ │ │ ├── fnabs │ │ │ ├── fneg │ │ │ ├── fnmadd │ │ │ ├── fnmadds │ │ │ ├── fnmsub │ │ │ ├── fnmsubs │ │ │ ├── fres │ │ │ ├── frsp │ │ │ ├── fsel │ │ │ ├── fsub │ │ │ ├── fsubs │ │ │ ├── mulhw │ │ │ ├── mulhwu │ │ │ ├── mulli │ │ │ ├── mullw │ │ │ ├── nand │ │ │ ├── neg │ │ │ ├── nor │ │ │ ├── or │ │ │ ├── orc │ │ │ ├── ori │ │ │ ├── oris │ │ │ ├── rlwimi │ │ │ ├── rlwinm │ │ │ ├── rlwnm │ │ │ ├── slw │ │ │ ├── sraw │ │ │ ├── srawi │ │ │ ├── srw │ │ │ ├── subf │ │ │ ├── subfc │ │ │ ├── subfe │ │ │ ├── subfic │ │ │ ├── subfme │ │ │ ├── subfze │ │ │ ├── xor │ │ │ ├── xori │ │ │ └── xoris │ │ ├── fuzz-compare/ │ │ │ ├── fuzztests.cpp │ │ │ ├── fuzztests.h │ │ │ └── main.cpp │ │ ├── generator/ │ │ │ ├── client/ │ │ │ │ ├── code_test.s │ │ │ │ ├── console.c │ │ │ │ ├── console.h │ │ │ │ ├── loader.c │ │ │ │ ├── loader.h │ │ │ │ ├── program.c │ │ │ │ ├── program.h │ │ │ │ ├── sysfuncs.c │ │ │ │ └── sysfuncs.h │ │ │ ├── dataset/ │ │ │ │ ├── generator.cpp │ │ │ │ ├── generator_testlist.h │ │ │ │ └── generator_valuelist.h │ │ │ └── server/ │ │ │ └── server.cpp │ │ ├── libcpu/ │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ │ ├── runner-achurch/ │ │ │ ├── CMakeLists.txt │ │ │ └── main.cpp │ │ └── runner-generated/ │ │ ├── CMakeLists.txt │ │ ├── hardwaretests.cpp │ │ ├── hardwaretests.h │ │ └── main.cpp │ └── gpu/ │ ├── CMakeLists.txt │ └── tiling/ │ ├── CMakeLists.txt │ ├── addrlib_helpers.h │ ├── cpu_tiling_test.cpp │ ├── test_helpers.h │ ├── tiling_test.cpp │ ├── tiling_tests.h │ ├── vulkan_helpers.cpp │ ├── vulkan_helpers.h │ └── vulkan_tiling_test.cpp ├── tools/ │ ├── CMakeLists.txt │ ├── gfd-tool/ │ │ ├── CMakeLists.txt │ │ └── gfdtool.cpp │ ├── latte-assembler/ │ │ ├── CMakeLists.txt │ │ ├── resources/ │ │ │ ├── example_shader.psh │ │ │ └── example_shader.vsh │ │ └── src/ │ │ ├── assembler_alu.cpp │ │ ├── assembler_cf.cpp │ │ ├── assembler_common.cpp │ │ ├── assembler_exp.cpp │ │ ├── assembler_instructions.cpp │ │ ├── assembler_instructions.h │ │ ├── assembler_latte.cpp │ │ ├── assembler_parse.cpp │ │ ├── assembler_tex.cpp │ │ ├── gfd.cpp │ │ ├── gfd_comment_parser.h │ │ ├── gfd_psh_comment_parser.cpp │ │ ├── gfd_vsh_comment_parser.cpp │ │ ├── glsl_compiler.cpp │ │ ├── glsl_compiler.h │ │ ├── main.cpp │ │ ├── shader.h │ │ └── shader_assembler.h │ ├── pm4-replay/ │ │ ├── CMakeLists.txt │ │ ├── clilog.h │ │ ├── config.h │ │ ├── main.cpp │ │ ├── replay_parser.h │ │ ├── replay_parser_pm4.cpp │ │ ├── replay_parser_pm4.h │ │ ├── replay_ringbuffer.h │ │ ├── sdl_window.cpp │ │ └── sdl_window.h │ ├── pm4-replay-qt/ │ │ ├── CMakeLists.txt │ │ ├── decaf.cpp │ │ ├── decaf.h │ │ ├── main.cpp │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ ├── replay.cpp │ │ ├── replay.h │ │ ├── replaycommandsmodel.cpp │ │ ├── replaycommandsmodel.h │ │ ├── replayrenderwidget.cpp │ │ ├── replayrenderwidget.h │ │ ├── replayrunner.cpp │ │ ├── replayrunner.h │ │ └── resources/ │ │ └── mainwindow.ui │ └── wiiu-rpc/ │ ├── CMakeLists.txt │ ├── client.py │ └── src/ │ ├── console.c │ ├── console.h │ ├── main.c │ ├── packet.c │ ├── packet.h │ ├── server.c │ └── server.h └── vcpkg.json
Showing preview only (479K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7070 symbols across 1354 files)
FILE: src/common/atomicqueue.h
function AtomicQueue (line 18) | alignas(64) AtomicQueue
function SingleAtomicQueue (line 68) | size_t Size>
FILE: src/common/bitfield.h
type BitfieldHelper (line 10) | struct BitfieldHelper
function BitfieldType (line 28) | static inline BitfieldType set(BitfieldType bitfield,
type BitfieldHelper (line 46) | struct BitfieldHelper
function get (line 50) | static float get(BitfieldType bitfield)
function BitfieldType (line 55) | static inline BitfieldType set(BitfieldType bitfield, float floatValue)
type BitfieldHelper (line 63) | struct BitfieldHelper
function get (line 67) | static constexpr bool get(BitfieldType bitfield)
function BitfieldType (line 72) | static inline BitfieldType set(BitfieldType bitfield, bool value)
FILE: src/common/bitutils.h
function Type (line 126) | constexpr Type
function make_ppc_bitmask (line 133) | inline uint32_t
function clz (line 173) | inline int
function clz64 (line 188) | inline int
function bit_scan_reverse (line 202) | inline bool
function bit_rotate_left (line 220) | inline uint32_t bit_rotate_left(uint32_t x, int shift)
function bit_rotate_right (line 235) | inline uint32_t bit_rotate_right(uint32_t x, int shift)
FILE: src/common/byte_swap.h
function Type (line 18) | static Type swap(Type src)
function Type (line 27) | static Type swap(Type src)
function Type (line 44) | static Type swap(Type src)
function Type (line 59) | static Type swap(Type src)
FILE: src/common/byte_swap_array.h
function byte_swap_unaligned (line 8) | void
function byte_swap_aligned (line 20) | inline void
function byte_swap_aligned (line 46) | inline void
FILE: src/common/configstorage.h
function addListener (line 35) | void addListener(ChangeListener listener)
FILE: src/common/datahash.h
function class (line 11) | class DataHash
function namespace (line 81) | namespace std
FILE: src/common/fastregionmap.h
function clear (line 23) | void clear()
function Type (line 48) | Type find(uint32_t location)
function set (line 68) | void set(uint32_t location, Type data)
FILE: src/common/fixed.h
type UnwrapFixedPoint (line 21) | struct UnwrapFixedPoint
FILE: src/common/floatutils.h
function FloatBitsSingle (line 52) | inline FloatBitsSingle
function FloatBitsDouble (line 58) | inline FloatBitsDouble
function extend_float_nan_bits (line 190) | inline uint64_t
function extend_float (line 198) | inline double
function truncate_double_bits (line 208) | inline uint32_t
function truncate_double (line 214) | inline float
FILE: src/common/frameallocator.h
function class (line 6) | class FrameAllocator
function reset (line 53) | void
FILE: src/common/log.h
function class (line 9) | class Logger
FILE: src/common/platform_debug.h
function namespace (line 4) | namespace platform
FILE: src/common/platform_dir.h
function namespace (line 4) | namespace platform
FILE: src/common/platform_exception.h
function namespace (line 4) | namespace platform
FILE: src/common/platform_fiber.h
function namespace (line 4) | namespace platform
FILE: src/common/platform_memory.h
function namespace (line 6) | namespace platform
FILE: src/common/platform_socket.h
function namespace (line 16) | namespace platform
FILE: src/common/platform_stacktrace.h
function namespace (line 4) | namespace platform
FILE: src/common/platform_thread.h
function namespace (line 5) | namespace platform
FILE: src/common/platform_time.h
function namespace (line 4) | namespace platform
FILE: src/common/platform_winapi_string.h
function namespace (line 11) | namespace platform
FILE: src/common/rangecombiner.h
function push (line 13) | void push(_ObjType object, _OffsetType offset, _SizeType size)
function flush (line 26) | void flush()
FILE: src/common/src/assert.cpp
function assertFailed (line 19) | void
function assertWarnFailed (line 64) | void
function hostFaultWithStackTrace (line 73) | void
FILE: src/common/src/murmur3.cpp
function FORCE_INLINE (line 21) | static FORCE_INLINE uint32_t rotl32(uint32_t x, int8_t r)
function FORCE_INLINE (line 26) | static FORCE_INLINE uint64_t rotl64(uint64_t x, int8_t r)
function FORCE_INLINE (line 45) | static FORCE_INLINE uint32_t fmix32(uint32_t h)
function FORCE_INLINE (line 58) | static FORCE_INLINE uint64_t fmix64(uint64_t k)
function MurmurHash3_x86_32 (line 71) | void MurmurHash3_x86_32(const void * key, int len,
function MurmurHash3_x86_128 (line 128) | void MurmurHash3_x86_128(const void * key, const int len,
function MurmurHash3_x64_128 (line 234) | void MurmurHash3_x64_128(const void * key, const int len,
FILE: src/common/src/platform_posix_debug.cpp
type platform (line 6) | namespace platform
function debugBreak (line 9) | void
function debugLog (line 15) | void
FILE: src/common/src/platform_posix_dir.cpp
type platform (line 11) | namespace platform
function createDirectory (line 14) | bool
function createParentDirectories (line 25) | bool
function fileExists (line 37) | bool
function isFile (line 43) | bool
function isDirectory (line 56) | bool
function getConfigDirectory (line 69) | std::string
FILE: src/common/src/platform_posix_exception.cpp
type platform (line 16) | namespace platform
type sigaction (line 22) | struct sigaction
type sigaction (line 25) | struct sigaction
type sigaction (line 28) | struct sigaction
type sigaction (line 31) | struct sigaction
function dispatchException (line 34) | static void
function segvHandler (line 88) | static void
function illHandler (line 95) | static void
function installExceptionHandler (line 102) | bool
FILE: src/common/src/platform_posix_fiber.cpp
type platform (line 15) | namespace platform
type Fiber (line 21) | struct Fiber
function Fiber (line 32) | Fiber *
function fiberEntryPoint (line 39) | static void
function Fiber (line 45) | Fiber *
function destroyFiber (line 65) | void
function swapToFiber (line 75) | void
FILE: src/common/src/platform_posix_memory.cpp
function flagsToProt (line 20) | static int
function flagsToOpen (line 38) | static int
function getSystemPageSize (line 57) | size_t
function MapFileHandle (line 64) | MapFileHandle
FILE: src/common/src/platform_posix_socket.cpp
type platform (line 7) | namespace platform
function socketWouldBlock (line 10) | bool socketWouldBlock(int result)
function socketSetBlocking (line 15) | int socketSetBlocking(Socket socket, bool blocking)
function socketClose (line 28) | int socketClose(Socket socket)
FILE: src/common/src/platform_posix_stacktrace.cpp
type platform (line 8) | namespace platform
function StackTrace (line 11) | StackTrace * captureStackTrace()
function freeStackTrace (line 16) | void freeStackTrace(StackTrace *)
function formatStackTrace (line 20) | std::string
function printStackTrace (line 26) | void printStackTrace(StackTrace *)
FILE: src/common/src/platform_posix_thread.cpp
type platform (line 8) | namespace platform
function setThreadName (line 11) | void
function exitThread (line 21) | void
FILE: src/common/src/platform_posix_time.cpp
type platform (line 7) | namespace platform
function tm (line 10) | tm
function time_t (line 18) | time_t
FILE: src/common/src/platform_win_debug.cpp
type platform (line 9) | namespace platform
function debugBreak (line 12) | void
function debugLog (line 18) | void
FILE: src/common/src/platform_win_dir.cpp
type platform (line 15) | namespace platform
function isDriveName (line 18) | static bool
function createDirectory (line 26) | bool
function createParentDirectories (line 39) | bool
function fileExists (line 54) | bool
function isFile (line 61) | bool
function isDirectory (line 74) | bool
function getConfigDirectory (line 87) | std::string
FILE: src/common/src/platform_win_exception.cpp
type platform (line 11) | namespace platform
function LONG (line 17) | LONG
function LONG (line 39) | static LONG CALLBACK
function installExceptionHandler (line 58) | bool
FILE: src/common/src/platform_win_fiber.cpp
type platform (line 9) | namespace platform
type Fiber (line 12) | struct Fiber
function Fiber (line 19) | Fiber *
function fiberEntryPoint (line 27) | static void __stdcall
function Fiber (line 34) | Fiber *
function destroyFiber (line 44) | void
function swapToFiber (line 51) | void
FILE: src/common/src/platform_win_memory.cpp
type platform (line 13) | namespace platform
type WindowsMapFileHandle (line 16) | struct WindowsMapFileHandle
function DWORD (line 22) | static DWORD
function DWORD (line 41) | static DWORD
function getSystemPageSize (line 60) | size_t
function MapFileHandle (line 69) | MapFileHandle
function MapFileHandle (line 94) | MapFileHandle
function closeMemoryMappedFile (line 130) | bool
function unmapViewOfFile (line 186) | bool
function reserveMemory (line 200) | bool
function freeMemory (line 215) | bool
function commitMemory (line 231) | bool
function uncommitMemory (line 252) | bool
function protectMemory (line 268) | bool
FILE: src/common/src/platform_win_socket.cpp
type platform (line 4) | namespace platform
function socketWouldBlock (line 7) | bool socketWouldBlock(int result)
function socketSetBlocking (line 12) | int socketSetBlocking(Socket socket, bool blocking)
function socketClose (line 18) | int socketClose(Socket socket)
FILE: src/common/src/platform_win_stacktrace.cpp
type platform (line 13) | namespace platform
type StackTrace (line 16) | struct StackTrace
type MySymbol (line 22) | struct MySymbol : SYMBOL_INFO
function StackTrace (line 27) | StackTrace *
function freeStackTrace (line 35) | void
function formatStackTrace (line 41) | std::string
function printStackTrace (line 69) | void
FILE: src/common/src/platform_win_thread.cpp
type tagTHREADNAME_INFO (line 13) | struct tagTHREADNAME_INFO
type platform (line 23) | namespace platform
function setThreadName (line 26) | void
function exitThread (line 45) | void
FILE: src/common/src/platform_win_time.cpp
type platform (line 6) | namespace platform
function tm (line 9) | tm
function time_t (line 17) | time_t
FILE: src/common/strutils.h
function replace_all (line 17) | inline void
function split_string (line 29) | inline void
function begins_with (line 69) | inline bool
function ends_with (line 80) | inline bool
function iequals (line 91) | inline bool
function string_copy (line 102) | inline void
function string_copy (line 115) | inline void
function std (line 143) | inline std::string_view
function std (line 157) | inline std::string
FILE: src/common/teenyheap.h
function class (line 9) | class TeenyHeap
function getTotalFreeSize (line 53) | size_t
function free (line 101) | void
FILE: src/common/tga_encoder.cpp
type tga (line 5) | namespace tga
function writeFile (line 8) | bool
FILE: src/common/tga_encoder.h
function namespace (line 5) | namespace tga
FILE: src/common/type_traits.h
type is_true (line 19) | struct is_true
type is_true (line 22) | struct is_true
FILE: src/common/xxhash.c
function XXH_free (line 109) | static void XXH_free(void* p) { free(p); }
type BYTE (line 147) | typedef uint8_t BYTE;
type U16 (line 148) | typedef uint16_t U16;
type U32 (line 149) | typedef uint32_t U32;
type BYTE (line 151) | typedef unsigned char BYTE;
type U16 (line 152) | typedef unsigned short U16;
type U32 (line 153) | typedef unsigned int U32;
function U32 (line 160) | static U32 XXH_read32(const void* memPtr) { return *(const U32*)memPtr; }
type unalign (line 166) | typedef union { U32 u32; } __attribute__((packed)) unalign;
function U32 (line 167) | static U32 XXH_read32(const void* ptr) { return ((const unalign*)ptr)->u...
function U32 (line 174) | static U32 XXH_read32(const void* memPtr)
function U32 (line 203) | static U32 XXH_swap32(U32 x)
type XXH_endianess (line 216) | typedef enum { XXH_bigEndian = 0, XXH_littleEndian = 1 } XXH_endianess;
function XXH_isLittleEndian (line 220) | static int XXH_isLittleEndian(void)
type XXH_alignment (line 232) | typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment;
function FORCE_INLINE (line 234) | FORCE_INLINE U32 XXH_readLE32_align(const void* ptr, XXH_endianess endia...
function FORCE_INLINE (line 242) | FORCE_INLINE U32 XXH_readLE32(const void* ptr, XXH_endianess endian)
function U32 (line 247) | static U32 XXH_readBE32(const void* ptr)
function XXH_versionNumber (line 257) | XXH_PUBLIC_API unsigned XXH_versionNumber(void) { return XXH_VERSION_NUM...
function U32 (line 269) | static U32 XXH32_round(U32 seed, U32 input)
function U32 (line 278) | static U32 XXH32_avalanche(U32 h32)
function U32 (line 290) | static U32
function FORCE_INLINE (line 351) | FORCE_INLINE U32
function XXH32 (line 392) | XXH_PUBLIC_API unsigned int XXH32(const void* input, size_t len, unsigne...
function XXH_PUBLIC_API (line 423) | XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void)
function XXH_PUBLIC_API (line 427) | XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr)
function XXH_PUBLIC_API (line 433) | XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dstState, const XXH32...
function XXH_PUBLIC_API (line 438) | XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t* statePtr, unsign...
function FORCE_INLINE (line 452) | FORCE_INLINE XXH_errorcode
function XXH_PUBLIC_API (line 518) | XXH_PUBLIC_API XXH_errorcode XXH32_update(XXH32_state_t* state_in, const...
function FORCE_INLINE (line 529) | FORCE_INLINE U32
function XXH32_digest (line 549) | XXH_PUBLIC_API unsigned int XXH32_digest(const XXH32_state_t* state_in)
function XXH_PUBLIC_API (line 568) | XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH3...
function XXH_PUBLIC_API (line 575) | XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonica...
type U64 (line 595) | typedef uint64_t U64;
type U64 (line 598) | typedef unsigned long long U64;
function U64 (line 606) | static U64 XXH_read64(const void* memPtr) { return *(const U64*)memPtr; }
type unalign64 (line 612) | typedef union { U32 u32; U64 u64; } __attribute__((packed)) unalign64;
function U64 (line 613) | static U64 XXH_read64(const void* ptr) { return ((const unalign64*)ptr)-...
function U64 (line 621) | static U64 XXH_read64(const void* memPtr)
function U64 (line 635) | static U64 XXH_swap64(U64 x)
function FORCE_INLINE (line 648) | FORCE_INLINE U64 XXH_readLE64_align(const void* ptr, XXH_endianess endia...
function FORCE_INLINE (line 656) | FORCE_INLINE U64 XXH_readLE64(const void* ptr, XXH_endianess endian)
function U64 (line 661) | static U64 XXH_readBE64(const void* ptr)
function U64 (line 675) | static U64 XXH64_round(U64 acc, U64 input)
function U64 (line 683) | static U64 XXH64_mergeRound(U64 acc, U64 val)
function U64 (line 691) | static U64 XXH64_avalanche(U64 h64)
function U64 (line 704) | static U64
function FORCE_INLINE (line 813) | FORCE_INLINE U64
function XXH64 (line 858) | XXH_PUBLIC_API unsigned long long XXH64(const void* input, size_t len, u...
function XXH_PUBLIC_API (line 887) | XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void)
function XXH_PUBLIC_API (line 891) | XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr)
function XXH_PUBLIC_API (line 897) | XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dstState, const XXH64...
function XXH_PUBLIC_API (line 902) | XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, unsign...
function FORCE_INLINE (line 915) | FORCE_INLINE XXH_errorcode
function XXH_PUBLIC_API (line 976) | XXH_PUBLIC_API XXH_errorcode XXH64_update(XXH64_state_t* state_in, const...
function FORCE_INLINE (line 986) | FORCE_INLINE U64 XXH64_digest_endian(const XXH64_state_t* state, XXH_end...
function XXH64_digest (line 1010) | XXH_PUBLIC_API unsigned long long XXH64_digest(const XXH64_state_t* stat...
function XXH_PUBLIC_API (line 1023) | XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH6...
function XXH_PUBLIC_API (line 1030) | XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonica...
FILE: src/common/xxhash.h
type XXH_errorcode (line 79) | typedef enum { XXH_OK = 0, XXH_ERROR } XXH_errorcode;
type XXH32_hash_t (line 162) | typedef unsigned int XXH32_hash_t;
type XXH32_state_t (line 172) | typedef struct XXH32_state_s XXH32_state_t;
type XXH32_canonical_t (line 204) | typedef struct { unsigned char digest[4]; } XXH32_canonical_t;
type XXH64_hash_t (line 219) | typedef unsigned long long XXH64_hash_t;
type XXH64_state_t (line 229) | typedef struct XXH64_state_s XXH64_state_t;
type XXH64_canonical_t (line 239) | typedef struct { unsigned char digest[8]; } XXH64_canonical_t;
type XXH32_state_s (line 264) | struct XXH32_state_s
type XXH64_state_s (line 277) | struct XXH64_state_s
type XXH32_state_s (line 291) | struct XXH32_state_s
type XXH64_state_s (line 305) | struct XXH64_state_s
FILE: src/decaf-cli/config.cpp
type config (line 3) | namespace config
type system (line 6) | namespace system
function loadFrontendToml (line 13) | bool
function saveFrontendToml (line 20) | bool
FILE: src/decaf-cli/config.h
function namespace (line 6) | namespace config
FILE: src/decaf-cli/decafcli.h
function class (line 12) | class DecafCLI
FILE: src/decaf-cli/main.cpp
function getCommandLineParser (line 21) | static excmd::parser
function getPathBasename (line 63) | static std::string
function start (line 75) | int
function main (line 177) | int main(int argc, char **argv)
FILE: src/decaf-qt/src/aboutdialog.h
function class (line 7) | class AboutDialog : public QDialog
FILE: src/decaf-qt/src/debugger/addresstextdocumentwidget.h
function class (line 13) | class AddressTextDocumentWidget : public QAbstractScrollArea
type MouseHitTest (line 40) | struct MouseHitTest
function getBytesPerLine (line 52) | int getBytesPerLine() { return mBytesPerLine; }
function VirtualAddress (line 53) | VirtualAddress getStartAddress() { return mStartAddress; }
function VirtualAddress (line 54) | VirtualAddress getEndAddress() { return mEndAddress; }
function characterWidth (line 63) | int characterWidth() { return mCharacterWidth; }
function documentMargin (line 64) | int documentMargin() { return mDocumentMargin; }
function lineHeight (line 65) | int lineHeight() { return mLineHeight; }
function virtual (line 87) | virtual QVector<QAbstractTextDocumentLayout::Selection>
function virtual (line 93) | virtual DocumentCursor cursorFromAddress(VirtualAddress address)
FILE: src/decaf-qt/src/debugger/breakpointsmodel.h
function class (line 7) | class BreakpointsModel : public QAbstractTableModel
FILE: src/decaf-qt/src/debugger/breakpointswindow.h
function namespace (line 4) | namespace Ui
function class (line 12) | class BreakpointsWindow : public QWidget
FILE: src/decaf-qt/src/debugger/debugdata.h
function class (line 8) | class DebugData : public QObject
function CafeMemorySegment (line 88) | const CafeMemorySegment *segmentForAddress(VirtualAddress address) const
FILE: src/decaf-qt/src/debugger/debuggershortcuts.h
type DebuggerShortcuts (line 4) | struct DebuggerShortcuts
FILE: src/decaf-qt/src/debugger/debuggerwindow.h
function namespace (line 9) | namespace Ui
function class (line 28) | class DebuggerWindow : public QMainWindow
FILE: src/decaf-qt/src/debugger/disassemblywidget.h
function class (line 20) | class DisassemblyWidget : public AddressTextDocumentWidget
FILE: src/decaf-qt/src/debugger/disassemblywindow.h
function namespace (line 4) | namespace Ui
type DebuggerShortcuts (line 10) | struct DebuggerShortcuts
function class (line 12) | class DisassemblyWindow : public QWidget
FILE: src/decaf-qt/src/debugger/functionsmodel.h
function class (line 6) | class FunctionsModel : public QAbstractTableModel
FILE: src/decaf-qt/src/debugger/functionswindow.h
function namespace (line 4) | namespace Ui
function class (line 13) | class FunctionsWindow : public QWidget
FILE: src/decaf-qt/src/debugger/jitprofilingmodel.h
function class (line 6) | class JitProfilingModel : public QAbstractTableModel
FILE: src/decaf-qt/src/debugger/jitprofilingwindow.h
function namespace (line 4) | namespace Ui
function class (line 13) | class JitProfilingWindow : public QWidget
FILE: src/decaf-qt/src/debugger/memorywidget.cpp
function QChar (line 318) | static constexpr inline QChar
FILE: src/decaf-qt/src/debugger/memorywidget.h
function class (line 15) | class MemoryWidget : public AddressTextDocumentWidget
FILE: src/decaf-qt/src/debugger/memorywindow.h
function namespace (line 4) | namespace Ui
type DebuggerShortcuts (line 9) | struct DebuggerShortcuts
function class (line 11) | class MemoryWindow : public QWidget
FILE: src/decaf-qt/src/debugger/registerswindow.cpp
function QString (line 44) | static QString toHexString(T value, int width)
FILE: src/decaf-qt/src/debugger/registerswindow.h
function class (line 10) | class RegistersWindow : public QPlainTextEdit
FILE: src/decaf-qt/src/debugger/segmentsmodel.h
function class (line 7) | class SegmentsModel : public QAbstractTableModel
FILE: src/decaf-qt/src/debugger/segmentswindow.h
function namespace (line 5) | namespace Ui
function class (line 13) | class SegmentsWindow : public QWidget
FILE: src/decaf-qt/src/debugger/stackwidget.h
function class (line 11) | class StackWidget : public AddressTextDocumentWidget
FILE: src/decaf-qt/src/debugger/stackwindow.h
function namespace (line 6) | namespace Ui
type DebuggerShortcuts (line 12) | struct DebuggerShortcuts
function class (line 14) | class StackWindow : public QWidget
FILE: src/decaf-qt/src/debugger/threadsmodel.h
function class (line 6) | class ThreadsModel : public QAbstractTableModel
FILE: src/decaf-qt/src/debugger/threadswindow.h
function namespace (line 4) | namespace Ui
function class (line 12) | class ThreadsWindow : public QWidget
FILE: src/decaf-qt/src/debugger/voicesmodel.h
function class (line 7) | class VoicesModel : public QAbstractTableModel
FILE: src/decaf-qt/src/debugger/voiceswindow.h
function namespace (line 4) | namespace Ui
function class (line 12) | class VoicesWindow : public QWidget
FILE: src/decaf-qt/src/inputdriver.cpp
function translateAxisValue (line 32) | static inline float
FILE: src/decaf-qt/src/inputdriver.h
type ConnectedJoystick (line 14) | struct ConnectedJoystick
function enableButtonEvents (line 37) | void enableButtonEvents() { mButtonEventsEnabled = true; }
function disableButtonEvents (line 38) | void disableButtonEvents() { mButtonEventsEnabled = false; }
FILE: src/decaf-qt/src/inputeventfilter.h
function class (line 6) | class InputEventFilter : public QObject
FILE: src/decaf-qt/src/main.cpp
function main (line 18) | int main(int argc, char *argv[])
FILE: src/decaf-qt/src/mainwindow.h
function class (line 23) | class MainWindow : public QMainWindow
FILE: src/decaf-qt/src/renderwidget.cpp
function QPaintEngine (line 76) | QPaintEngine *
FILE: src/decaf-qt/src/renderwidget.h
function namespace (line 5) | namespace gpu
function class (line 12) | class RenderWidget : public QWidget
FILE: src/decaf-qt/src/settings.cpp
function loadSettings (line 23) | bool
function saveSettings (line 41) | bool
function loadFromTOML (line 131) | bool
function saveToTOML (line 216) | bool
function loadFromTOML (line 281) | bool
function saveToTOML (line 289) | bool
function translateTitleListMode (line 311) | static std::optional<UiSettings::TitleListMode>
function loadFromTOML (line 323) | bool
function saveToTOML (line 336) | bool
FILE: src/decaf-qt/src/settings.h
type class (line 14) | enum class
function ControllerType (line 45) | enum class ControllerType
function Q_OBJECT (line 130) | Q_OBJECT
function set (line 151) | void set(const Settings &settings)
FILE: src/decaf-qt/src/settings/audiosettingswidget.h
function class (line 5) | class AudioSettingsWidget : public SettingsWidget
FILE: src/decaf-qt/src/settings/colourlineedit.h
function class (line 6) | class ColourLineEdit : public QLineEdit
FILE: src/decaf-qt/src/settings/contentsettingswidget.h
function class (line 5) | class ContentSettingsWidget : public SettingsWidget
FILE: src/decaf-qt/src/settings/debugsettingswidget.h
function class (line 5) | class DebugSettingsWidget : public SettingsWidget
FILE: src/decaf-qt/src/settings/displaysettingswidget.h
function class (line 5) | class DisplaySettingsWidget : public SettingsWidget
FILE: src/decaf-qt/src/settings/inputsettingswidget.cpp
function QString (line 192) | static QString
FILE: src/decaf-qt/src/settings/inputsettingswidget.h
type JoystickInfo (line 14) | struct JoystickInfo
function class (line 21) | class InputSettingsWidget : public SettingsWidget
FILE: src/decaf-qt/src/settings/loggingsettingswidget.h
function class (line 5) | class LoggingSettingsWidget : public SettingsWidget
FILE: src/decaf-qt/src/settings/settingsdialog.h
function SettingsTab (line 15) | enum class SettingsTab
FILE: src/decaf-qt/src/settings/settingswidget.h
function class (line 6) | class SettingsWidget : public QWidget
FILE: src/decaf-qt/src/settings/systemsettingswidget.h
function class (line 5) | class SystemSettingsWidget : public SettingsWidget
FILE: src/decaf-qt/src/tgahandler.cpp
type TGAType (line 39) | enum TGAType {
type TgaHeader (line 60) | struct TgaHeader {
function QDataStream (line 77) | static QDataStream &operator>> (QDataStream &s, TgaHeader &head)
function IsSupported (line 97) | static bool IsSupported(const TgaHeader &head)
type Color555 (line 131) | struct Color555 {
type TgaHeaderInfo (line 137) | struct TgaHeaderInfo {
method TgaHeaderInfo (line 143) | TgaHeaderInfo(const TgaHeader &tga) : rle(false), pal(false), rgb(fals...
function LoadTGA (line 177) | static bool LoadTGA(QDataStream &s, const TgaHeader &tga, QImage &img)
FILE: src/decaf-qt/src/tgahandler.h
function class (line 14) | class TGAHandler : public QImageIOHandler
FILE: src/decaf-qt/src/titlelistmodel.h
type TitleInfo (line 9) | struct TitleInfo
function QAbstractTableModel (line 30) | QAbstractTableModel(parent)
function clear (line 39) | void clear()
function rowCount (line 47) | int rowCount(const QModelIndex &parent) const override
function columnCount (line 56) | int columnCount(const QModelIndex &parent) const override
function QString (line 61) | static QString
function else (line 104) | else if (role == Qt::DecorationRole) {
function else (line 108) | else if (role == TitleTypeRole) {
function else (line 110) | else if (role == TitlePathRole) {
function QVariant (line 119) | QVariant headerData(int section, Qt::Orientation orientation, int role) ...
function addTitle (line 142) | void addTitle(TitleInfo *info)
FILE: src/decaf-qt/src/titlelistscanner.h
function class (line 11) | class TitleScanner : public QObject
FILE: src/decaf-qt/src/titlelistwidget.cpp
class TitleSortFilterProxyModel (line 16) | class TitleSortFilterProxyModel : public QSortFilterProxyModel
method TitleSortFilterProxyModel (line 19) | TitleSortFilterProxyModel(QObject *parent = nullptr) :
method filterAcceptsRow (line 24) | bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) ...
FILE: src/decaf-qt/src/titlelistwidget.h
function class (line 15) | class TitleListWidget : public QWidget
FILE: src/decaf-sdl/config.cpp
type config (line 5) | namespace config
type input (line 8) | namespace input
type sound (line 16) | namespace sound
type test (line 23) | namespace test
function setupDefaultInputDevices (line 43) | void
function loadFrontendToml (line 136) | bool
function saveFrontendToml (line 225) | bool
FILE: src/decaf-sdl/config.h
function namespace (line 7) | namespace config
FILE: src/decaf-sdl/decafsdl.cpp
function Uint32 (line 105) | static Uint32
FILE: src/decaf-sdl/decafsdl.h
function namespace (line 10) | namespace gpu { class GraphicsDriver; }
function namespace (line 12) | namespace config::input
FILE: src/decaf-sdl/decafsdl_posix.cpp
function setWindowIcon (line 7) | void
FILE: src/decaf-sdl/decafsdl_sound.h
function class (line 7) | class DecafSDLSound : public decaf::SoundDriver
FILE: src/decaf-sdl/decafsdl_win.cpp
function setWindowIcon (line 16) | void
FILE: src/decaf-sdl/main.cpp
function getCommandLineParser (line 22) | static excmd::parser
function getPathBasename (line 107) | static std::string
function start (line 119) | static int
function wWinMain (line 261) | int WINAPI
function main (line 286) | int main(int argc, char **argv) {
FILE: src/decaf_game.h
function namespace (line 5) | namespace decaf
FILE: src/libconfig/config_excmd.h
function namespace (line 8) | namespace config
FILE: src/libconfig/config_toml.h
function namespace (line 11) | namespace config
FILE: src/libconfig/src/loader_excmd.cpp
type config (line 10) | namespace config
function getExcmdGroups (line 13) | std::vector<excmd::option_group *>
function loadFromExcmd (line 134) | bool
function loadFromExcmd (line 212) | bool
function loadFromExcmd (line 295) | bool
FILE: src/libconfig/src/loader_toml.cpp
type config (line 6) | namespace config
function readArray (line 10) | inline void
function translateDisplayBackend (line 34) | static std::optional<gpu::DisplaySettings::Backend>
function translateScreenMode (line 58) | static std::optional<gpu::DisplaySettings::ScreenMode>
function translateViewMode (line 86) | static std::optional<gpu::DisplaySettings::ViewMode>
function loadFromTOML (line 102) | bool
function loadFromTOML (line 118) | bool
function loadFromTOML (line 168) | bool
function saveToTOML (line 217) | bool
function saveToTOML (line 238) | bool
function saveToTOML (line 309) | bool
FILE: src/libcpu/address.h
function namespace (line 6) | namespace cpu
function Address (line 88) | constexpr Address operator + (ptrdiff_t value) const
FILE: src/libcpu/be2_array.h
function fill (line 199) | constexpr void fill(const raw_value_type &value)
function operator (line 262) | constexpr auto &operator*()
function other (line 273) | bool operator !=(be2_array_iterator &other) const
function operator (line 296) | constexpr const auto &operator*()
function other (line 307) | bool operator !=(be2_const_array_iterator &other) const
FILE: src/libcpu/be2_atomic.h
function compare_exchange_weak (line 51) | bool
function compare_exchange_strong (line 79) | bool
function value_type (line 94) | value_type
function value_type (line 109) | value_type
function value_type (line 124) | value_type
function value_type (line 139) | value_type
function value_type (line 154) | value_type
FILE: src/libcpu/be2_val.h
function setValue (line 75) | void setValue(value_type value)
function namespace (line 476) | namespace fmt
FILE: src/libcpu/cpu.h
type Tracer (line 14) | struct Tracer
function namespace (line 16) | namespace cpu
FILE: src/libcpu/cpu_breakpoints.h
function namespace (line 6) | namespace cpu
FILE: src/libcpu/cpu_config.h
function namespace (line 7) | namespace cpu
FILE: src/libcpu/cpu_control.h
function namespace (line 6) | namespace cpu
FILE: src/libcpu/cpu_formatters.h
function namespace (line 8) | namespace fmt
FILE: src/libcpu/espresso/espresso_disassembler.cpp
type espresso (line 10) | namespace espresso
function disassembleField (line 13) | static bool
function disassemblyToText (line 197) | std::string
function disassemblyArgumentToText (line 215) | std::string
function checkBranchConditionAlias (line 253) | static void
function disassemble (line 309) | bool
type BoBits (line 399) | enum BoBits
type BcFlags (line 407) | enum BcFlags
function BranchInfo (line 416) | static BranchInfo
function BranchInfo (line 477) | BranchInfo
FILE: src/libcpu/espresso/espresso_disassembler.h
function namespace (line 8) | namespace espresso
FILE: src/libcpu/espresso/espresso_instruction.h
function namespace (line 4) | namespace espresso
FILE: src/libcpu/espresso/espresso_instructionid.h
function namespace (line 3) | namespace espresso
FILE: src/libcpu/espresso/espresso_instructionset.cpp
type espresso (line 7) | namespace espresso
type TableEntry (line 10) | struct TableEntry
type FieldMap (line 12) | struct FieldMap
method addInstruction (line 18) | void
method addTable (line 27) | void
method TableEntry (line 39) | TableEntry *
method FieldMap (line 48) | FieldMap *
function isInstructionFieldMarker (line 93) | bool
function isBranchInstruction (line 100) | bool
function getInstructionFieldStart (line 117) | uint32_t
function getInstructionFieldEnd (line 124) | uint32_t
function getInstructionFieldWidth (line 131) | uint32_t
function getInstructionFieldBitmask (line 140) | uint32_t
function getInstructionFieldValue (line 148) | uint32_t
function SPR (line 161) | SPR
function encodeSPR (line 167) | void
function InstructionInfo (line 175) | InstructionInfo *
function Instruction (line 199) | Instruction
function InstructionInfo (line 217) | InstructionInfo *
function InstructionAlias (line 224) | InstructionAlias *
function isA (line 253) | bool
function initialiseInstructionTable (line 269) | static void
function cleanInsName (line 291) | static std::string
type FieldIndex (line 311) | struct FieldIndex
method FieldIndex (line 313) | FieldIndex(InstructionField _id) : id(_id)
method InstructionOpcode (line 322) | InstructionOpcode
method InstructionOpcode (line 328) | InstructionOpcode
method InstructionOpcode (line 334) | InstructionOpcode
function initialiseInstructionSet (line 378) | void
FILE: src/libcpu/espresso/espresso_instructionset.h
function namespace (line 8) | namespace espresso
FILE: src/libcpu/espresso/espresso_registerformats.h
function namespace (line 5) | namespace espresso
FILE: src/libcpu/espresso/espresso_spr.h
function namespace (line 4) | namespace espresso
FILE: src/libcpu/functionpointer.h
function namespace (line 4) | namespace cpu
function AddressType (line 83) | static constexpr AddressType cast(FunctionPointerType src)
function FunctionPointerType (line 88) | static constexpr FunctionPointerType cast(AddressType src)
function AddressType (line 101) | static constexpr AddressType cast(FunctionPointerType src)
function FunctionPointerType (line 106) | static constexpr FunctionPointerType cast(AddressType src)
function namespace (line 117) | namespace fmt
FILE: src/libcpu/jit_stats.h
function namespace (line 13) | namespace cpu
FILE: src/libcpu/mem.h
function namespace (line 8) | namespace mem
FILE: src/libcpu/memtrack.h
function namespace (line 6) | namespace cpu
FILE: src/libcpu/mmu.h
function namespace (line 8) | namespace internal
type class (line 28) | enum class
type class (line 34) | enum class
type class (line 43) | enum class
function PhysicalAddress (line 116) | PhysicalAddress
FILE: src/libcpu/pointer.h
function get_type (line 230) | get_type *get() const
function value_type (line 235) | value_type *getRawPointer() const
function typename (line 479) | typename std::enable_if<std::is_pointer<DstTypePtr>::value>::type>
function typename (line 495) | typename std::enable_if<std::is_pointer<SrcTypePtr>::value>::type>
function namespace (line 509) | namespace fmt
FILE: src/libcpu/src/cpu.cpp
type cpu (line 19) | namespace cpu
function initialise (line 43) | void
function clearInstructionCache (line 67) | void
function invalidateInstructionCache (line 73) | void
function addJitReadOnlyRange (line 80) | void
function coreEntryPoint (line 87) | void
function start (line 95) | void
function join (line 118) | void
function halt (line 131) | void
function Core (line 141) | Core *
function setCoreEntrypointHandler (line 147) | void
function setSegfaultHandler (line 153) | void
function setBranchTraceHandler (line 159) | void
function tbToTimePoint (line 165) | std::chrono::steady_clock::time_point
type this_core (line 181) | namespace this_core
function id (line 190) | uint32_t
function resume (line 196) | void
function executeSub (line 206) | void
function updateRoundingMode (line 215) | void
FILE: src/libcpu/src/cpu_alarm.cpp
type cpu::internal (line 21) | namespace cpu::internal
function alarmEntryPoint (line 24) | static void
function startAlarmThread (line 53) | void
function joinAlarmThread (line 62) | void
function stopAlarmThread (line 70) | void
type cpu::this_core (line 79) | namespace cpu::this_core
function setNextAlarm (line 82) | void
FILE: src/libcpu/src/cpu_alarm.h
function namespace (line 3) | namespace cpu::internal
FILE: src/libcpu/src/cpu_breakpoints.cpp
type cpu (line 12) | namespace cpu
function updateBreakpointList (line 20) | static inline void
function addBreakpoint (line 44) | void
function removeBreakpoint (line 90) | void
function testBreakpoint (line 119) | bool
function hasBreakpoints (line 148) | bool
function hasBreakpoint (line 158) | bool
function getBreakpoints (line 179) | std::shared_ptr<BreakpointList>
function getBreakpointSavedCode (line 191) | uint32_t
FILE: src/libcpu/src/cpu_configstorage.cpp
type cpu (line 6) | namespace cpu
function config (line 11) | std::shared_ptr<const Settings>
function setConfig (line 17) | void
function registerConfigChangeListener (line 23) | void
FILE: src/libcpu/src/cpu_configstorage.h
function namespace (line 6) | namespace cpu
FILE: src/libcpu/src/cpu_host_exception.cpp
type cpu::internal (line 9) | namespace cpu::internal
function coreSegfaultEntry (line 16) | static void
function illegalInstructionHandler (line 38) | static void
function hostExceptionHandler (line 48) | static platform::ExceptionResumeFunc
function installHostExceptionHandler (line 82) | void
function setUserSegfaultHandler (line 91) | void
FILE: src/libcpu/src/cpu_host_exception.h
function namespace (line 4) | namespace cpu::internal
FILE: src/libcpu/src/cpu_internal.h
function namespace (line 10) | namespace cpu
FILE: src/libcpu/src/cpu_interrupts.cpp
type cpu (line 9) | namespace cpu
function defaultInterruptHandler (line 12) | static void defaultInterruptHandler(Core *core, uint32_t interrupt_fla...
function interrupt (line 18) | void
function setInterruptHandler (line 29) | void
type this_core (line 35) | namespace this_core
function clearInterrupt (line 38) | void
function interruptMask (line 44) | uint32_t
function setInterruptMask (line 50) | uint32_t
function checkInterrupts (line 59) | void
function waitForInterrupt (line 71) | void
function waitNextInterrupt (line 95) | void
FILE: src/libcpu/src/cpu_memtrack_posix.cpp
type cpu (line 8) | namespace cpu
type internal (line 11) | namespace internal
function initialiseMemtrack (line 14) | void
function registerTrackedRange (line 19) | void
function unregisterTrackedRange (line 26) | void
function clearTrackedRanges (line 32) | void
function MemtrackState (line 39) | MemtrackState
FILE: src/libcpu/src/cpu_memtrack_win.cpp
type cpu (line 17) | namespace cpu
type MappedArea (line 25) | struct MappedArea
type internal (line 38) | namespace internal
function LONG (line 41) | LONG writeExceptionHandler(_EXCEPTION_POINTERS *ExceptionInfo)
function initialiseMemtrack (line 101) | void
function registerTrackedRange (line 134) | void
function unregisterTrackedRange (line 183) | void
function clearTrackedRanges (line 215) | void
function MemtrackState (line 230) | MemtrackState
FILE: src/libcpu/src/cpu_mmu.cpp
type cpu (line 5) | namespace cpu
function initialiseMemory (line 11) | bool
function allocateVirtualAddress (line 21) | bool
function freeVirtualAddress (line 28) | bool
function VirtualAddressRange (line 35) | VirtualAddressRange
function VirtualAddressRange (line 42) | VirtualAddressRange
function mapMemory (line 50) | bool
function unmapMemory (line 65) | bool
function resetVirtualMemory (line 76) | bool
function VirtualMemoryType (line 83) | VirtualMemoryType
function isValidAddress (line 89) | bool
function virtualToPhysicalAddress (line 96) | bool
FILE: src/libcpu/src/cpu_systemcall.cpp
type cpu (line 5) | namespace cpu
type StaticSystemCallData (line 10) | struct StaticSystemCallData
function setUnknownSystemCallHandler (line 22) | void
function registerSystemCallHandler (line 28) | uint32_t
function registerIllegalSystemCall (line 36) | uint32_t
function SystemCallHandler (line 42) | SystemCallHandler
FILE: src/libcpu/src/interpreter/interpreter.cpp
type cpu (line 13) | namespace cpu
type interpreter (line 16) | namespace interpreter
function initialise (line 22) | void
function instrfptr_t (line 37) | instrfptr_t
function registerInstruction (line 49) | void
function hasInstruction (line 55) | bool
function Core (line 61) | Core *
function resume (line 103) | void
FILE: src/libcpu/src/interpreter/interpreter.h
function namespace (line 4) | namespace cpu
FILE: src/libcpu/src/interpreter/interpreter_branch.cpp
function b (line 5) | static void
type BoBits (line 27) | enum BoBits
type BcFlags (line 35) | enum BcFlags
function bcGeneric (line 44) | static void
function bc (line 97) | static void
function bcctr (line 104) | static void
function bclr (line 111) | static void
FILE: src/libcpu/src/interpreter/interpreter_condition.cpp
function getCRFRange (line 13) | static std::pair<uint32_t, uint32_t>
function getCRF (line 21) | uint32_t
function setCRF (line 28) | void
function getCRB (line 39) | uint32_t
function setCRB (line 45) | void
type CmpFlags (line 52) | enum CmpFlags
function cmpGeneric (line 58) | static void
function cmp (line 91) | static void
function cmpi (line 97) | static void
function cmpl (line 103) | static void
function cmpli (line 109) | static void
type FCmpFlags (line 116) | enum FCmpFlags
function fcmpGeneric (line 124) | static void
function fcmpo (line 162) | static void
function fcmpu (line 168) | static void
function ps_cmpo0 (line 174) | static void
function ps_cmpo1 (line 180) | static void
function ps_cmpu0 (line 186) | static void
function ps_cmpu1 (line 192) | static void
function crand (line 199) | static void
function crandc (line 211) | static void
function creqv (line 223) | static void
function crnand (line 235) | static void
function crnor (line 247) | static void
function cror (line 259) | static void
function crorc (line 271) | static void
function crxor (line 283) | static void
function mcrf (line 295) | static void
function mcrfs (line 302) | static void
function mcrxr (line 319) | static void
function mfcr (line 327) | static void
function mtcrf (line 334) | static void
FILE: src/libcpu/src/interpreter/interpreter_float.cpp
function ppc_estimate_reciprocal (line 48) | float
function ppc_estimate_reciprocal_root (line 114) | double
function updateFEX_VX (line 168) | void
function updateFX_FEX_VX (line 195) | void
function updateFPSCR (line 209) | void
function updateFPRF (line 238) | void
function updateFloatConditionRegister (line 272) | void
function roundForMultiply (line 281) | void
function CLANG_FPU_BUG_WORKAROUND (line 355) | CLANG_FPU_BUG_WORKAROUND
type FPArithOperator (line 410) | enum FPArithOperator {
function fpArithGeneric (line 417) | static void
function fadd (line 552) | static void
function fadds (line 559) | static void
function fdiv (line 566) | static void
function fdivs (line 573) | static void
function fmul (line 580) | static void
function fmuls (line 587) | static void
function fsub (line 594) | static void
function fsubs (line 601) | static void
function fres (line 608) | static void
function frsqrte (line 649) | static void
function fsel (line 681) | static void
type FMAFlags (line 703) | enum FMAFlags
function fmaGeneric (line 711) | static void
function fmadd (line 803) | static void
function fmadds (line 810) | static void
function fmsub (line 817) | static void
function fmsubs (line 824) | static void
function fnmadd (line 831) | static void
function fnmadds (line 838) | static void
function fnmsub (line 845) | static void
function fnmsubs (line 852) | static void
function fctiwGeneric (line 859) | static void
function fctiw (line 933) | static void
function fctiwz (line 940) | static void
function frsp (line 947) | static void
function fabs (line 976) | static void
function fnabs (line 991) | static void
function fmr (line 1006) | static void
function fneg (line 1017) | static void
function mffs (line 1032) | static void
function mtfsb0 (line 1043) | static void
function mtfsb1 (line 1058) | static void
function mtfsf (line 1074) | static void
function mtfsfi (line 1100) | static void
FILE: src/libcpu/src/interpreter/interpreter_float.h
function possibleUnderflow (line 6) | bool
FILE: src/libcpu/src/interpreter/interpreter_insreg.h
function namespace (line 10) | namespace cpu
FILE: src/libcpu/src/interpreter/interpreter_integer.cpp
function updateConditionRegister (line 8) | static void
function updateCarry (line 29) | static void
function updateOverflow (line 36) | static void
type AddFlags (line 44) | enum AddFlags
function addGeneric (line 59) | static void
function add (line 127) | static void
function addc (line 133) | static void
function adde (line 139) | static void
function addi (line 145) | static void
function addic (line 151) | static void
function addicx (line 157) | static void
function addis (line 163) | static void
function addme (line 169) | static void
function addze (line 175) | static void
type AndFlags (line 182) | enum AndFlags
function andGeneric (line 192) | static void
function and_ (line 225) | static void
function andc (line 231) | static void
function andi (line 237) | static void
function andis (line 243) | static void
function cntlzw (line 250) | static void
function divGeneric (line 273) | static void
function divw (line 306) | static void
function divwu (line 312) | static void
function eqv (line 319) | static void
function extsb (line 336) | static void
function extsh (line 352) | static void
type MulFlags (line 368) | enum MulFlags
function mulSignedGeneric (line 379) | static void
function mulUnsignedGeneric (line 426) | static void
function mulhw (line 451) | static void
function mulhwu (line 457) | static void
function mulli (line 463) | static void
function mullw (line 469) | static void
function nand (line 476) | static void
function neg (line 493) | static void
function nor (line 515) | static void
type OrFlags (line 532) | enum OrFlags
function orGeneric (line 542) | static void
function or_ (line 575) | static void
function orc (line 581) | static void
function ori (line 587) | static void
function oris (line 593) | static void
type RlwFlags (line 600) | enum RlwFlags
function rlwGeneric (line 608) | static void
function rlwimi (line 639) | static void
function rlwinm (line 646) | static void
function rlwnm (line 653) | static void
type ShiftFlags (line 660) | enum ShiftFlags
function shiftLogical (line 668) | static void
function slw (line 703) | static void
function srw (line 710) | static void
function shiftArithmetic (line 718) | static void
function sraw (line 762) | static void
function srawi (line 768) | static void
function subf (line 775) | static void
function subfc (line 781) | static void
function subfe (line 787) | static void
function subfic (line 793) | static void
function subfme (line 799) | static void
function subfze (line 805) | static void
type XorFlags (line 812) | enum XorFlags
function xorGeneric (line 820) | static void
function xor_ (line 847) | static void
function xori (line 853) | static void
function xoris (line 859) | static void
FILE: src/libcpu/src/interpreter/interpreter_loadstore.cpp
type LoadFlags (line 18) | enum LoadFlags
function convertFloatToDouble (line 28) | static double
function loadFloatAsDouble (line 38) | static double
function loadFloat (line 45) | static void
function loadGeneric (line 76) | static void
function lbz (line 138) | static void
function lbzu (line 144) | static void
function lbzux (line 150) | static void
function lbzx (line 156) | static void
function lha (line 162) | static void
function lhau (line 168) | static void
function lhaux (line 174) | static void
function lhax (line 180) | static void
function lhbrx (line 186) | static void
function lhz (line 192) | static void
function lhzu (line 198) | static void
function lhzux (line 204) | static void
function lhzx (line 210) | static void
function lwbrx (line 216) | static void
function lwarx (line 222) | static void
function lwz (line 228) | static void
function lwzu (line 234) | static void
function lwzux (line 240) | static void
function lwzx (line 246) | static void
function lfs (line 252) | static void
function lfsu (line 258) | static void
function lfsux (line 264) | static void
function lfsx (line 270) | static void
function lfd (line 276) | static void
function lfdu (line 282) | static void
function lfdux (line 288) | static void
function lfdx (line 294) | static void
function lmw (line 302) | static void
type LswFlags (line 321) | enum LswFlags
function lswGeneric (line 327) | static void
function lswi (line 358) | static void
function lswx (line 364) | static void
type StoreFlags (line 371) | enum StoreFlags
function storeDoubleAsFloat (line 381) | static void
function storeFloat (line 397) | static void
type ReservedWrite (line 427) | struct ReservedWrite { }
type ReservedWrite<true> (line 430) | struct ReservedWrite<true> {
method write (line 432) | static inline bool write(cpu::Core *state, uint32_t ea, Type s)
type ReservedWrite<false> (line 461) | struct ReservedWrite<false> {
method write (line 463) | static inline bool write(cpu::Core *state, uint32_t ea, Type s)
function storeGeneric (line 471) | static void
function stb (line 514) | static void
function stbu (line 520) | static void
function stbux (line 526) | static void
function stbx (line 532) | static void
function sth (line 538) | static void
function sthu (line 544) | static void
function sthux (line 550) | static void
function sthx (line 556) | static void
function stw (line 562) | static void
function stwu (line 568) | static void
function stwux (line 574) | static void
function stwx (line 580) | static void
function sthbrx (line 586) | static void
function stwbrx (line 592) | static void
function stwcx (line 598) | static void
function stfs (line 604) | static void
function stfsu (line 610) | static void
function stfsux (line 616) | static void
function stfsx (line 622) | static void
function stfd (line 628) | static void
function stfdu (line 634) | static void
function stfdux (line 640) | static void
function stfdx (line 646) | static void
function stfiwx (line 652) | static void
function stmw (line 660) | static void
type StswFlags (line 679) | enum StswFlags
function stswGeneric (line 685) | static void
function stswi (line 715) | static void
function stswx (line 721) | static void
function dequantize (line 727) | static double
function Type (line 758) | inline Type
function quantize (line 766) | static void
type PsqLoadFlags (line 815) | enum PsqLoadFlags
function psqLoad (line 823) | static void
function psq_l (line 876) | static void
function psq_lu (line 882) | static void
function psq_lx (line 888) | static void
function psq_lux (line 894) | static void
type PsqStoreFlags (line 901) | enum PsqStoreFlags
function psqStore (line 909) | static void
function psq_st (line 961) | static void
function psq_stu (line 967) | static void
function psq_stx (line 973) | static void
function psq_stux (line 979) | static void
FILE: src/libcpu/src/interpreter/interpreter_pairedsingle.cpp
type MoveMode (line 9) | enum MoveMode
function moveGeneric (line 18) | static void
function ps_mr (line 67) | static void
function ps_neg (line 74) | static void
function ps_abs (line 81) | static void
function ps_nabs (line 88) | static void
type PSArithOperator (line 95) | enum PSArithOperator {
function psArithSingle (line 105) | static bool
function psArithGeneric (line 212) | static void
function ps_add (line 236) | static void
function ps_sub (line 243) | static void
function ps_mul (line 250) | static void
function ps_muls0 (line 256) | static void
function ps_muls1 (line 262) | static void
function ps_div (line 269) | static void
function psSumGeneric (line 276) | static void
function ps_sum0 (line 321) | static void
function ps_sum1 (line 328) | static void
type FMAFlags (line 335) | enum FMAFlags
function fmaSingle (line 344) | static bool
function fmaGeneric (line 418) | static void
function ps_madd (line 441) | static void
function ps_madds0 (line 447) | static void
function ps_madds1 (line 453) | static void
function ps_msub (line 459) | static void
function ps_nmadd (line 465) | static void
function ps_nmsub (line 471) | static void
type MergeFlags (line 478) | enum MergeFlags
function mergeGeneric (line 485) | static void
function ps_merge00 (line 530) | static void
function ps_merge01 (line 536) | static void
function ps_merge11 (line 542) | static void
function ps_merge10 (line 548) | static void
function ps_res (line 555) | static void
function ps_rsqrte (line 607) | static void
function ps_sel (line 671) | static void
FILE: src/libcpu/src/interpreter/interpreter_system.cpp
function icbi (line 35) | static void
function dcbf (line 41) | static void
function dcbi (line 47) | static void
function dcbst (line 53) | static void
function dcbt (line 59) | static void
function dcbtst (line 65) | static void
function dcbz (line 71) | static void
function dcbz_l (line 88) | static void
function eieio (line 95) | static void
function sync (line 101) | static void
function isync (line 107) | static void
function mfspr (line 113) | static void
function mtspr (line 166) | static void
function mftb (line 214) | static void
function mfmsr (line 235) | static void
function mtmsr (line 242) | static void
function mfsr (line 249) | static void
function mfsrin (line 256) | static void
function mtsr (line 264) | static void
function mtsrin (line 271) | static void
function kc (line 279) | static void
function tw (line 290) | static void
FILE: src/libcpu/src/jit/binrec/jit_binrec.cpp
function Core (line 45) | Core *
function BinrecHandle (line 104) | BinrecHandle *
function CodeBlock (line 163) | CodeBlock *
function CodeBlock (line 204) | CodeBlock *
function CodeBlock (line 301) | inline CodeBlock *
function rdtsc (line 317) | static inline uint64_t
function brTimeBaseHandler (line 481) | uint64_t
function BinrecCore (line 491) | BinrecCore *
function BinrecCore (line 519) | BinrecCore *
function brLog (line 535) | void
FILE: src/libcpu/src/jit/binrec/jit_binrec.h
function namespace (line 12) | namespace cpu
FILE: src/libcpu/src/jit/binrec/jit_binrec_opt.cpp
type cpu (line 8) | namespace cpu
type jit (line 11) | namespace jit
type OptFlagInfo (line 14) | struct OptFlagInfo
FILE: src/libcpu/src/jit/binrec/jit_binrec_verify.cpp
type cpu::jit (line 29) | namespace cpu::jit
type VerifyBuffer (line 32) | struct VerifyBuffer
function isMemoryInstruction (line 115) | static bool
function lookupMemoryTarget (line 190) | static void
function disassemble (line 380) | static std::string
function shouldVerify (line 389) | static bool
FILE: src/libcpu/src/jit/jit.cpp
type cpu (line 4) | namespace cpu
type jit (line 7) | namespace jit
function setBackend (line 16) | void
function JitBackend (line 26) | JitBackend *
function Core (line 36) | Core *
function clearCache (line 53) | void
function addReadOnlyRange (line 65) | void
function resume (line 77) | void
FILE: src/libcpu/src/jit/jit.h
function namespace (line 4) | namespace cpu
FILE: src/libcpu/src/jit/jit_backend.h
function namespace (line 6) | namespace cpu
FILE: src/libcpu/src/jit/jit_codecache.cpp
type cpu (line 15) | namespace cpu
type jit (line 18) | namespace jit
function CodeBlock (line 200) | CodeBlock *
function CodeBlockIndex (line 216) | CodeBlockIndex
function CodeBlockIndex (line 226) | CodeBlockIndex
function CodeBlock (line 282) | CodeBlock *
FILE: src/libcpu/src/jit/jit_codecache.h
function namespace (line 11) | namespace cpu
FILE: src/libcpu/src/jit/jit_stats.cpp
type cpu (line 4) | namespace cpu
type jit (line 7) | namespace jit
function sampleStats (line 10) | bool
function resetProfileStats (line 22) | void
function setProfilingMask (line 32) | void
function getProfilingMask (line 42) | unsigned
FILE: src/libcpu/src/memorymap.cpp
type cpu (line 9) | namespace cpu
type internal (line 12) | namespace internal
function VirtualMemoryType (line 323) | VirtualMemoryType
function PhysicalMemoryType (line 347) | PhysicalMemoryType
function VirtualAddressRange (line 523) | VirtualAddressRange
function VirtualAddressRange (line 540) | VirtualAddressRange
FILE: src/libcpu/src/memorymap.h
function namespace (line 10) | namespace cpu
FILE: src/libcpu/src/statedbg.h
function dbgStateCmp (line 17) | inline bool dbgStateCmp(cpu::Core* state, cpu::Core* estate, std::vector...
FILE: src/libcpu/src/trace.cpp
type Tracer (line 26) | struct Tracer
function debugPrint (line 34) | static inline void
type cpu (line 43) | namespace cpu
function freeTracer (line 61) | void
type this_core (line 69) | namespace this_core
function setTracer (line 72) | void setTracer(cpu::Tracer *tracer)
function getStateFieldName (line 81) | std::string
function printFieldValue (line 109) | static void
function printInstruction (line 135) | static void
function Trace (line 163) | const Trace&
function getTracerNumTraces (line 179) | size_t
function traceInit (line 185) | void
function getFieldStateField (line 198) | static uint32_t
function saveStateField (line 290) | void
function restoreStateField (line 321) | void
function pushUniqueField (line 350) | static void
function Trace (line 366) | Trace *
function traceInstructionEnd (line 442) | void
function tracePrint (line 496) | void
function traceReg (line 526) | int
function traceRegStart (line 570) | void
function traceRegNext (line 579) | void
function traceRegAround (line 612) | void
function traceRegContinue (line 636) | void
function tracePrintSyscall (line 650) | void
function traceLogSyscall (line 670) | void
FILE: src/libcpu/state.h
type Tracer (line 8) | struct Tracer
type CoreRegs (line 19) | struct CoreRegs
type Core (line 70) | struct Core
function interrupt_mask (line 78) | uint32_t interrupt_mask { 0xFFFFFFFF };
FILE: src/libcpu/trace.h
function namespace (line 8) | namespace cpu
type Tracer (line 14) | struct Tracer
function namespace (line 17) | namespace StateField
type TraceFieldType (line 40) | typedef uint32_t TraceFieldType;
type TraceFieldValue (line 42) | struct TraceFieldValue
type Trace (line 119) | struct Trace
FILE: src/libdecaf/decaf.h
function namespace (line 10) | namespace decaf
FILE: src/libdecaf/decaf_config.h
function namespace (line 7) | namespace decaf
FILE: src/libdecaf/decaf_content.h
function namespace (line 4) | namespace decaf
FILE: src/libdecaf/decaf_debug_api.h
function namespace (line 11) | namespace decaf::debug
FILE: src/libdecaf/decaf_erreula.h
function namespace (line 4) | namespace decaf
FILE: src/libdecaf/decaf_eventlistener.h
function namespace (line 4) | namespace decaf
FILE: src/libdecaf/decaf_graphics.h
function namespace (line 6) | namespace decaf
FILE: src/libdecaf/decaf_input.h
function Category (line 12) | enum class Category
FILE: src/libdecaf/decaf_log.h
function namespace (line 7) | namespace decaf
FILE: src/libdecaf/decaf_nullinputdriver.h
function namespace (line 4) | namespace decaf
FILE: src/libdecaf/decaf_pm4replay.h
function namespace (line 6) | namespace decaf::pm4
FILE: src/libdecaf/decaf_softwarekeyboard.h
function namespace (line 5) | namespace decaf
FILE: src/libdecaf/decaf_sound.h
function namespace (line 4) | namespace decaf
FILE: src/libdecaf/src/cafe/cafe_ppc_interface.h
function namespace (line 9) | namespace cafe
FILE: src/libdecaf/src/cafe/cafe_ppc_interface_invoke_guest.h
function namespace (line 6) | namespace cafe
FILE: src/libdecaf/src/cafe/cafe_ppc_interface_invoke_host.h
function namespace (line 6) | namespace cafe
function cpu (line 64) | [[nodiscard]]
FILE: src/libdecaf/src/cafe/cafe_ppc_interface_params.h
function namespace (line 8) | namespace cafe::detail
FILE: src/libdecaf/src/cafe/cafe_ppc_interface_trace_host.cpp
type cafe::detail (line 9) | namespace cafe::detail
function readGpr (line 12) | inline uint32_t
function invoke_trace_host_impl (line 24) | void
FILE: src/libdecaf/src/cafe/cafe_ppc_interface_trace_host.h
function namespace (line 6) | namespace cafe
FILE: src/libdecaf/src/cafe/cafe_ppc_interface_varargs.h
function namespace (line 7) | namespace cafe
function iterator (line 117) | iterator begin()
type stack_va_list (line 145) | struct stack_va_list
function virt_ptr (line 164) | static inline virt_ptr<va_list>
FILE: src/libdecaf/src/cafe/cafe_stackobject.h
function StackObject (line 43) | StackObject(const Type &value) :
function index (line 99) | size_t index)
function oldStackTop (line 119) | auto oldStackTop = virt_addr { core->gpr[1] };
function StackString (line 168) | inline StackString
FILE: src/libdecaf/src/cafe/cafe_tinyheap.cpp
type cafe (line 9) | namespace cafe
type TrackingBlockBase (line 13) | struct TrackingBlockBase
function getTrackingBlocks (line 40) | static virt_ptr<TrackingBlockVirtual>
function getTrackingBlocks (line 46) | static phys_ptr<TrackingBlockPhysical>
function pointer_cast (line 54) | static auto
function pointer_cast (line 61) | static auto
function pointer_cast (line 68) | static auto
function pointer_cast (line 75) | static auto
function virt_addr (line 82) | static virt_addr
function virt_addr (line 89) | static virt_addr
function phys_addr (line 96) | static phys_addr
function phys_addr (line 103) | static phys_addr
function pointer_addrof (line 110) | static auto
function dumpHeap (line 121) | static void
function findBlockIdxContaining (line 144) | static int32_t
function TinyHeapError (line 190) | TinyHeapError
function TinyHeapError (line 230) | static TinyHeapError
function freeBlock (line 285) | static void
function TinyHeapError (line 356) | TinyHeapError
function TinyHeapError (line 365) | TinyHeapError
function TinyHeapError (line 376) | TinyHeapError
function TinyHeapError (line 489) | TinyHeapError
function TinyHeapError (line 498) | TinyHeapError
function TinyHeapError (line 509) | TinyHeapError
function TinyHeapError (line 573) | TinyHeapError
function TinyHeapError (line 582) | TinyHeapError
function TinyHeap_Free (line 592) | static void
function TinyHeap_Free (line 617) | void
function TinyHeap_Free (line 624) | void
function TinyHeap_GetLargestFree (line 633) | static int32_t
function TinyHeap_GetLargestFree (line 660) | int32_t
function TinyHeap_GetLargestFree (line 666) | int32_t
function TinyHeap_Enum (line 674) | static cpu::Pointer<void, AddressType>
function TinyHeap_Enum (line 739) | virt_ptr<void>
function TinyHeap_Enum (line 748) | phys_ptr<void>
function TinyHeap_EnumFree (line 759) | static cpu::Pointer<void, AddressType>
function TinyHeap_EnumFree (line 824) | virt_ptr<void>
function TinyHeap_EnumFree (line 833) | phys_ptr<void>
FILE: src/libdecaf/src/cafe/cafe_tinyheap.h
function namespace (line 4) | namespace cafe
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel.cpp
type cafe::kernel (line 30) | namespace cafe::kernel
type StaticKernelData (line 33) | struct StaticKernelData
type CoreData (line 35) | struct CoreData
function mainCoreEntryPoint (line 55) | static void
function subCoreEntryPoint (line 134) | static void
function setSubCoreEntryContext (line 165) | void
function cpuEntrypoint (line 176) | static void
function cpuBranchTraceHandler (line 188) | static void
function start (line 221) | void
function stopping (line 277) | bool
function join (line 283) | void
function stop (line 289) | void
function setExecutableFilename (line 298) | void
type internal (line 304) | namespace internal
function idleCoreLoop (line 307) | void
function exit (line 323) | void
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel.h
function namespace (line 5) | namespace cpu
function namespace (line 10) | namespace cafe::kernel
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_context.cpp
type cafe::kernel (line 13) | namespace cafe::kernel
type HostContext (line 16) | struct HostContext
type StaticContextData (line 34) | struct StaticContextData
function copyContextFromCpu (line 48) | void
function copyContextToCpu (line 77) | void
function sleepCurrentContext (line 106) | void
function wakeCurrentContext (line 125) | void
function fiberEntryPoint (line 145) | static void
function freeHostContext (line 163) | static void
function checkDeadContext (line 174) | static void
function exitThreadNoLock (line 196) | void
function resetFaultedContextFiber (line 221) | void
function setContextFiberEntry (line 231) | void
function getCurrentContext (line 245) | virt_ptr<Context>
function switchContext (line 251) | void
function hijackCurrentHostContext (line 284) | void
type internal (line 306) | namespace internal
function initialiseCoreContext (line 309) | void
function initialiseStaticContextData (line 339) | void
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_context.h
function namespace (line 6) | namespace cafe::kernel
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_exception.cpp
type cafe::kernel (line 26) | namespace cafe::kernel
type StaticExceptionData (line 31) | struct StaticExceptionData
function setUserModeExceptionHandler (line 49) | bool
type internal (line 61) | namespace internal
function dispatchException (line 68) | inline void
function exceptionContextFiberEntry (line 81) | static void
function handleCpuInterrupt (line 110) | static void
type UnhandledExceptionData (line 146) | struct UnhandledExceptionData
function unhandledExceptionFiberEntryPoint (line 154) | static void
function defaultExceptionHandler (line 230) | static void
function handleCpuSegfault (line 242) | static void
function handleDebugBreakException (line 258) | static void
function handleIciException (line 269) | static void
function handleSystemResetException (line 279) | static void
function initialiseExceptionContext (line 286) | void
function initialiseExceptionHandlers (line 299) | void
function initialiseStaticExceptionData (line 325) | void
function setKernelExceptionHandler (line 331) | void
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_exception.h
function namespace (line 6) | namespace cafe::kernel
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_heap.cpp
type cafe::kernel::internal (line 8) | namespace cafe::kernel::internal
function initialiseStaticDataHeap (line 20) | void
function initialiseWorkAreaHeap (line 30) | bool
function allocStaticData (line 43) | virt_ptr<void>
function allocFromWorkArea (line 50) | virt_ptr<void>
function freeToWorkArea (line 62) | void
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_heap.h
function namespace (line 4) | namespace cafe::kernel::internal
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_info.cpp
type cafe::kernel (line 6) | namespace cafe::kernel
function getType0Info (line 9) | void
function getType6Info (line 78) | void
function getArgStr (line 89) | void
function getInfo (line 105) | void
function SystemMode (line 126) | SystemMode
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_info.h
type class (line 9) | enum class
function SystemMode (line 16) | enum class SystemMode : int32_t
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_interrupts.cpp
type cafe::kernel (line 7) | namespace cafe::kernel
type InterruptData (line 10) | struct InterruptData
function UserInterruptHandlerFn (line 20) | UserInterruptHandlerFn
function clearAndEnableInterrupt (line 37) | void
function disableInterrupt (line 42) | void
type internal (line 47) | namespace internal
function dispatchExternalInterrupt (line 50) | void
function setKernelInterruptHandler (line 63) | void
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_interrupts.h
function namespace (line 5) | namespace cafe::kernel
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_ipc.cpp
type cafe::kernel::internal (line 16) | namespace cafe::kernel::internal
type StaticIpcData (line 22) | struct StaticIpcData
type SynchronousCallback (line 31) | struct SynchronousCallback
function ipcInitialiseHeap (line 44) | static void
function ipcAllocBuffer (line 54) | virt_ptr<void>
function ipcFreeBuffer (line 71) | void
function synchronousCallback (line 78) | static void
function waitSynchronousReply (line 91) | static ios::Error
function IOS_OpenAsync (line 116) | ios::Error
function IOS_Open (line 152) | ios::Error
function IOS_CloseAsync (line 172) | ios::Error
function IOS_Close (line 203) | ios::Error
function IOS_IoctlAsync (line 221) | ios::Error
function IOS_Ioctl (line 273) | ios::Error
function initialiseIpc (line 299) | void
function initialiseStaticIpcData (line 323) | void
type cafe::kernel (line 331) | namespace cafe::kernel
function getMcpHandle (line 334) | ios::Handle
function getPpcAppHandle (line 340) | ios::Handle
function getCblHandle (line 346) | ios::Handle
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_ipc.h
function namespace (line 7) | namespace cafe::kernel
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_ipckdriver.cpp
type cafe::kernel (line 15) | namespace cafe::kernel
type StaticIpckDriverData (line 18) | struct StaticIpckDriverData
type internal (line 34) | namespace internal
function ipckDriverGetInstance (line 213) | virt_ptr<IPCKDriver>
function ipckDriverAllocateRequestBlock (line 220) | ios::Error
function ipckDriverFreeRequestBlock (line 273) | void
function ipckDriverSubmitRequest (line 288) | ios::Error
function allocateUserRequestBlock (line 314) | static ios::Error
function processLoaderOrUserRequest (line 340) | static ios::Error
function submitUserOrLoaderRequest (line 411) | static ios::Error
function submitUserRequest (line 461) | ios::Error
function submitLoaderRequest (line 469) | ios::Error
function defensiveProcessIncomingMessagePointer (line 477) | static ios::Error
function processReply (line 504) | static void
function dispatchUserRepliesCallback (line 545) | static void
function ipckDriverHandleInterrupt (line 583) | static void
function initialiseRegisters (line 608) | static ios::Error
function ipckDriverInit (line 639) | ios::Error
function initialiseResourceBuffers (line 679) | static ios::Error
function ipckDriverOpen (line 699) | ios::Error
function initialiseStaticIpckDriverData (line 735) | void
function ipckDriverUserOpen (line 51) | ios::Error
function ipckDriverUserClose (line 82) | ios::Error
function ipckDriverUserSubmitRequest (line 98) | ios::Error
function ipckDriverLoaderOpen (line 113) | ios::Error
function ipckDriverLoaderClose (line 138) | ios::Error
function ipckDriverLoaderSubmitRequest (line 154) | ios::Error
function ipckDriverLoaderPollCompletion (line 169) | virt_ptr<IPCKDriverRequest>
function ipckDriverIosSubmitReply (line 197) | void
type internal (line 210) | namespace internal
function ipckDriverGetInstance (line 213) | virt_ptr<IPCKDriver>
function ipckDriverAllocateRequestBlock (line 220) | ios::Error
function ipckDriverFreeRequestBlock (line 273) | void
function ipckDriverSubmitRequest (line 288) | ios::Error
function allocateUserRequestBlock (line 314) | static ios::Error
function processLoaderOrUserRequest (line 340) | static ios::Error
function submitUserOrLoaderRequest (line 411) | static ios::Error
function submitUserRequest (line 461) | ios::Error
function submitLoaderRequest (line 469) | ios::Error
function defensiveProcessIncomingMessagePointer (line 477) | static ios::Error
function processReply (line 504) | static void
function dispatchUserRepliesCallback (line 545) | static void
function ipckDriverHandleInterrupt (line 583) | static void
function initialiseRegisters (line 608) | static ios::Error
function ipckDriverInit (line 639) | ios::Error
function initialiseResourceBuffers (line 679) | static ios::Error
function ipckDriverOpen (line 699) | ios::Error
function initialiseStaticIpckDriverData (line 735) | void
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_ipckdriver.h
function namespace (line 13) | namespace cafe::kernel
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_ipckdriverfifo.h
function namespace (line 6) | namespace cafe::kernel::internal
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_loader.cpp
type cafe::kernel (line 13) | namespace cafe::kernel
type internal (line 16) | namespace internal
function getLoaderContext (line 133) | static std::pair<virt_ptr<Context>, virt_addr>
function loaderEntry (line 160) | static int32_t
function KiRPLLoaderSetup (line 177) | static void
function KiRPLStartup (line 219) | void
function findClosestSymbol (line 251) | int32_t
function findClosestSymbol (line 383) | int32_t
function loaderLink (line 22) | int32_t
function loaderPrep (line 37) | int32_t
function loaderPurge (line 46) | int32_t
function loaderSetup (line 55) | int32_t
function loaderQuery (line 66) | int32_t
function loaderUserGainControl (line 77) | int32_t
function findClosestSymbol (line 85) | int32_t
type internal (line 130) | namespace internal
function getLoaderContext (line 133) | static std::pair<virt_ptr<Context>, virt_addr>
function loaderEntry (line 160) | static int32_t
function KiRPLLoaderSetup (line 177) | static void
function KiRPLStartup (line 219) | void
function findClosestSymbol (line 251) | int32_t
function findClosestSymbol (line 383) | int32_t
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_loader.h
function namespace (line 6) | namespace cafe::kernel
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_lock.cpp
type cafe::kernel::internal (line 5) | namespace cafe::kernel::internal
function spinLockAcquire (line 11) | bool
function spinLockRelease (line 28) | bool
function kernelLockAcquire (line 37) | void
function kernelLockRelease (line 43) | void
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_lock.h
function namespace (line 5) | namespace cafe::kernel::internal
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_mcp.cpp
type cafe::kernel::internal (line 10) | namespace cafe::kernel::internal
function mcpGetFileLength (line 15) | ios::Error
function mcpLoadFile (line 44) | ios::Error
function mcpPrepareTitle (line 73) | ios::Error
function mcpSwitchTitle (line 103) | ios::Error
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_mcp.h
function namespace (line 10) | namespace cafe::kernel::internal
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_mmu.cpp
type cafe::kernel (line 12) | namespace cafe::kernel
type internal (line 28) | namespace internal
function setAddressSpaceView (line 438) | static void
function AddressSpace (line 454) | AddressSpace *
function setActiveAddressSpace (line 460) | void
function initialiseAddressSpace (line 466) | bool
function loadMapping (line 558) | bool
function unloadMapping (line 587) | bool
function loadAddressSpace (line 616) | bool
type MemoryMapFlags (line 34) | enum MemoryMapFlags
function MemoryMap (line 133) | MemoryMap &
function getForegroundBucket (line 139) | std::pair<virt_addr, uint32_t>
function enableOverlayArena (line 146) | std::pair<virt_addr, uint32_t>
function disableOverlayArena (line 169) | void
function getAvailablePhysicalAddressRange (line 187) | std::pair<phys_addr, uint32_t>
function getDataPhysicalAddressRange (line 195) | std::pair<phys_addr, uint32_t>
function getVirtualMapAddressRange (line 203) | std::pair<virt_addr, uint32_t>
function getCodeGenVirtualRange (line 211) | std::pair<virt_addr, uint32_t>
function checkInVirtualMapRange (line 219) | static bool
function virt_addr (line 229) | virt_addr
function freeVirtualAddress (line 266) | bool
function QueryMemoryResult (line 278) | QueryMemoryResult
function mapMemory (line 300) | bool
function unmapMemory (line 326) | bool
function validateAddressRange (line 338) | bool
function phys_addr (line 355) | phys_addr
function virt_addr (line 389) | virt_addr
function virt_addr (line 410) | virt_addr
type internal (line 431) | namespace internal
function setAddressSpaceView (line 438) | static void
function AddressSpace (line 454) | AddressSpace *
function setActiveAddressSpace (line 460) | void
function initialiseAddressSpace (line 466) | bool
function loadMapping (line 558) | bool
function unloadMapping (line 587) | bool
function loadAddressSpace (line 616) | bool
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_mmu.h
type MemoryMap (line 14) | struct MemoryMap
type class (line 23) | enum class
type class (line 64) | enum class
function QueryMemoryResult (line 70) | enum class QueryMemoryResult
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_process.cpp
type cafe::kernel::internal (line 17) | namespace cafe::kernel::internal
type CoreProcessData (line 25) | struct CoreProcessData
type RamPartitionConfig (line 38) | struct RamPartitionConfig
function allocateRamPartition (line 66) | static void
function RamPartitionData (line 105) | RamPartitionData *
function RamPartitionId (line 111) | RamPartitionId
function KernelProcessId (line 122) | KernelProcessId
function UniqueProcessId (line 133) | UniqueProcessId
function getCurrentTitleId (line 139) | ios::mcp::MCPTitleId
function RamPartitionData (line 145) | RamPartitionData *
function setCoreToProcessId (line 151) | void
function initialisePerCoreStartInfo (line 172) | static void
function loadGameProcess (line 227) | void
function finishInitAndPreload (line 357) | void
function initialiseCoreProcess (line 377) | void
function initialiseProcessData (line 389) | void
type cafe::kernel (line 406) | namespace cafe::kernel
function exitProcess (line 409) | void
function getProcessExitCode (line 417) | int
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_process.h
function namespace (line 11) | namespace cafe::loader
function namespace (line 16) | namespace cafe::kernel
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_processid.cpp
type cafe::kernel (line 3) | namespace cafe::kernel
function RamPartitionId (line 6) | RamPartitionId
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_processid.h
type class (line 8) | enum class
type class (line 29) | enum class
type class (line 41) | enum class
function DebugLevel (line 48) | enum class DebugLevel : uint32_t
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_shareddata.cpp
type cafe::kernel (line 11) | namespace cafe::kernel
function loadSharedData (line 19) | static uint32_t
function loadResourcesFile (line 48) | static uint32_t
function loadShared (line 73) | void
function SharedArea (line 111) | SharedArea
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_shareddata.h
function namespace (line 4) | namespace cafe::kernel
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_userdrivers.cpp
type cafe::kernel (line 11) | namespace cafe::kernel
type UserDriver (line 14) | struct UserDriver
type StaticUserDriversData (line 22) | struct StaticUserDriversData
function registerUserDriver (line 33) | int32_t
function deregisterUserDriver (line 81) | int32_t
type internal (line 119) | namespace internal
function initialiseStaticUserDriversData (line 122) | void
function registerRootUserDrivers (line 137) | void
FILE: src/libdecaf/src/cafe/kernel/cafe_kernel_userdrivers.h
function namespace (line 6) | namespace cafe::kernel
FILE: src/libdecaf/src/cafe/libraries/avm/avm.cpp
type cafe::avm (line 3) | namespace cafe::avm
function rpl_entry (line 6) | static int32_t
FILE: src/libdecaf/src/cafe/libraries/avm/avm.h
function namespace (line 4) | namespace cafe::avm
FILE: src/libdecaf/src/cafe/libraries/cafe_hle.cpp
type cafe::hle (line 78) | namespace cafe::hle
function registerLibrary (line 86) | static void
function initialiseLibraries (line 93) | void
function Library (line 180) | Library *
function Library (line 186) | Library *
function relocateLibrary (line 198) | void
function applyTraceFilters (line 210) | void
function setTraceEnabled (line 274) | void
FILE: src/libdecaf/src/cafe/libraries/cafe_hle.h
function namespace (line 9) | namespace cafe::hle
FILE: src/libdecaf/src/cafe/libraries/cafe_hle_library.cpp
type cafe::hle (line 19) | namespace cafe::hle
function virt_addr (line 27) | virt_addr
function setUnimplementedFunctionStubMemory (line 76) | void
function addSectionString (line 188) | static uint32_t
function generateTypeDescriptors (line 207) | static void
type Section (line 354) | struct Section
FILE: src/libdecaf/src/cafe/libraries/cafe_hle_library.h
function LibraryId (line 22) | enum class LibraryId
function registerLibraryDependency (line 194) | void
function registerSymbol (line 200) | void
function registerTypeInfo (line 210) | void
function setEntryPointSymbolName (line 216) | void
FILE: src/libdecaf/src/cafe/libraries/cafe_hle_library_data.h
function namespace (line 5) | namespace cafe::hle
FILE: src/libdecaf/src/cafe/libraries/cafe_hle_library_function.h
function namespace (line 8) | namespace cafe::hle
FILE: src/libdecaf/src/cafe/libraries/cafe_hle_library_register.h
function namespace (line 8) | namespace cafe::coreinit
function namespace (line 23) | namespace cafe::hle
FILE: src/libdecaf/src/cafe/libraries/cafe_hle_library_symbol.h
function namespace (line 5) | namespace cafe::hle
FILE: src/libdecaf/src/cafe/libraries/cafe_hle_stub.cpp
type cafe::hle (line 5) | namespace cafe::hle
function warnStubInvoked (line 8) | void
FILE: src/libdecaf/src/cafe/libraries/cafe_hle_stub.h
function namespace (line 18) | namespace cafe::hle
FILE: src/libdecaf/src/cafe/libraries/camera/camera.cpp
type cafe::camera (line 3) | namespace cafe::camera
function rpl_entry (line 6) | static int32_t
FILE: src/libdecaf/src/cafe/libraries/camera/camera.h
function namespace (line 4) | namespace cafe::camera
FILE: src/libdecaf/src/cafe/libraries/camera/camera_cam.cpp
type cafe::camera (line 5) | namespace cafe::camera
function CAMHandle (line 8) | CAMHandle
function CAMExit (line 18) | void
function CAMOpen (line 24) | int32_t
function CAMClose (line 31) | int32_t
function CAMGetMemReq (line 38) | int32_t
FILE: src/libdecaf/src/cafe/libraries/camera/camera_cam.h
function namespace (line 5) | namespace cafe::camera
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit.cpp
type cafe::coreinit (line 28) | namespace cafe::coreinit
function coreinit_entry (line 31) | static void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_alarm.cpp
type cafe::coreinit (line 21) | namespace cafe::coreinit
type StaticAlarmData (line 26) | struct StaticAlarmData
type PerCoreAlarmData (line 30) | struct PerCoreAlarmData
type internal (line 49) | namespace internal
function BOOL (line 436) | BOOL
function cancelAlarm (line 447) | bool
function updateCpuAlarmNoALock (line 456) | void
function handleAlarmInterrupt (line 480) | void
function initialiseAlarmThread (line 534) | void
function BOOL (line 64) | static BOOL
function BOOL (line 89) | BOOL
function OSCancelAlarms (line 118) | void
function OSCreateAlarm (line 151) | void
function OSCreateAlarmEx (line 161) | void
function OSGetAlarmUserData (line 181) | virt_ptr<void>
function OSInitAlarmQueue (line 191) | void
function OSInitAlarmQueueEx (line 201) | void
function BOOL (line 214) | BOOL
function BOOL (line 241) | BOOL
function OSSetAlarmTag (line 284) | void
function OSSetAlarmUserData (line 297) | void
function BOOL (line 313) | BOOL
function insertAlarm (line 344) | static void
function OSGetAlarmFromQueue (line 357) | int
function alarmCallbackThreadEntry (line 392) | static uint32_t
type internal (line 433) | namespace internal
function BOOL (line 436) | BOOL
function cancelAlarm (line 447) | bool
function updateCpuAlarmNoALock (line 456) | void
function handleAlarmInterrupt (line 480) | void
function initialiseAlarmThread (line 534) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_alarm.h
function namespace (line 9) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_appio.cpp
type cafe::coreinit (line 15) | namespace cafe::coreinit
type StaticAppIoData (line 21) | struct StaticAppIoData
type PerCoreData (line 23) | struct PerCoreData
function OSGetDefaultAppIOQueue (line 42) | virt_ptr<OSMessageQueue>
function appIoThreadEntry (line 48) | static uint32_t
type internal (line 102) | namespace internal
function initialiseAppIoThreads (line 105) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_appio.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_atomic.cpp
type cafe::coreinit (line 7) | namespace cafe::coreinit
function BOOL (line 10) | BOOL
function BOOL (line 18) | BOOL
function OSSwapAtomic (line 29) | uint32_t
function OSAddAtomic (line 36) | int32_t
function OSAndAtomic (line 43) | uint32_t
function OSOrAtomic (line 50) | uint32_t
function OSXorAtomic (line 57) | uint32_t
function BOOL (line 64) | BOOL
function BOOL (line 77) | BOOL
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_atomic.h
function namespace (line 5) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_atomic64.cpp
type cafe::coreinit (line 7) | namespace cafe::coreinit
function OSGetAtomic64 (line 12) | uint64_t
function OSSetAtomic64 (line 21) | uint64_t
function BOOL (line 32) | BOOL
function BOOL (line 49) | BOOL
function OSSwapAtomic64 (line 68) | uint64_t
function OSAddAtomic64 (line 79) | int64_t
function OSAndAtomic64 (line 89) | uint64_t
function OSOrAtomic64 (line 99) | uint64_t
function OSXorAtomic64 (line 109) | uint64_t
function BOOL (line 119) | BOOL
function BOOL (line 130) | BOOL
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_atomic64.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_bsp.cpp
type cafe::coreinit (line 8) | namespace cafe::coreinit
type BSPIpcBuffer (line 16) | struct BSPIpcBuffer
type StaticBspData (line 23) | struct StaticBspData
type internal (line 31) | namespace internal
function BSPError (line 82) | static BSPError
function BSPError (line 96) | BSPError
function BSPError (line 40) | BSPError
function BSPError (line 54) | BSPError
type internal (line 79) | namespace internal
function BSPError (line 82) | static BSPError
function BSPError (line 96) | BSPError
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_bsp.h
function namespace (line 6) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_cache.cpp
type cafe::coreinit (line 9) | namespace cafe::coreinit
function DCInvalidateRange (line 15) | void
function DCFlushRange (line 27) | void
function DCStoreRange (line 39) | void
function DCFlushRangeNoSync (line 51) | void
function DCStoreRangeNoSync (line 62) | void
function DCZeroRange (line 73) | void
function DCTouchRange (line 86) | void
function OSCoherencyBarrier (line 97) | void
function OSEnforceInorderIO (line 105) | void
function BOOL (line 116) | BOOL
function OSMemoryBarrier (line 138) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_cache.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_clipboard.cpp
type cafe::coreinit (line 9) | namespace cafe::coreinit
type ClipboardSaveData (line 14) | struct ClipboardSaveData
function BOOL (line 24) | BOOL
function BOOL (line 57) | BOOL
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_clipboard.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_codegen.cpp
type cafe::coreinit (line 6) | namespace cafe::coreinit
function OSGetCodegenVirtAddrRange (line 9) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_codegen.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_context.cpp
type cafe::coreinit (line 8) | namespace cafe::coreinit
type StaticContextData (line 11) | struct StaticContextData
function OSInitContext (line 18) | void
function OSSetCurrentContext (line 49) | void
function OSSetCurrentFPUContext (line 65) | void
function OSSetCurrentUserContext (line 70) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_context.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_core.cpp
type cafe::coreinit (line 5) | namespace cafe::coreinit
function OSGetCoreId (line 11) | uint32_t
function BOOL (line 21) | BOOL
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_core.h
function namespace (line 5) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_coroutine.cpp
type cafe::coreinit (line 6) | namespace cafe::coreinit
function OSInitCoroutine (line 9) | void
function OSLoadCoroutine (line 18) | uint32_t
function OSSaveCoroutine (line 44) | uint32_t
function OSSwitchCoroutine (line 69) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_coroutine.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_cosreport.cpp
type cafe::coreinit (line 15) | namespace cafe::coreinit
function handleReport (line 18) | static void
function COSVReport (line 40) | void
function COSError (line 51) | void
function COSInfo (line 61) | void
function COSVerbose (line 73) | void
function COSWarn (line 85) | void
type internal (line 97) | namespace internal
function COSVReport (line 100) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_cosreport.h
function namespace (line 11) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_device.cpp
type cafe::coreinit (line 5) | namespace cafe::coreinit
type StaticDeviceData (line 10) | struct StaticDeviceData
function OSReadRegister16 (line 18) | uint16_t
function OSReadRegister32Ex (line 30) | uint32_t
function OSWriteRegister16 (line 42) | void
function OSWriteRegister32Ex (line 53) | void
type internal (line 64) | namespace internal
function initialiseDeviceTable (line 67) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_device.h
function namespace (line 6) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_driver.cpp
type cafe::coreinit (line 22) | namespace cafe::coreinit
type StaticDriverData (line 25) | struct StaticDriverData
function OSDriver_Error (line 67) | OSDriver_Error
function OSDriver_Error (line 337) | OSDriver_Error
function OSDriver_Error (line 418) | OSDriver_Error
function OSDriver_Error (line 428) | OSDriver_Error
type internal (line 437) | namespace internal
function driverOnInit (line 440) | void
function driverOnDone (line 459) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_driver.h
function namespace (line 9) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_dynload.cpp
type cafe::coreinit (line 26) | namespace cafe::coreinit
type RPL_DATA (line 40) | struct RPL_DATA
type StaticDynLoadData (line 67) | struct StaticDynLoadData
type FatalErrorInfo (line 104) | struct FatalErrorInfo
type internal (line 122) | namespace internal
function OSDynLoad_Error (line 135) | static OSDynLoad_Error
function dynLoadHeapFree (line 158) | static void
function rplSysHeapAlloc (line 177) | static virt_ptr<void>
function rplSysHeapFree (line 197) | static void
function setFatalErrorInfo (line 215) | static void
function setFatalErrorInfo2 (line 237) | static void
function resetFatalErrorInfo (line 303) | static void
function reportFatalError (line 315) | static void
function runEntryPoints (line 344) | static int32_t
function OSDynLoad_Error (line 379) | static OSDynLoad_Error
function getNotifyCallbackCount (line 470) | static uint32_t
function unloadModule (line 485) | static void
function internalPurge (line 537) | static void
function release (line 644) | static void
function binarySearchExport (line 786) | static virt_ptr<loader::rpl::Export>
function findExports (line 817) | static void
function findTlsSection (line 838) | static bool
function setupPerm (line 876) | static int32_t
function OSDynLoad_Error (line 1015) | static OSDynLoad_Error
function resolveModuleName (line 1065) | static std::pair<virt_ptr<const char>, uint32_t>
function OSDynLoad_Error (line 1087) | static OSDynLoad_Error
function OSDynLoad_Error (line 1109) | static OSDynLoad_Error
function OSDynLoad_Error (line 1155) | static OSDynLoad_Error
function OSDynLoad_Error (line 1369) | static OSDynLoad_Error
function releaseImports (line 1553) | static void
function OSDynLoad_Error (line 1590) | static OSDynLoad_Error
function OSDynLoad_Error (line 1902) | static OSDynLoad_Error
function dynLoadTlsFree (line 2649) | void
function initCoreinitNotifyData (line 2665) | static void
function virt_addr (line 2713) | virt_addr
function OSDynLoad_Error (line 2915) | OSDynLoad_Error
function OSDynLoad_Error (line 2033) | OSDynLoad_Error
function OSDynLoad_DelNotifyCallback (line 2061) | void
function OSDynLoad_Error (line 2104) | OSDynLoad_Error
function OSDynLoad_Error (line 2126) | OSDynLoad_Error
function OSDynLoad_Error (line 2145) | OSDynLoad_Error
function OSDynLoad_Error (line 2167) | OSDynLoad_Error
function OSDynLoad_Error (line 2193) | OSDynLoad_Error
function OSDynLoad_Release (line 2206) | void
function OSDynLoad_Error (line 2216) | OSDynLoad_Error
function OSDynLoad_Error (line 2278) | OSDynLoad_Error
function OSDynLoad_Error (line 2351) | OSDynLoad_Error
function OSDynLoad_Error (line 2364) | OSDynLoad_Error
function OSDynLoad_Error (line 2374) | OSDynLoad_Error
function OSDynLoad_GetNumberOfRPLs (line 2441) | uint32_t
function OSDynLoad_GetRPLInfo (line 2451) | uint32_t
function OSDynLoad_Error (line 2467) | OSDynLoad_Error
function virt_addr (line 2481) | virt_addr
function tls_get_addr (line 2545) | virt_ptr<void>
type internal (line 2646) | namespace internal
function OSDynLoad_Error (line 135) | static OSDynLoad_Error
function dynLoadHeapFree (line 158) | static void
function rplSysHeapAlloc (line 177) | static virt_ptr<void>
function rplSysHeapFree (line 197) | static void
function setFatalErrorInfo (line 215) | static void
function setFatalErrorInfo2 (line 237) | static void
function resetFatalErrorInfo (line 303) | static void
function reportFatalError (line 315) | static void
function runEntryPoints (line 344) | static int32_t
function OSDynLoad_Error (line 379) | static OSDynLoad_Error
function getNotifyCallbackCount (line 470) | static uint32_t
function unloadModule (line 485) | static void
function internalPurge (line 537) | static void
function release (line 644) | static void
function binarySearchExport (line 786) | static virt_ptr<loader::rpl::Export>
function findExports (line 817) | static void
function findTlsSection (line 838) | static bool
function setupPerm (line 876) | static int32_t
function OSDynLoad_Error (line 1015) | static OSDynLoad_Error
function resolveModuleName (line 1065) | static std::pair<virt_ptr<const char>, uint32_t>
function OSDynLoad_Error (line 1087) | static OSDynLoad_Error
function OSDynLoad_Error (line 1109) | static OSDynLoad_Error
function OSDynLoad_Error (line 1155) | static OSDynLoad_Error
function OSDynLoad_Error (line 1369) | static OSDynLoad_Error
function releaseImports (line 1553) | static void
function OSDynLoad_Error (line 1590) | static OSDynLoad_Error
function OSDynLoad_Error (line 1902) | static OSDynLoad_Error
function dynLoadTlsFree (line 2649) | void
function initCoreinitNotifyData (line 2665) | static void
function virt_addr (line 2713) | virt_addr
function OSDynLoad_Error (line 2915) | OSDynLoad_Error
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_dynload.h
function namespace (line 6) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_event.cpp
type cafe::coreinit (line 9) | namespace cafe::coreinit
function OSInitEvent (line 19) | void
function OSInitEventEx (line 31) | void
function OSSignalEvent (line 59) | void
function OSSignalEventAll (line 140) | void
function OSResetEvent (line 191) | void
function OSWaitEvent (line 215) | void
type EventAlarmData (line 242) | struct EventAlarmData
function EventAlarmHandler (line 249) | static void
function BOOL (line 272) | BOOL
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_event.h
function namespace (line 8) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_exception.cpp
type cafe::coreinit (line 8) | namespace cafe::coreinit
type StaticExceptionData (line 11) | struct StaticExceptionData
function unkSyscall0x7A00 (line 22) | static void
function OSExceptionCallbackFn (line 29) | OSExceptionCallbackFn
function OSExceptionCallbackFn (line 36) | OSExceptionCallbackFn
type internal (line 63) | namespace internal
function OSExceptionCallbackFn (line 66) | OSExceptionCallbackFn
function setExceptionCallback (line 121) | void
function initialiseExceptionHandlers (line 232) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_exception.h
function namespace (line 6) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fastmutex.cpp
type cafe::coreinit (line 5) | namespace cafe::coreinit
function OSFastMutex_Init (line 15) | void
function fastMutexHardLock (line 29) | static void
function OSFastMutex_Lock (line 100) | void
function fastMutexHardUnlock (line 144) | static void
function OSFastMutex_Unlock (line 192) | void
function BOOL (line 255) | BOOL
function OSFastCond_Init (line 302) | void
function OSFastCond_Wait (line 319) | void
function OSFastCond_Signal (line 365) | void
type internal (line 371) | namespace internal
function unlockAllFastMutexNoLock (line 374) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fastmutex.h
function namespace (line 7) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fiber.cpp
type cafe::coreinit (line 7) | namespace cafe::coreinit
function OSSwitchFiber (line 13) | uint32_t
function OSSwitchFiberEx (line 38) | uint32_t
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fiber.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs.cpp
type cafe::coreinit (line 8) | namespace cafe::coreinit
type StaticFsData (line 11) | struct StaticFsData
function FSInit (line 27) | void
function FSShutdown (line 47) | void
function FSGetAsyncResult (line 56) | virt_ptr<FSAsyncResult>
function FSGetClientNum (line 66) | uint32_t
type internal (line 73) | namespace internal
function fsInitialised (line 79) | bool
function fsClientRegistered (line 89) | bool
function fsClientRegistered (line 99) | bool
function fsRegisterClient (line 125) | bool
function fsDeregisterClient (line 152) | bool
function FSStatus (line 188) | FSStatus
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs.h
function namespace (line 40) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_client.cpp
type cafe::coreinit (line 16) | namespace cafe::coreinit
function FSStatus (line 29) | FSStatus
function FSStatus (line 40) | FSStatus
function FSStatus (line 113) | FSStatus
function FSGetCurrentCmdBlock (line 172) | virt_ptr<FSCmdBlock>
function FSAStatus (line 195) | FSAStatus
function FSStatus (line 219) | FSStatus
function FSGetErrorCodeForViewer (line 244) | int32_t
function FSGetLastErrorCodeForViewer (line 271) | int32_t
function FSAStatus (line 281) | FSAStatus
function FSVolumeState (line 296) | FSVolumeState
type internal (line 308) | namespace internal
function fsClientGetBody (line 315) | virt_ptr<FSClientBody>
function fsClientHandleFatalError (line 329) | void
function FSStatus (line 347) | FSStatus
function FSStatus (line 364) | FSStatus
function fsClientSubmitCommand (line 444) | void
function fsClientHandleFsaAsyncCallback (line 466) | static void
function BOOL (line 499) | static BOOL
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_client.h
function namespace (line 13) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_cmd.cpp
type cafe::coreinit (line 13) | namespace cafe::coreinit
type internal (line 16) | namespace internal
function FSStatus (line 2309) | FSStatus
function FSStatus (line 2369) | static FSStatus
function FSStatus (line 2413) | FSStatus
function FSStatus (line 61) | FSStatus
function FSStatus (line 86) | FSStatus
function FSStatus (line 126) | FSStatus
function FSStatus (line 150) | FSStatus
function FSStatus (line 238) | FSStatus
function FSStatus (line 261) | FSStatus
function FSStatus (line 325) | FSStatus
function FSStatus (line 347) | FSStatus
function FSStatus (line 387) | FSStatus
function FSStatus (line 412) | FSStatus
function FSStatus (line 460) | FSStatus
function FSStatus (line 482) | FSStatus
function FSStatus (line 517) | FSStatus
function FSStatus (line 539) | FSStatus
function FSStatus (line 574) | FSStatus
function FSStatus (line 596) | FSStatus
function FSStatus (line 631) | FSStatus
function FSStatus (line 653) | FSStatus
function FSStatus (line 693) | FSStatus
function FSStatus (line 717) | FSStatus
function FSStatus (line 768) | FSStatus
function FSStatus (line 792) | FSStatus
function FSStatus (line 816) | FSStatus
function FSStatus (line 840) | FSStatus
function FSStatus (line 861) | FSStatus
function FSStatus (line 885) | FSStatus
function FSStatus (line 921) | FSStatus
function FSStatus (line 946) | FSStatus
function FSStatus (line 990) | FSStatus
function FSStatus (line 1014) | FSStatus
function FSStatus (line 1059) | FSStatus
function FSStatus (line 1083) | FSStatus
function FSStatus (line 1103) | FSStatus
function FSStatus (line 1127) | FSStatus
function FSStatus (line 1171) | FSStatus
function FSStatus (line 1193) | FSStatus
function FSStatus (line 1228) | FSStatus
function FSStatus (line 1251) | FSStatus
function FSStatus (line 1293) | FSStatus
function FSStatus (line 1320) | FSStatus
function FSStatus (line 1408) | FSStatus
function FSStatus (line 1432) | FSStatus
function FSStatus (line 1488) | FSStatus
function FSStatus (line 1508) | FSStatus
function FSStatus (line 1538) | FSStatus
function FSStatus (line 1567) | FSStatus
function FSStatus (line 1624) | FSStatus
function FSStatus (line 1648) | FSStatus
function FSStatus (line 1691) | FSStatus
function FSStatus (line 1718) | FSStatus
function FSStatus (line 1748) | FSStatus
function FSStatus (line 1783) | FSStatus
function FSStatus (line 1808) | FSStatus
function FSStatus (line 1830) | FSStatus
function FSStatus (line 1873) | FSStatus
function FSStatus (line 1897) | FSStatus
function FSStatus (line 1944) | FSStatus
function FSStatus (line 1966) | FSStatus
function FSStatus (line 2001) | FSStatus
function FSStatus (line 2025) | FSStatus
function FSStatus (line 2062) | FSStatus
function FSStatus (line 2084) | FSStatus
function FSStatus (line 2119) | FSStatus
function FSStatus (line 2141) | FSStatus
function FSStatus (line 2195) | FSStatus
function FSStatus (line 2222) | FSStatus
function FSStatus (line 2252) | FSStatus
function FSStatus (line 2287) | FSStatus
type internal (line 2306) | namespace internal
function FSStatus (line 2309) | FSStatus
function FSStatus (line 2369) | static FSStatus
function FSStatus (line 2413) | FSStatus
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_cmd.h
function namespace (line 5) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_cmdblock.cpp
type cafe::coreinit (line 18) | namespace cafe::coreinit
type internal (line 21) | namespace internal
function fsCmdBlockGetBody (line 153) | virt_ptr<FSCmdBlockBody>
function FSStatus (line 172) | FSStatus
function fsCmdBlockPrepareSync (line 207) | void
function fsCmdBlockRequeue (line 224) | void
function fsCmdBlockSetResult (line 262) | void
function fsCmdBlockReplyResult (line 280) | void
function fsCmdBlockHandleResult (line 309) | void
function fsCmdBlockFinishCmd (line 452) | void
function fsCmdBlockFinishMountCmd (line 629) | void
function fsCmdBlockFinishReadCmd (line 648) | void
function fsCmdBlockFinishWriteCmd (line 706) | void
function fsCmdBlockFinishGetMountSourceNextOpenCmd (line 757) | void
function fsCmdBlockFinishGetMountSourceNextReadCmd (line 784) | void
function fsCmdBlockFinishGetMountSourceNextCloseCmd (line 857) | void
function FSInitCmdBlock (line 37) | void
function FSStatus (line 58) | FSStatus
function FSStatus (line 79) | FSStatus
function FSGetFSMessage (line 109) | virt_ptr<FSMessage>
function FSGetUserData (line 127) | virt_ptr<void>
function FSSetUserData (line 138) | void
type internal (line 147) | namespace internal
function fsCmdBlockGetBody (line 153) | virt_ptr<FSCmdBlockBody>
function FSStatus (line 172) | FSStatus
function fsCmdBlockPrepareSync (line 207) | void
function fsCmdBlockRequeue (line 224) | void
function fsCmdBlockSetResult (line 262) | void
function fsCmdBlockReplyResult (line 280) | void
function fsCmdBlockHandleResult (line 309) | void
function fsCmdBlockFinishCmd (line 452) | void
function fsCmdBlockFinishMountCmd (line 629) | void
function fsCmdBlockFinishReadCmd (line 648) | void
function fsCmdBlockFinishWriteCmd (line 706) | void
function fsCmdBlockFinishGetMountSourceNextOpenCmd (line 757) | void
function fsCmdBlockFinishGetMountSourceNextReadCmd (line 784) | void
function fsCmdBlockFinishGetMountSourceNextCloseCmd (line 857) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_cmdblock.h
function namespace (line 10) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_cmdqueue.cpp
type cafe::coreinit (line 9) | namespace cafe::coreinit
type internal (line 12) | namespace internal
type FSCmdSortFuncLT (line 15) | struct FSCmdSortFuncLT
type FSCmdSortFuncLE (line 24) | struct FSCmdSortFuncLE
function fsCmdQueueCreate (line 45) | bool
function fsCmdQueueDestroy (line 67) | void
function fsCmdQueueCancelAll (line 77) | void
function fsCmdQueueSuspend (line 95) | void
function fsCmdQueueResume (line 107) | void
function fsCmdQueueEnqueue (line 117) | void
function fsCmdQueuePushFront (line 133) | void
function fsCmdQueuePopFront (line 151) | virt_ptr<FSCmdBlockBody>
function fsCmdQueueBeginCmd (line 169) | bool
function fsCmdQueueFinishCmd (line 192) | void
function fsCmdQueueProcessCmd (line 211) | bool
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_cmdqueue.h
function namespace (line 7) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_driver.cpp
type cafe::coreinit (line 5) | namespace cafe::coreinit
type StaticFsDriverData (line 8) | struct StaticFsDriverData
type internal (line 24) | namespace internal
function fsDriverGetName (line 27) | static virt_ptr<const char>
function fsDriverOnInit (line 33) | void
function fsDriverOnAcquiredForeground (line 38) | void
function fsDriverOnReleasedForeground (line 43) | void
function fsDriverOnDone (line 48) | void
function fsDriverDone (line 54) | bool
function initialiseFsDriver (line 60) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_driver.h
function namespace (line 3) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_statemachine.cpp
type cafe::coreinit (line 12) | namespace cafe::coreinit
function FSGetStateChangeInfo (line 21) | virt_ptr<FSStateChangeInfo>
function FSSetStateChangeNotification (line 31) | void
type internal (line 54) | namespace internal
function fsmInit (line 101) | void
function fsmSetState (line 119) | void
function fsmEnterState (line 139) | void
function fsmNotifyStateChange (line 176) | void
function fsmStartAlarm (line 194) | void
function fsmAlarmHandler (line 211) | void
function FSVolumeState (line 239) | FSVolumeState
function FSVolumeState (line 275) | FSVolumeState
function FSVolumeState (line 297) | FSVolumeState
function FSVolumeState (line 343) | FSVolumeState
function FSVolumeState (line 401) | FSVolumeState
function FSVolumeState (line 455) | FSVolumeState
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fs_statemachine.h
function namespace (line 8) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fsa.cpp
type cafe::coreinit (line 9) | namespace cafe::coreinit
type StaticFsaData (line 12) | struct StaticFsaData
function FSAStatus (line 33) | FSAStatus
function FSAStatus (line 81) | FSAStatus
function FSAStatus (line 91) | FSAStatus
function FSAStatus (line 158) | FSAStatus
function FSAGetAsyncResult (line 197) | virt_ptr<FSAAsyncResult>
function FSAShimCheckClientHandle (line 209) | virt_ptr<FSAClient>
function FSAStatus (line 236) | FSAStatus
function FSAShimFreeBuffer (line 262) | void
type internal (line 271) | namespace internal
function fsaAsyncResultInit (line 278) | void
function FSStatus (line 295) | FSStatus
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fsa.h
function namespace (line 11) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fsa_cmd.cpp
type cafe::coreinit (line 11) | namespace cafe::coreinit
type internal (line 14) | namespace internal
function FSAStatus (line 318) | FSAStatus
function FSAStatus (line 25) | FSAStatus
function FSAStatus (line 51) | FSAStatus
function FSAStatus (line 77) | FSAStatus
function FSAStatus (line 88) | FSAStatus
function FSAStatus (line 119) | FSAStatus
function FSAStatus (line 147) | FSAStatus
function FSAStatus (line 181) | FSAStatus
function FSAStatus (line 217) | FSAStatus
function FSAStatus (line 253) | FSAStatus
function FSAStatus (line 279) | FSAStatus
type internal (line 315) | namespace internal
function FSAStatus (line 318) | FSAStatus
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fsa_cmd.h
function namespace (line 5) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fsa_shim.cpp
type cafe::coreinit (line 11) | namespace cafe::coreinit
function FSAStatus (line 17) | FSAStatus
type internal (line 58) | namespace internal
function IOSError (line 64) | IOSError
function IOSError (line 74) | IOSError
function FSAStatus (line 84) | FSAStatus
function FSAStatus (line 120) | FSAStatus
function FSAStatus (line 162) | FSAStatus
function FSAStatus (line 191) | FSAStatus
function FSAStatus (line 221) | FSAStatus
function FSAStatus (line 255) | FSAStatus
function FSAStatus (line 278) | FSAStatus
function FSAStatus (line 301) | FSAStatus
function FSAStatus (line 324) | FSAStatus
function FSAStatus (line 353) | FSAStatus
function FSAStatus (line 372) | FSAStatus
function FSAStatus (line 408) | FSAStatus
function FSAStatus (line 431) | FSAStatus
function FSAStatus (line 454) | FSAStatus
function FSAStatus (line 486) | FSAStatus
function FSAStatus (line 538) | FSAStatus
function FSAStatus (line 571) | FSAStatus
function FSAStatus (line 619) | FSAStatus
function FSAStatus (line 642) | FSAStatus
function FSAStatus (line 687) | FSAStatus
function FSAStatus (line 717) | FSAStatus
function FSAStatus (line 756) | FSAStatus
function FSAStatus (line 779) | FSAStatus
function FSAStatus (line 804) | FSAStatus
function FSAStatus (line 827) | FSAStatus
function FSAStatus (line 850) | FSAStatus
function FSAStatus (line 882) | FSAStatus
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_fsa_shim.h
function namespace (line 10) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_ghs.cpp
type cafe::coreinit (line 17) | namespace cafe::coreinit
type ghs_atexit (line 29) | struct ghs_atexit
function BITFIELD_END (line 43) | BITFIELD_END
type StaticGhsData (line 58) | struct StaticGhsData
function ghsLock (line 105) | void
function ghsUnlock (line 115) | void
function ghs_at_exit (line 125) | void
function ghs_at_exit_cleanup (line 138) | void
function ghs_PPCExit (line 150) | void
function ghs_Exit (line 161) | void
function ghs_exit (line 171) | void
function gh_errno_ptr (line 194) | virt_ptr<int32_t>
function gh_get_errno (line 209) | int32_t
function gh_set_errno (line 219) | void
function ghs_flock_create (line 229) | void
function ghs_flock_destroy (line 258) | void
function ghs_flock_file (line 269) | void
function ghs_flock_ptr (line 290) | virt_ptr<uint32_t>
function ghs_ftrylock_file (line 305) | int32_t
function gh_iob_init (line 319) | void
function gh_lock_init (line 354) | void
function ghs_funlock_file (line 369) | void
function ghs_mtx_init (line 379) | void
function ghs_mtx_dst (line 391) | void
function ghs_mtx_lock (line 401) | void
function ghs_mtx_unlock (line 411) | void
function get_eh_globals (line 421) | virt_ptr<void>
function get_eh_init_block (line 431) | virt_ptr<void>
function get_eh_mem_manage (line 441) | virt_ptr<void>
function get_eh_store_globals (line 451) | virt_ptr<void>
function get_eh_store_globals_tdeh (line 461) | virt_ptr<void>
type internal (line 468) | namespace internal
function initialiseGhs (line 471) | void
function ghsExceptionInit (line 479) | void
function ghsExceptionCleanup (line 489) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_ghs.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_handle.cpp
type cafe::coreinit (line 10) | namespace cafe::coreinit
type internal (line 16) | namespace internal
function OSHandleError (line 19) | static OSHandleError
function OSHandleError (line 37) | static OSHandleError
function OSHandleError (line 130) | static OSHandleError
function OSHandleError (line 172) | static OSHandleError
function allocSubTable (line 227) | static virt_ptr<HandleSubTable>
function freeSubTable (line 235) | static void
function OSHandleError (line 253) | OSHandleError
function OSHandleError (line 294) | OSHandleError
function OSHandleError (line 326) | OSHandleError
function OSHandleError (line 354) | OSHandleError
function OSHandleError (line 390) | OSHandleError
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_handle.h
function namespace (line 6) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_im.cpp
type cafe::coreinit (line 9) | namespace cafe::coreinit
type StaticImData (line 12) | struct StaticImData
type internal (line 22) | namespace internal
function imAcquireItbMutex (line 25) | static void
function imReleaseItbMutex (line 31) | static void
function imCopyData (line 37) | static void
function imIosAsyncCallback (line 47) | static void
function IMError (line 62) | static IMError
function initialiseIm (line 607) | void
function IMError (line 95) | IMError
function IMError (line 103) | IMError
function IMError (line 110) | IMError
function IMError (line 134) | IMError
function IMError (line 163) | IMError
function IMError (line 231) | IMError
function IMError (line 260) | IMError
function IMError (line 285) | IMError
function IMError (line 310) | IMError
function IMError (line 339) | IMError
function IMError (line 364) | IMError
function IMError (line 388) | IMError
function IMError (line 412) | IMError
function IMError (line 437) | IMError
function IMError (line 444) | IMError
function IMError (line 456) | IMError
function IMError (line 475) | IMError
function IMError (line 508) | IMError
function IMError (line 515) | IMError
function IMError (line 523) | IMError
function IMError (line 530) | IMError
function IMError (line 537) | IMError
function IMError (line 544) | IMError
function IMError (line 551) | IMError
function IMError (line 558) | IMError
function IMError (line 565) | IMError
function IMError (line 572) | IMError
function IMError (line 579) | IMError
function IMError (line 586) | IMError
type internal (line 604) | namespace internal
function imAcquireItbMutex (line 25) | static void
function imReleaseItbMutex (line 31) | static void
function imCopyData (line 37) | static void
function imIosAsyncCallback (line 47) | static void
function IMError (line 62) | static IMError
function initialiseIm (line 607) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_im.h
function namespace (line 7) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_internal_idlock.cpp
type cafe::coreinit::internal (line 4) | namespace cafe::coreinit::internal
function getCoreLockId (line 7) | static uint32_t
function acquireIdLock (line 20) | bool
function acquireIdLock (line 36) | bool
function acquireIdLockWithCoreId (line 44) | bool
function releaseIdLock (line 50) | bool
function releaseIdLock (line 58) | bool
function releaseIdLockWithCoreId (line 66) | bool
function isHoldingIdLock (line 72) | bool
function isHoldingIdLock (line 79) | bool
function isHoldingIdLockWithCoreId (line 87) | bool
function isLockHeldBySomeone (line 93) | bool
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_internal_idlock.h
function namespace (line 5) | namespace cafe::coreinit::internal
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_internal_queue.h
function namespace (line 5) | namespace cafe::coreinit::internal
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_interrupts.cpp
type cafe::coreinit (line 12) | namespace cafe::coreinit
type StaticInterruptsData (line 15) | struct StaticInterruptsData
function BOOL (line 29) | BOOL
function BOOL (line 41) | BOOL
function BOOL (line 56) | BOOL
function BOOL (line 72) | BOOL
function userInterruptHandler (line 79) | static void
function OSUserInterruptHandler (line 95) | OSUserInterruptHandler
function OSClearAndEnableInterrupt (line 112) | void
function OSDisableInterrupt (line 119) | void
type internal (line 126) | namespace internal
function userModeIciCallback (line 129) | static void
function initialiseIci (line 138) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_interrupts.h
function namespace (line 8) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_ios.cpp
type cafe::coreinit (line 6) | namespace cafe::coreinit
type internal (line 9) | namespace internal
function IOSError (line 555) | IOSError
function IOSError (line 587) | IOSError
function IOSError (line 618) | IOSError
function IOSError (line 44) | IOSError
function IOSError (line 109) | IOSError
function IOSError (line 169) | IOSError
function IOSError (line 224) | IOSError
function IOSError (line 274) | IOSError
function IOSError (line 346) | IOSError
function IOSError (line 413) | IOSError
function IOSError (line 483) | IOSError
type internal (line 542) | namespace internal
function IOSError (line 555) | IOSError
function IOSError (line 587) | IOSError
function IOSError (line 618) | IOSError
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_ios.h
function namespace (line 7) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_ipcbufpool.cpp
type cafe::coreinit (line 8) | namespace cafe::coreinit
type internal (line 13) | namespace internal
function ipcBufPoolFifoInit (line 173) | void
function IOSError (line 189) | IOSError
function IOSError (line 212) | IOSError
function ipcBufPoolGetMessageIndex (line 237) | int32_t
function IPCBufPoolCreate (line 39) | virt_ptr<IPCBufPool>
function IPCBufPoolAllocate (line 98) | virt_ptr<void>
function IOSError (line 121) | IOSError
function IOSError (line 150) | IOSError
type internal (line 167) | namespace internal
function ipcBufPoolFifoInit (line 173) | void
function IOSError (line 189) | IOSError
function IOSError (line 212) | IOSError
function ipcBufPoolGetMessageIndex (line 237) | int32_t
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_ipcbufpool.h
function namespace (line 7) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_ipcdriver.cpp
type cafe::coreinit (line 13) | namespace cafe::coreinit
type StaticIpcDriverData (line 16) | struct StaticIpcDriverData
type PerCoreData (line 18) | struct PerCoreData
type internal (line 36) | namespace internal
function getIPCDriver (line 159) | virt_ptr<IPCDriver>
function ipcDriverFifoInit (line 171) | void
function IOSError (line 191) | IOSError
function IOSError (line 225) | IOSError
function IOSError (line 256) | IOSError
function IOSError (line 314) | IOSError
function IOSError (line 335) | IOSError
function IOSError (line 356) | IOSError
function ipcDriverProcessReplies (line 371) | void
function ipcDriverThreadEntry (line 409) | static uint32_t
function IPCDriverInit (line 49) | void
function IOSError (line 93) | IOSError
function IOSError (line 143) | IOSError
type internal (line 152) | namespace internal
function getIPCDriver (line 159) | virt_ptr<IPCDriver>
function ipcDriverFifoInit (line 171) | void
function IOSError (line 191) | IOSError
function IOSError (line 225) | IOSError
function IOSError (line 256) | IOSError
function IOSError (line 314) | IOSError
function IOSError (line 335) | IOSError
function IOSError (line 356) | IOSError
function ipcDriverProcessReplies (line 371) | void
function ipcDriverThreadEntry (line 409) | static uint32_t
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_ipcdriver.h
function namespace (line 10) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_lockedcache.cpp
type cafe::coreinit (line 12) | namespace cafe::coreinit
type LockedCacheState (line 18) | struct LockedCacheState
type StaticLockedCacheData (line 52) | struct StaticLockedCacheData
function getCoreLockedCacheState (line 60) | virt_ptr<LockedCacheState>
function BOOL (line 70) | BOOL
function LCAlloc (line 90) | virt_ptr<void>
function LCDealloc (line 139) | void
function LCGetMaxSize (line 169) | uint32_t
function LCGetAllocatableSize (line 179) | uint32_t
function LCGetUnallocated (line 207) | uint32_t
function BOOL (line 218) | BOOL
function BOOL (line 231) | BOOL
function LCDisableDMA (line 260) | void
function LCGetDMAQueueLength (line 275) | uint32_t
function LCLoadDMABlocks (line 287) | void
function LCStoreDMABlocks (line 310) | void
function LCWaitDMAQueue (line 332) | void
type internal (line 338) | namespace internal
function initialiseLockedCache (line 341) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_lockedcache.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_log.cpp
type cafe::coreinit (line 4) | namespace cafe::coreinit
function OSLogPrintf (line 7) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_log.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_mcp.cpp
type cafe::coreinit (line 9) | namespace cafe::coreinit
type StaticMcpData (line 29) | struct StaticMcpData
function IOSError (line 48) | IOSError
function MCP_Close (line 56) | void
function IOSError (line 62) | IOSError
function IOSError (line 95) | IOSError
function MCP_GetErrorCodeForViewer (line 127) | int32_t
function MCPError (line 147) | MCPError
function MCPError (line 191) | MCPError
function MCPError (line 217) | MCPError
function MCPError (line 247) | MCPError
function MCPError (line 270) | MCPError
function MCPError (line 286) | MCPError
function MCPError (line 316) | MCPError
function MCPError (line 342) | MCPError
function MCPError (line 372) | MCPError
function MCPError (line 411) | MCPError
function MCPError (line 436) | MCPError
function MCPError (line 461) | MCPError
type internal (line 486) | namespace internal
function mcpAllocateMessage (line 490) | virt_ptr<void>
function MCPError (line 511) | MCPError
function MCPError (line 526) | MCPError
function IOSError (line 565) | IOSError
function initialiseMcp (line 594) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_mcp.h
function namespace (line 8) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memallocator.cpp
type cafe::coreinit (line 15) | namespace cafe::coreinit
type StaticAllocatorData (line 18) | struct StaticAllocatorData
function MEMInitAllocatorForDefaultHeap (line 44) | void
function MEMInitAllocatorForBlockHeap (line 56) | void
function MEMInitAllocatorForExpHeap (line 70) | void
function MEMInitAllocatorForFrmHeap (line 84) | void
function MEMInitAllocatorForUnitHeap (line 98) | void
function MEMAllocFromAllocator (line 113) | virt_ptr<void>
function MEMFreeToAllocator (line 126) | void
function allocatorDefaultHeapAlloc (line 136) | static virt_ptr<void>
function allocatorDefaultHeapFree (line 143) | static void
function allocatorBlockHeapAlloc (line 150) | static virt_ptr<void>
function allocatorBlockHeapFree (line 159) | static void
function allocatorExpHeapAlloc (line 166) | static virt_ptr<void>
function allocatorExpHeapFree (line 175) | static void
function allocatorFrameHeapAlloc (line 182) | static virt_ptr<void>
function allocatorFrameHeapFree (line 191) | static void
function allocatorUnitHeapAlloc (line 204) | static virt_ptr<void>
function allocatorUnitHeapFree (line 211) | static void
type internal (line 218) | namespace internal
function initialiseAllocatorStaticData (line 221) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memallocator.h
function namespace (line 5) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memblockheap.cpp
type cafe::coreinit (line 10) | namespace cafe::coreinit
function MEMHeapHandle (line 16) | MEMHeapHandle
function MEMDestroyBlockHeap (line 64) | virt_ptr<void>
function MEMAddBlockHeapTracking (line 81) | int
function findBlockOwning (line 119) | static virt_ptr<MEMBlockHeapBlock>
function allocInsideBlock (line 163) | static bool
function MEMAllocFromBlockHeapAt (line 258) | virt_ptr<void>
function MEMAllocFromBlockHeapEx (line 299) | virt_ptr<void>
function MEMFreeToBlockHeap (line 360) | void
function MEMGetAllocatableSizeForBlockHeapEx (line 441) | uint32_t
function MEMGetTrackingLeftInBlockHeap (line 489) | uint32_t
function MEMGetTotalFreeSizeForBlockHeap (line 503) | uint32_t
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memblockheap.h
function namespace (line 7) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memdefaultheap.cpp
type cafe::coreinit (line 14) | namespace cafe::coreinit
type StaticDefaultHeapData (line 21) | struct StaticDefaultHeapData
function defaultAllocFromDefaultHeap (line 41) | static virt_ptr<void>
function defaultAllocFromDefaultHeapEx (line 49) | static virt_ptr<void>
function defaultFreeToDefaultHeap (line 58) | static void
function OSDynLoad_Error (line 65) | static OSDynLoad_Error
function defaultDynLoadFree (line 90) | static void
function CoreInitDefaultHeap (line 96) | void
function MEMAllocFromDefaultHeap (line 137) | virt_ptr<void>
function MEMAllocFromDefaultHeapEx (line 146) | virt_ptr<void>
function MEMFreeToDefaultHeap (line 157) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memdefaultheap.h
function namespace (line 5) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memexpheap.cpp
type cafe::coreinit (line 8) | namespace cafe::coreinit
function getBlockMemStart (line 17) | static virt_ptr<uint8_t>
function getBlockMemEnd (line 24) | static virt_ptr<uint8_t>
function getBlockDataStart (line 30) | static virt_ptr<uint8_t>
function getUsedMemBlock (line 36) | static virt_ptr<MEMExpHeapBlock>
function listContainsBlock (line 44) | static bool
function insertBlock (line 57) | static void
function removeBlock (line 84) | static void
function getAlignedBlockSize (line 106) | static uint32_t
function createUsedBlockFromFreeBlock (line 136) | static virt_ptr<MEMExpHeapBlock>
function releaseMemory (line 229) | static void
function MEMHeapHandle (line 299) | MEMHeapHandle
function MEMDestroyExpHeap (line 346) | virt_ptr<void>
function MEMAllocFromExpHeapEx (line 356) | virt_ptr<void>
function MEMFreeToExpHeap (line 450) | void
function MEMExpHeapMode (line 478) | MEMExpHeapMode
function MEMExpHeapMode (line 490) | MEMExpHeapMode
function MEMAdjustExpHeap (line 500) | uint32_t
function MEMResizeForMBlockExpHeap (line 533) | uint32_t
function MEMGetTotalFreeSizeForExpHeap (line 609) | uint32_t
function MEMGetAllocatableSizeForExpHeapEx (line 623) | uint32_t
function MEMSetGroupIDForExpHeap (line 658) | uint16_t
function MEMGetGroupIDForExpHeap (line 669) | uint16_t
function MEMGetSizeForMBlockExpHeap (line 677) | uint32_t
function MEMGetGroupIDForMBlockExpHeap (line 685) | uint16_t
function MEMExpHeapDirection (line 693) | MEMExpHeapDirection
type internal (line 701) | namespace internal
function dumpExpandedHeap (line 704) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memexpheap.h
function namespace (line 8) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memframeheap.cpp
type cafe::coreinit (line 6) | namespace cafe::coreinit
function MEMHeapHandle (line 9) | MEMHeapHandle
function MEMDestroyFrmHeap (line 45) | virt_ptr<void>
function MEMAllocFromFrmHeapEx (line 55) | virt_ptr<void>
function MEMFreeToFrmHeap (line 110) | void
function BOOL (line 145) | BOOL
function BOOL (line 171) | BOOL
function MEMAdjustFrmHeap (line 212) | uint32_t
function MEMResizeForMBlockFrmHeap (line 234) | uint32_t
function MEMGetAllocatableSizeForFrmHeapEx (line 288) | uint32_t
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memframeheap.h
function namespace (line 7) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memheap.cpp
type cafe::coreinit (line 15) | namespace cafe::coreinit
type StaticMemHeapData (line 18) | struct StaticMemHeapData
function findListContainingHeap (line 35) | static virt_ptr<MEMList>
function findListContainingBlock (line 60) | static virt_ptr<MEMList>
function findHeapContainingBlock (line 85) | static virt_ptr<MEMHeapHeader>
function MEMDumpHeap (line 102) | void
function MEMFindContainHeap (line 119) | virt_ptr<MEMHeapHeader>
function MEMBaseHeapType (line 129) | MEMBaseHeapType
function MEMHeapHandle (line 141) | MEMHeapHandle
function MEMHeapHandle (line 151) | MEMHeapHandle
function MEMHeapHandle (line 164) | MEMHeapHandle
function MEMGetFillValForHeap (line 180) | uint32_t
function MEMSetFillValForHeap (line 189) | void
type internal (line 198) | namespace internal
function registerHeap (line 201) | void
function unregisterHeap (line 245) | void
function initialiseMemHeap (line 257) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memheap.h
function namespace (line 9) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memlist.cpp
type cafe::coreinit (line 4) | namespace cafe::coreinit
function getLink (line 7) | static virt_ptr<MEMListLink>
function setFirstObject (line 14) | static void
function MEMInitList (line 26) | void
function MEMAppendListObject (line 36) | void
function MEMPrependListObject (line 53) | void
function MEMInsertListObject (line 70) | void
function MEMRemoveListObject (line 96) | void
function MEMGetNextListObject (line 153) | virt_ptr<void>
function MEMGetPrevListObject (line 164) | virt_ptr<void>
function MEMGetNthListObject (line 175) | virt_ptr<void>
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memlist.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memory.cpp
type cafe::coreinit (line 14) | namespace cafe::coreinit
type StaticMemoryData (line 17) | struct StaticMemoryData
type ForegroundAreaId (line 34) | enum ForegroundAreaId
type ForegroundArea (line 46) | struct ForegroundArea
function getForegroundAreaPointer (line 64) | static virt_ptr<void>
function getForegroundAreaSize (line 76) | static uint32_t
function OSBlockMove (line 88) | virt_ptr<void>
function OSBlockSet (line 98) | virt_ptr<void>
function BOOL (line 114) | BOOL
function BOOL (line 138) | BOOL
function OSGetMemBound (line 153) | int32_t
function OSGetAvailPhysAddrRange (line 195) | void
function OSGetDataPhysAddrRange (line 210) | void
function OSGetMapVirtAddrRange (line 225) | void
function BOOL (line 240) | BOOL
function virt_addr (line 274) | virt_addr
function BOOL (line 282) | BOOL
function OSQueryVirtAddr (line 289) | int32_t
function BOOL (line 295) | BOOL
function BOOL (line 307) | BOOL
function phys_addr (line 318) | phys_addr
function virt_addr (line 346) | virt_addr
function virt_addr (line 356) | virt_addr
function memcpy (line 366) | virt_ptr<void>
function memmove (line 379) | virt_ptr<void>
function memset (line 392) | virt_ptr<void>
type internal (line 401) | namespace internal
function initialiseMemory (line 404) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memory.h
function namespace (line 5) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memunitheap.cpp
type cafe::coreinit (line 10) | namespace cafe::coreinit
function MEMHeapHandle (line 18) | MEMHeapHandle
function MEMDestroyUnitHeap (line 91) | virt_ptr<void>
function MEMAllocFromUnitHeap (line 105) | virt_ptr<void>
function MEMFreeToUnitHeap (line 137) | void
function MEMCountFreeBlockForUnitHeap (line 164) | uint32_t
function MEMCalcHeapSizeForUnitHeap (line 185) | uint32_t
type internal (line 197) | namespace internal
function dumpUnitHeap (line 203) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_memunitheap.h
function namespace (line 7) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_messagequeue.cpp
type cafe::coreinit (line 8) | namespace cafe::coreinit
function OSInitMessageQueue (line 14) | void
function OSInitMessageQueueEx (line 26) | void
function BOOL (line 55) | BOOL
function BOOL (line 112) | BOOL
function BOOL (line 154) | BOOL
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_messagequeue.h
function namespace (line 8) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_mutex.cpp
type cafe::coreinit (line 9) | namespace cafe::coreinit
function OSInitMutex (line 18) | void
function OSInitMutexEx (line 28) | void
function lockMutexNoLock (line 41) | static void
function OSLockMutex (line 85) | void
function BOOL (line 106) | BOOL
function OSUnlockMutex (line 144) | void
function OSInitCond (line 199) | void
function OSInitCondEx (line 209) | void
function OSWaitCond (line 227) | void
function OSSignalCond (line 272) | void
type internal (line 278) | namespace internal
function unlockAllMutexNoLock (line 281) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_mutex.h
function namespace (line 6) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_osreport.cpp
type cafe::coreinit (line 17) | namespace cafe::coreinit
function OSReport (line 20) | void
function OSReportInfo (line 29) | void
function OSReportVerbose (line 40) | void
function OSReportWarn (line 51) | void
function OSVReport (line 62) | void
function OSPanic (line 69) | void
function OSSendFatalError (line 85) | void
function OSConsoleWrite (line 114) | void
type internal (line 122) | namespace internal
function OSPanic (line 125) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_osreport.h
function namespace (line 5) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_overlayarena.cpp
type cafe::coreinit (line 5) | namespace cafe::coreinit
type StaticOverlayArenaData (line 8) | struct StaticOverlayArenaData
function BOOL (line 18) | BOOL
function OSEnableOverlayArena (line 24) | void
function OSDisableOverlayArena (line 39) | void
function OSGetOverlayArenaRange (line 50) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_overlayarena.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_rendezvous.cpp
type cafe::coreinit (line 6) | namespace cafe::coreinit
function OSInitRendezvous (line 12) | void
function BOOL (line 24) | BOOL
function BOOL (line 40) | BOOL
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_rendezvous.h
function namespace (line 7) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_scheduler.cpp
type cafe::coreinit (line 22) | namespace cafe::coreinit
type StaticSchedulerData (line 25) | struct StaticSchedulerData
type PerCoreData (line 27) | struct PerCoreData
type internal (line 44) | namespace internal
function getCoreRunningThread (line 52) | virt_ptr<OSThread>
function getCoreThreadRunningTime (line 62) | uint64_t
function pauseCoreTime (line 75) | void
function getFirstActiveThread (line 90) | virt_ptr<OSThread>
function getCurrentThread (line 100) | virt_ptr<OSThread>
function lockScheduler (line 106) | void
function isSchedulerLocked (line 112) | bool
function unlockScheduler (line 118) | void
function isSchedulerEnabled (line 124) | bool
function enableScheduler (line 131) | void
function disableScheduler (line 138) | void
function markThreadActiveNoLock (line 145) | void
function markThreadInactiveNoLock (line 154) | void
function isThreadActiveNoLock (line 163) | bool
function queueThreadNoLock (line 174) | static void
function unqueueThreadNoLock (line 195) | static void
function setThreadAffinityNoLock (line 203) | void
function peekNextThreadNoLock (line 217) | static virt_ptr<OSThread>
function validateThread (line 232) | static void
function checkActiveThreadsNoLock (line 239) | int32_t
function checkRunningThreadNoLock (line 253) | void
function rescheduleSelfNoLock (line 354) | void
function rescheduleNoLock (line 360) | void
function rescheduleOtherCoreNoLock (line 370) | void
function rescheduleAllCoreNoLock (line 382) | void
function resumeThreadNoLock (line 390) | int32_t
function setCoreRunningThread (line 414) | void
function setThreadRunQuantumNoLock (line 421) | bool
function sleepThreadNoLock (line 429) | void
function sleepThreadNoLock (line 444) | void
function suspendThreadNoLock (line 454) | void
function testThreadCancelNoLock (line 464) | void
function wakeupOneThreadNoLock (line 482) | void
function wakeupThreadNoLock (line 499) | void
function wakeupThreadNoLock (line 510) | void
function wakeupThreadWaitForSuspensionNoLock (line 517) | void
function calculateThreadPriorityNoLock (line 528) | int32_t
function setThreadActualPriorityNoLock (line 562) | virt_ptr<OSThread>
function updateThreadPriorityNoLock (line 615) | void
function promoteThreadPriorityNoLock (line 625) | void
function initialiseScheduler (line 634) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_scheduler.h
function namespace (line 5) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_screen.cpp
type cafe::coreinit (line 16) | namespace cafe::coreinit
type ScreenSize (line 19) | struct ScreenSize
type StaticScreenData (line 36) | struct StaticScreenData
function OSScreenInit (line 44) | void
function OSScreenGetBufferSizeEx (line 64) | uint32_t
function OSScreenEnableEx (line 72) | void
function OSScreenClearBufferEx (line 78) | void
function OSScreenSetBufferEx (line 94) | void
function OSScreenPutPixelEx (line 102) | void
function putChar (line 121) | static void
function OSScreenPutFontEx (line 149) | void
function OSScreenFlipBuffersEx (line 169) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_screen.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_semaphore.cpp
type cafe::coreinit (line 6) | namespace cafe::coreinit
function OSInitSemaphore (line 13) | void
function OSInitSemaphoreEx (line 24) | void
function OSWaitSemaphore (line 42) | int32_t
function OSTryWaitSemaphore (line 72) | int32_t
function OSSignalSemaphore (line 93) | int32_t
function OSGetSemaphoreCount (line 114) | int32_t
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_semaphore.h
function namespace (line 6) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_snprintf.cpp
type cafe::coreinit (line 13) | namespace cafe::coreinit
function os_snprintf (line 16) | static int32_t
type internal (line 28) | namespace internal
function formatStringV (line 52) | bool
function formatStringV (line 172) | int32_t
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_snprintf.h
function namespace (line 6) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_spinlock.cpp
type cafe::coreinit (line 10) | namespace cafe::coreinit
function increaseSpinLockCount (line 13) | static void
function decreaseSpinLockCount (line 22) | static void
function spinAcquireLock (line 31) | static bool
function spinTryLock (line 51) | static bool
function spinTryLockWithTimeout (line 71) | static bool
function spinReleaseLock (line 97) | static bool
function OSInitSpinLock (line 117) | void
function BOOL (line 124) | BOOL
function BOOL (line 132) | BOOL
function BOOL (line 139) | BOOL
function BOOL (line 148) | BOOL
function BOOL (line 165) | BOOL
function BOOL (line 189) | BOOL
function BOOL (line 215) | BOOL
function BOOL (line 244) | BOOL
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_spinlock.h
function namespace (line 7) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_systemheap.cpp
type cafe::coreinit (line 11) | namespace cafe::coreinit
type StaticSystemHeapData (line 14) | struct StaticSystemHeapData
function OSAllocFromSystem (line 37) | virt_ptr<void>
function OSFreeToSystem (line 62) | void
type internal (line 76) | namespace internal
function dumpSystemHeap (line 79) | void
function initialiseSystemHeap (line 85) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_systemheap.h
function namespace (line 4) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_systeminfo.cpp
type cafe::coreinit (line 10) | namespace cafe::coreinit
type StaticSystemInfoData (line 13) | struct StaticSystemInfoData
function OSGetSystemInfo (line 26) | virt_ptr<OSSystemInfo>
function OSSystemMode (line 32) | OSSystemMode
function BOOL (line 38) | BOOL
function BOOL (line 46) | BOOL
function OSGetConsoleType (line 52) | uint32_t
function OSGetSecurityLevel (line 59) | uint32_t
function BOOL (line 65) | BOOL
function BOOL (line 71) | BOOL
function OSBlockThreadsOnExit (line 78) | void
function OSGetTitleID (line 84) | uint64_t
function OSGetOSID (line 90) | uint64_t
function OSGetUPID (line 96) | kernel::UniqueProcessId
function OSAppFlags (line 102) | OSAppFlags
function OSShutdownReason (line 108) | OSShutdownReason
function OSGetArgcArgv (line 114) | void
function BOOL (line 122) | BOOL
function BOOL (line 128) | BOOL
function ENVGetEnvironmentVariable (line 134) | int32_t
type internal (line 146) | namespace internal
function getArgStr (line 149) | virt_ptr<char>
function getCoreinitLoaderHandle (line 155) | virt_ptr<void>
function virt_addr (line 161) | virt_addr
function virt_addr (line 175) | virt_addr
function virt_addr (line 189) | virt_addr
function virt_addr (line 203) | virt_addr
function virt_addr (line 209) | virt_addr
function phys_addr (line 215) | phys_addr
function virt_addr (line 221) | virt_addr
function virt_addr (line 227) | virt_addr
function getSystemHeapSize (line 233) | uint32_t
function isAppDebugLevelVerbose (line 239) | bool
function isAppDebugLevelNotice (line 246) | bool
function initialiseSystemInfo (line 253) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_systeminfo.h
function namespace (line 10) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_systemmessagequeue.cpp
type cafe::coreinit (line 4) | namespace cafe::coreinit
type StaticSystemMessageQueueData (line 9) | struct StaticSystemMessageQueueData
function OSGetSystemMessageQueue (line 25) | virt_ptr<OSMessageQueue>
type internal (line 31) | namespace internal
function initialiseSystemMessageQueue (line 34) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_systemmessagequeue.h
function namespace (line 6) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_taskqueue.cpp
type cafe::coreinit (line 8) | namespace cafe::coreinit
function MPInitTaskQ (line 14) | void
function BOOL (line 38) | BOOL
function BOOL (line 48) | BOOL
function BOOL (line 70) | BOOL
function BOOL (line 95) | BOOL
function BOOL (line 122) | BOOL
function BOOL (line 162) | BOOL
function MPDequeTask (line 207) | virt_ptr<MPTask>
function MPDequeTasks (line 232) | uint32_t
function BOOL (line 263) | BOOL
function BOOL (line 277) | BOOL
function BOOL (line 298) | BOOL
function MPInitTask (line 310) | void
function BOOL (line 334) | BOOL
function BOOL (line 346) | BOOL
function MPGetTaskUserData (line 361) | virt_ptr<void>
function MPSetTaskUserData (line 371) | void
function BOOL (line 394) | BOOL
function BOOL (line 465) | BOOL
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_taskqueue.h
function namespace (line 7) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_thread.cpp
type cafe::coreinit (line 36) | namespace cafe::coreinit
type StaticThreadData (line 56) | struct StaticThreadData
type PerCoreData (line 58) | struct PerCoreData
function clearThreadStackWithValue (line 78) | static void
function OSCancelThread (line 108) | void
function OSCheckActiveThreads (line 148) | int32_t
function OSCheckThreadStackUsage (line 161) | int32_t
function OSClearStack (line 182) | void
function OSClearThreadStackUsage (line 196) | void
function OSContinueThread (line 213) | void
function threadEntry (line 226) | static uint32_t
function initialiseThreadState (line 244) | static void
function BOOL (line 324) | static BOOL
function BOOL (line 397) | BOOL
function BOOL (line 410) | BOOL
function BOOL (line 428) | BOOL
function OSDetachThread (line 445) | void
function OSExitThread (line 480) | [[noreturn]] void
function OSGetActiveThreadLink (line 516) | void
function OSGetCurrentThread (line 527) | virt_ptr<OSThread>
function OSGetDefaultThread (line 537) | virt_ptr<OSThread>
function OSGetStackPointer (line 551) | virt_ptr<uint32_t>
function OSGetUserStackPointer (line 561) | virt_ptr<uint32_t>
function OSGetThreadAffinity (line 583) | uint32_t
function OSGetThreadName (line 593) | virt_ptr<const char>
function OSGetThreadPriority (line 603) | int32_t
function OSGetThreadSpecific (line 621) | uint32_t
function OSInitThreadQueue (line 632) | void
function OSInitThreadQueueEx (line 642) | void
function BOOL (line 655) | BOOL
function BOOL (line 665) | BOOL
function BOOL (line 680) | BOOL
function OSPrintCurrentThreadState (line 723) | void
function OSResumeThread (line 773) | int32_t
function BOOL (line 793) | BOOL
function BOOL (line 834) | BOOL
function BOOL (line 853) | BOOL
function OSThreadCleanupCallbackFn (line 878) | OSThreadCleanupCallbackFn
function OSThreadDeallocatorFn (line 893) | OSThreadDeallocatorFn
function OSSetThreadName (line 908) | void
function BOOL (line 919) | BOOL
function BOOL (line 949) | BOOL
function OSSetThreadSpecific (line 978) | void
function BOOL (line 989) | BOOL
function OSSleepThread (line 1013) | void
function sleepAlarmHandler (line 1022) | static void
function OSSleepTicks (line 1036) | void
function OSSuspendThread (line 1064) | int32_t
function OSTestThreadCancel (line 1119) | void
function OSWakeupThread (line 1133) | void
function OSYieldThread (line 1149) | void
type internal (line 1157) | namespace internal
function setUserStackPointer (line 1163) | void
function removeUserStackPointer (line 1190) | void
function pinThreadAffinity (line 1213) | uint32_t
function unpinThreadAffinity (line 1232) | void
function exitThreadNoLock (line 1243) | void
function queueThreadDeallocation (line 1281) | void
function deallocatorThreadEntry (line 1289) | static uint32_t
function initialiseDeallocatorThread (line 1324) | static void
function defaultThreadEntry (line 1347) | static uint32_t
function initialiseThreadForCore (line 1376) | static void
function initialiseThreads (line 1441) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_thread.h
function namespace (line 12) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_time.cpp
type cafe::coreinit (line 12) | namespace cafe::coreinit
type TimeData (line 15) | struct TimeData
function scaledTimebase (line 26) | static uint64_t
function OSTime (line 41) | OSTime
function OSTime (line 51) | OSTime
function OSTick (line 61) | OSTick
function OSTick (line 71) | OSTick
function OSTicksToCalendarTime (line 81) | void
function OSTime (line 111) | OSTime
type internal (line 135) | namespace internal
function OSTime (line 138) | OSTime
function OSTime (line 145) | OSTime
function OSTime (line 152) | OSTime
function OSTimeMilliseconds (line 160) | OSTimeMilliseconds
function OSTime (line 167) | OSTime
function toTimepoint (line 173) | std::chrono::time_point<std::chrono::system_clock>
function OSTime (line 181) | OSTime
function initialiseTime (line 189) | void
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_time.h
function namespace (line 5) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_userconfig.cpp
type cafe::coreinit (line 12) | namespace cafe::coreinit
type StaticUserConfigData (line 25) | struct StaticUserConfigData
type internal (line 44) | namespace internal
function ucAllocateMessage (line 47) | static virt_ptr<void>
function ucFreeMessage (line 65) | static void
function UCError (line 73) | static UCError
function UCError (line 94) | static UCError
function ucIosAsyncCallback (line 195) | static void
function UCError (line 214) | UCError
function UCError (line 253) | UCError
function UCError (line 260) | UCError
function UCError (line 269) | UCError
function UCError (line 382) | UCError
function UCError (line 391) | UCError
function UCError (line 504) | UCError
function UCError (line 513) | UCError
FILE: src/libdecaf/src/cafe/libraries/coreinit/coreinit_userconfig.h
function namespace (line 8) | namespace cafe::coreinit
FILE: src/libdecaf/src/cafe/libraries/dc/dc.cpp
type cafe::dc (line 3) | namespace cafe::dc
function rpl_entry (line 6) | static int32_t
FILE: src/libdecaf/src/cafe/libraries/dc/dc.h
function namespace (line 4) | namespace cafe::dc
FILE: src/libdecaf/src/cafe/libraries/dmae/dmae.cpp
type cafe::dmae (line 4) | namespace cafe::dmae
function rpl_entry (line 7) | static int32_t
FILE: src/libdecaf/src/cafe/libraries/dmae/dmae.h
function namespace (line 4) | namespace cafe::dmae
FILE: src/libdecaf/src/cafe/libraries/dmae/dmae_ring.cpp
type cafe::dmae (line 8) | namespace cafe::dmae
type StaticRingData (line 11) | struct StaticRingData
function DMAEInit (line 21) | void
function DMAETimestamp (line 27) | DMAETimestamp
function DMAETimestamp (line 36) | DMAETimestamp
function DMAEGetTimeout (line 42) | uint32_t
function DMAESetTimeout (line 48) | void
function DMAECopyMem (line 54) | uint64_t
function DMAEFillMem (line 87) | uint64_t
function BOOL (line 107) | BOOL
FILE: src/libdecaf/src/cafe/libraries/dmae/dmae_ring.h
function namespace (line 5) | namespace cafe::dmae
FILE: src/libdecaf/src/cafe/libraries/drmapp/drmapp.cpp
type cafe::drmapp (line 3) | namespace cafe::drmapp
function rpl_entry (line 6) | static int32_t
FILE: src/libdecaf/src/cafe/libraries/drmapp/drmapp.h
function namespace (line 4) | namespace cafe::drmapp
FILE: src/libdecaf/src/cafe/libraries/erreula/erreula.cpp
type cafe::nn_erreula (line 3) | namespace cafe::nn_erreula
function rpl_entry (line 6) | static int32_t
FILE: src/libdecaf/src/cafe/libraries/erreula/erreula.h
function namespace (line 4) | namespace cafe::nn_erreula
FILE: src/libdecaf/src/cafe/libraries/erreula/erreula_errorviewer.cpp
type cafe::nn_erreula (line 10) | namespace cafe::nn_erreula
type StaticErrEulaData (line 13) | struct StaticErrEulaData
function ErrEulaAppearError (line 26) | void
function ErrEulaCalc (line 55) | void
function BOOL (line 60) | BOOL
function ErrEulaDestroy (line 69) | void
function ErrEulaDisappearError (line 74) | void
function ErrEulaDrawDRC (line 87) | void
function ErrEulaDrawTV (line 92) | void
function ErrorViewerState (line 97) | ErrorViewerState
function BOOL (line 104) | BOOL
function BOOL (line 111) | BOOL
function BOOL (line 118) | BOOL
function ErrEulaSetControllerRemo (line 125) | void
function ErrEulaAppearHomeNixSign (line 131) | void
function BOOL (line 137) | BOOL
function ErrEulaDisappearHomeNixSign (line 144) | void
function ErrEulaChangeLang (line 150) | void
function BOOL (line 156) | BOOL
function ResultType (line 163) | ResultType
function ErrEulaGetResultCode (line 170) | uint32_t
function ErrEulaGetSelectButtonNumError (line 177) | uint32_t
function ErrEulaSetVersion (line 184) | void
function ErrEulaPlayAppearSE (line 190) | void
function ErrEulaJump (line 196) | bool
type internal (line 204) | namespace internal
function buttonClicked (line 207) | void
function button1Clicked (line 218) | void
function button2Clicked (line 229) | void
FILE: src/libdecaf/src/cafe/libraries/erreula/erreula_errorviewer.h
function namespace (line 6) | namespace cafe::coreinit
function namespace (line 11) | namespace cafe::kpad
function namespace (line 16) | namespace cafe::vpad
function namespace (line 21) | namespace cafe::nn_erreula
FILE: src/libdecaf/src/cafe/libraries/ghs/cafe_ghs_malloc.cpp
type cafe::ghs (line 7) | namespace cafe::ghs
type MallocGuard (line 12) | struct MallocGuard
function malloc (line 22) | virt_ptr<void>
function free (line 37) | void
FILE: src/libdecaf/src/cafe/libraries/ghs/cafe_ghs_malloc.h
function namespace (line 4) | namespace cafe::ghs
FILE: src/libdecaf/src/cafe/libraries/ghs/cafe_ghs_typeinfo.cpp
type cafe::ghs (line 7) | namespace cafe::ghs
function std_typeinfo_Destructor (line 10) | void
function pure_virtual_called (line 19) | void
FILE: src/libdecaf/src/cafe/libraries/ghs/cafe_ghs_typeinfo.h
function namespace (line 5) | namespace cafe::ghs
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2.cpp
type cafe::gx2 (line 5) | namespace cafe::gx2
function rpl_entry (line 8) | static int32_t
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2.h
function namespace (line 4) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_addrlib.cpp
type cafe::gx2::internal (line 10) | namespace cafe::gx2::internal
function getSurfaceInfo (line 13) | bool
function copySurface (line 139) | bool
function getSurfaceSliceSwizzle (line 283) | uint32_t
function calcSliceSize (line 312) | uint32_t
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_addrlib.h
function namespace (line 9) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_aperture.cpp
type cafe::gx2 (line 13) | namespace cafe::gx2
type ApertureInfo (line 19) | struct ApertureInfo
type StaticApertureData (line 30) | struct StaticApertureData
function GX2AllocateTilingApertureEx (line 38) | void
function GX2FreeTilingAperture (line 105) | void
type internal (line 124) | namespace internal
function translateAperture (line 127) | bool
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_aperture.h
function namespace (line 6) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_cbpool.cpp
type cafe::gx2 (line 20) | namespace cafe::gx2
type StaticCbPoolData (line 29) | struct StaticCbPoolData
function GX2Timestamp (line 41) | GX2Timestamp
function GX2Timestamp (line 49) | GX2Timestamp
function GX2SubmitUserTimeStamp (line 59) | void
function BOOL (line 122) | BOOL
type internal (line 135) | namespace internal
function getActiveCommandBuffer (line 152) | virt_ptr<ActiveCommandBuffer>
function getWriteCommandBuffer (line 162) | virt_ptr<ActiveCommandBuffer>
function initialiseCommandBufferPool (line 181) | void
function initialiseCommandBuffer (line 204) | void
function allocateCommandBuffer (line 226) | void
function beginUserCommandBuffer (line 296) | void
function endUserCommandBuffer (line 319) | uint32_t
function padCommandBuffer (line 349) | void
function queueCommandBuffer (line 367) | void
function flushCommandBuffer (line 439) | void
function debugCaptureCbPoolPointers (line 475) | void
function debugCaptureCbPoolPointersFree (line 491) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_cbpool.h
function namespace (line 9) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_clear.cpp
type cafe::gx2 (line 12) | namespace cafe::gx2
function GX2ClearColor (line 17) | void
function DecafClearDepthStencil (line 56) | void
function GX2ClearDepthStencilEx (line 81) | void
function GX2ClearBuffersEx (line 106) | void
function GX2SetClearDepth (line 132) | void
function GX2SetClearStencil (line 143) | void
function GX2SetClearDepthStencil (line 155) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_clear.h
function namespace (line 5) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_contextstate.cpp
type cafe::gx2 (line 17) | namespace cafe::gx2
function loadState (line 136) | static void
function GX2SetupContextStateEx (line 177) | void
function GX2GetContextStateDisplayList (line 203) | void
function GX2SetContextState (line 217) | void
function GX2SetDefaultState (line 232) | void
type internal (line 344) | namespace internal
function initialiseRegisters (line 347) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_contextstate.h
function namespace (line 7) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_counter.cpp
type cafe::gx2 (line 6) | namespace cafe::gx2
function BOOL (line 9) | BOOL
function GX2ResetCounterInfo (line 18) | void
function GX2GetCounterResult (line 25) | uint64_t
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_counter.h
function namespace (line 4) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_debug.cpp
type cafe::gx2::internal (line 28) | namespace cafe::gx2::internal
function createDumpDirectory (line 34) | static void
function debugDumpData (line 40) | static void
function initialiseDebug (line 50) | void
function debugDumpTexture (line 66) | void
function addShader (line 121) | static void
function addShader (line 130) | static void
function addShader (line 139) | static void
function debugDumpShader (line 147) | static void
function formatUniformBlocks (line 189) | static void
function formatAttribVars (line 204) | static void
function formatInitialValues (line 220) | static void
function formatLoopVars (line 236) | static void
function formatUniformVars (line 250) | static void
function formatSamplerVars (line 267) | static void
function debugDumpShader (line 282) | void
function debugDumpShader (line 300) | void
function debugDumpShader (line 324) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_debug.h
function namespace (line 4) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_debug_dds.cpp
type cafe::gx2 (line 8) | namespace cafe::gx2
function make_fourcc (line 11) | constexpr inline uint32_t
type DXGI_FORMAT (line 20) | enum DXGI_FORMAT : uint32_t
type D3D10_RESOURCE_DIMENSION (line 144) | enum D3D10_RESOURCE_DIMENSION
type D3D10_RESOURCE_MISC_FLAG (line 153) | enum D3D10_RESOURCE_MISC_FLAG
type DdsPixelFormat (line 164) | struct DdsPixelFormat
type DdsHeader (line 176) | struct DdsHeader
type DdsHeaderDX10 (line 194) | struct DdsHeaderDX10
type D3DFORMAT (line 304) | enum D3DFORMAT
function DdsHeader (line 400) | static DdsHeader
function DdsHeader (line 438) | static DdsHeader
function writeData (line 472) | static void
function encodeFourCC (line 491) | static bool
function encodeFourCCWithPitch (line 506) | static bool
function encodeMasked (line 522) | static bool
function encodeLuminance (line 545) | static bool
function swizzle565 (line 564) | static void
function swizzle1555 (line 579) | static void
function swizzle4444 (line 594) | static void
function encode565 (line 609) | static bool
function encode1555 (line 632) | static bool
function encode4444 (line 660) | static bool
function encodeDX10 (line 688) | static bool
function encodeCubemap (line 754) | static void
type debug (line 793) | namespace debug
function saveDDS (line 796) | bool
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_debug_dds.h
function namespace (line 4) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_debugcapture.cpp
type cafe::gx2 (line 16) | namespace cafe::gx2
type StaticDebugCaptureData (line 19) | struct StaticDebugCaptureData
function BOOL (line 36) | BOOL
function GX2DebugCaptureStart (line 72) | void
function GX2DebugCaptureEnd (line 103) | void
function GX2DebugCaptureFrame (line 126) | void
function GX2DebugCaptureFrames (line 140) | void
function GX2DebugTagUserString (line 160) | void
function GX2DebugTagUserStringVA (line 178) | void
function GX2NotifyMemAlloc (line 207) | void
function GX2NotifyMemFree (line 221) | void
type internal (line 230) | namespace internal
function BOOL (line 233) | BOOL
function debugCaptureAlloc (line 244) | void
function debugCaptureFree (line 254) | void
function debugCaptureInvalidate (line 262) | void
function debugCaptureShutdown (line 271) | void
function debugCaptureSubmit (line 279) | tcl::TCLStatus
function debugCaptureSwap (line 290) | void
function debugCaptureTagGroup (line 327) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_debugcapture.h
function namespace (line 12) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_display.cpp
type cafe::gx2 (line 20) | namespace cafe::gx2
type StaticDisplayData (line 25) | struct StaticDisplayData
function getTVSize (line 41) | static std::pair<unsigned, unsigned>
function getBpp (line 60) | static unsigned
function getNumBuffers (line 68) | static unsigned
function initialiseScanBuffer (line 83) | static void
function GX2CalcDRCSize (line 109) | void
function GX2CalcTVSize (line 123) | void
function GX2CopyColorBufferToScanBuffer (line 140) | void
function BOOL (line 181) | BOOL
function BOOL (line 188) | BOOL
function BOOL (line 195) | BOOL
function BOOL (line 202) | BOOL
function BOOL (line 209) | BOOL
function GX2TVScanMode (line 216) | GX2TVScanMode
function GX2DrcRenderMode (line 222) | GX2DrcRenderMode
function GX2AspectRatio (line 228) | GX2AspectRatio
function GX2GetSwapInterval (line 246) | uint32_t
function BOOL (line 252) | BOOL
function GX2SetDRCBuffer (line 258) | void
function GX2DRCConnectCallbackFunction (line 290) | GX2DRCConnectCallbackFunction
function GX2SetDRCEnable (line 307) | void
function GX2SetDRCScale (line 312) | void
function GX2SetSwapInterval (line 318) | void
function GX2SetTVBuffer (line 328) | void
function GX2SetTVEnable (line 366) | void
function GX2SetTVScale (line 371) | void
function GX2SwapScanBuffers (line 377) | void
type internal (line 391) | namespace internal
function getTvScanBuffer (line 394) | virt_ptr<GX2Surface>
function getDrcScanBuffer (line 400) | virt_ptr<GX2Surface>
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_display.h
function namespace (line 8) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_displaylist.cpp
type cafe::gx2 (line 17) | namespace cafe::gx2
function GX2BeginDisplayListEx (line 22) | void
function GX2EndDisplayList (line 32) | uint32_t
function BOOL (line 44) | BOOL
function BOOL (line 50) | BOOL
function GX2DirectCallDisplayList (line 71) | void
function GX2CallDisplayList (line 86) | void
function GX2CopyDisplayList (line 96) | void
function GX2PatchDisplayList (line 107) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_displaylist.h
function namespace (line 6) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_draw.cpp
type cafe::gx2 (line 13) | namespace cafe::gx2
function GX2SetAttribBuffer (line 18) | void
function GX2DrawEx (line 42) | void
function GX2DrawEx2 (line 70) | void
function GX2DrawIndexedEx (line 94) | void
function GX2DrawIndexedEx2 (line 163) | void
function GX2DrawIndexedImmediateEx (line 189) | void
function GX2DrawStreamOut (line 271) | void
function GX2SetPrimitiveRestartIndex (line 333) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_draw.h
function namespace (line 5) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_event.cpp
type cafe::gx2 (line 22) | namespace cafe::gx2
type StaticEventData (line 28) | struct StaticEventData
type EventCallbackData (line 30) | struct EventCallbackData
function BOOL (line 61) | BOOL
function GX2SetEventCallback (line 72) | void
function GX2GetEventCallback (line 99) | void
function GX2GetSwapStatus (line 129) | void
function GX2WaitForVsync (line 156) | void
function GX2WaitForFlip (line 166) | void
type internal (line 180) | namespace internal
function tclEventCallback (line 187) | static void
function initEvents (line 207) | void
function appIoThread (line 245) | static uint32_t
function stopAppIoThread (line 272) | void
function vsyncAlarmHandler (line 300) | static void
function displayListOverrun (line 340) | std::pair<virt_ptr<void>, uint32_t>
function onSwap (line 370) | void
function onFlip (line 380) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_event.h
function namespace (line 9) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_fence.cpp
type cafe::gx2 (line 14) | namespace cafe::gx2
function GX2SetGPUFence (line 17) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_fence.h
function namespace (line 6) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_fetchshader.cpp
type cafe::gx2 (line 14) | namespace cafe::gx2
type IndexMapEntry (line 17) | struct IndexMapEntry
function fetchInstsPerAttrib (line 75) | static uint32_t
function calcNumFetchInsts (line 92) | static uint32_t
function calcNumTessALUInsts (line 108) | static uint32_t
function calcNumAluInsts (line 128) | static uint32_t
function calcNumFetchCFInsts (line 139) | static uint32_t
function calcNumCFInsts (line 145) | static uint32_t
function IndexMapEntry (line 158) | static const IndexMapEntry *
function GX2CalcFetchShaderSizeEx (line 187) | uint32_t
function GX2InitFetchShaderEx (line 199) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_fetchshader.h
function namespace (line 7) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_format.cpp
type cafe::gx2 (line 9) | namespace cafe::gx2
type GX2SurfaceFormatData (line 12) | struct GX2SurfaceFormatData
function BOOL (line 89) | BOOL
function GX2GetAttribFormatBits (line 96) | uint32_t
function GX2GetSurfaceFormatBits (line 131) | uint32_t
function GX2GetSurfaceFormatBitsPerElement (line 144) | uint32_t
function BOOL (line 150) | BOOL
type internal (line 162) | namespace internal
function getAttribFormatBytes (line 165) | uint32_t
function getAttribFormatDataFormat (line 171) | latte::SQ_DATA_FORMAT
function GX2EndianSwapMode (line 220) | GX2EndianSwapMode
function getAttribFormatEndian (line 252) | latte::SQ_ENDIAN
function getSurfaceFormatBytesPerElement (line 258) | uint32_t
function GX2SurfaceUse (line 264) | GX2SurfaceUse
function GX2EndianSwapMode (line 275) | GX2EndianSwapMode
function getSurfaceFormatEndian (line 281) | latte::SQ_ENDIAN
function GX2SurfaceFormatType (line 287) | GX2SurfaceFormatType
function getSurfaceFormatColorEndian (line 293) | latte::CB_ENDIAN
function getSurfaceFormatColorFormat (line 299) | latte::CB_FORMAT
function getSurfaceFormatColorNumberType (line 374) | latte::CB_NUMBER_TYPE
function getSurfaceFormatColorSourceFormat (line 395) | latte::CB_SOURCE_FORMAT
function getSwapModeEndian (line 401) | latte::SQ_ENDIAN
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_format.h
function namespace (line 11) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_internal_flush.cpp
type cafe::gx2::internal (line 5) | namespace cafe::gx2::internal
function notifyCpuFlush (line 8) | void
function notifyGpuFlush (line 16) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_internal_flush.h
function namespace (line 4) | namespace cafe::gx2::internal
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_internal_gfd.cpp
type cafe::gx2::internal (line 3) | namespace cafe::gx2::internal
function gfdToGX2Surface (line 6) | void
function gx2ToGFDSurface (line 30) | void
function gfdToGX2Texture (line 56) | void
function gx2ToGFDTexture (line 76) | void
function gx2ToGFDVertexShader (line 95) | void
function gx2ToGFDPixelShader (line 187) | void
function gx2ToGFDGeometryShader (line 261) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_internal_gfd.h
function namespace (line 8) | namespace cafe::gx2::internal
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_internal_pm4cap.cpp
type cafe::gx2::internal (line 42) | namespace cafe::gx2::internal
class Recorder (line 45) | class Recorder
type RecordedMemory (line 47) | struct RecordedMemory
method Recorder (line 55) | Recorder()
method requestStart (line 60) | bool
method requestStop (line 81) | void
method setCaptureNumFrames (line 89) | void
method CaptureState (line 95) | CaptureState
method swap (line 101) | void
method commandBuffer (line 121) | void
method cpuFlush (line 139) | void
method gpuFlush (line 149) | void
method start (line 159) | void
method stop (line 168) | void
method writeRegisterSnapshot (line 176) | void
method writeDisplayInfo (line 186) | void
method writePacket (line 228) | void
method writeData (line 235) | void
method writeMemoryLoad (line 241) | void
method scanCommandBuffer (line 258) | void
method scanType0 (line 311) | void
method trackSurface (line 317) | void
method trackColorBuffer (line 367) | void
method trackDepthBuffer (line 389) | void
method trackActiveShaders (line 411) | void
method trackActiveAttribBuffers (line 439) | void
method trackActiveUniforms (line 453) | void
method trackActiveTextures (line 466) | void
method trackActiveColorBuffer (line 493) | void
method trackActiveDepthBuffer (line 505) | void
method trackReadyDraw (line 515) | void
method scanSetRegister (line 526) | void
method scanLoadRegisters (line 533) | void
method Type (line 549) | Type
method scanType3 (line 555) | void
method trackMemory (line 833) | bool
function captureStartAtNextSwap (line 900) | bool
function captureStopAtNextSwap (line 925) | void
function captureNextFrame (line 931) | bool
function CaptureState (line 938) | CaptureState
function captureSwap (line 944) | void
function captureCommandBuffer (line 953) | void
function captureCpuFlush (line 963) | void
function captureGpuFlush (line 973) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_internal_pm4cap.h
function namespace (line 5) | namespace cafe::gx2::internal
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_internal_writegatherptr.h
function namespace (line 5) | namespace cafe::gx2::internal
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_memory.cpp
type cafe::gx2 (line 17) | namespace cafe::gx2
function GX2Invalidate (line 20) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_memory.h
function namespace (line 5) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_query.cpp
type cafe::gx2 (line 13) | namespace cafe::gx2
function GX2SampleTopGPUCycle (line 16) | void
function GX2SampleBottomGPUCycle (line 32) | void
function GX2GPUTimeToCPUTime (line 52) | uint64_t
function beginOcclusionQuery (line 58) | static void
function endOcclusionQuery (line 120) | static void
function beginStreamOutStatsQuery (line 144) | static void
function endStreamOutStatsQuery (line 198) | static void
function GX2QueryBegin (line 225) | void
function GX2QueryEnd (line 245) | void
function GX2QueryGetOcclusionResult (line 265) | void
function GX2QueryBeginConditionalRender (line 272) | void
function GX2QueryEndConditionalRender (line 293) | void
function GX2PerfMetricEnable (line 299) | bool
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_query.h
function namespace (line 6) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_registers.cpp
type cafe::gx2 (line 8) | namespace cafe::gx2
function GX2SetAAMask (line 11) | void
function GX2InitAAMaskReg (line 26) | void
function GX2GetAAMaskReg (line 44) | void
function GX2SetAAMaskReg (line 58) | void
function GX2SetAlphaTest (line 65) | void
function GX2InitAlphaTestReg (line 75) | void
function GX2GetAlphaTestReg (line 95) | void
function GX2SetAlphaTestReg (line 109) | void
function GX2SetAlphaToMask (line 119) | void
function GX2InitAlphaToMaskReg (line 128) | void
function GX2GetAlphaToMaskReg (line 184) | void
function GX2SetAlphaToMaskReg (line 212) | void
function GX2SetBlendConstantColor (line 219) | void
function GX2InitBlendConstantColorReg (line 230) | void
function GX2GetBlendConstantColorReg (line 243) | void
function GX2SetBlendConstantColorReg (line 256) | void
function GX2SetBlendControl (line 270) | void
function GX2InitBlendControlReg (line 293) | void
function GX2GetBlendControlReg (line 319) | void
function GX2SetBlendControlReg (line 341) | void
function GX2SetColorControl (line 349) | void
function GX2InitColorControlReg (line 364) | void
function GX2GetColorControlReg (line 387) | void
function GX2SetColorControlReg (line 407) | void
function GX2SetDepthOnlyControl (line 414) | void
function GX2SetDepthStencilControl (line 434) | void
function GX2InitDepthStencilControlReg (line 467) | void
function GX2GetDepthStencilControlReg (line 503) | void
function GX2SetDepthStencilControlReg (line 535) | void
function GX2SetStencilMask (line 542) | void GX2SetStencilMask(uint8_t frontMask,
function GX2InitStencilMaskReg (line 554) | void GX2InitStencilMaskReg(virt_ptr<GX2StencilMaskReg> reg,
function GX2GetStencilMaskReg (line 579) | void
function GX2SetStencilMaskReg (line 600) | void GX2SetStencilMaskReg(virt_ptr<GX2StencilMaskReg> reg)
function GX2SetLineWidth (line 608) | void
function GX2InitLineWidthReg (line 616) | void
function GX2GetLineWidthReg (line 628) | void
function GX2SetLineWidthReg (line 636) | void
function GX2SetPointSize (line 643) | void
function GX2InitPointSizeReg (line 652) | void
function GX2GetPointSizeReg (line 666) | void
function GX2SetPointSizeReg (line 676) | void
function GX2SetPointLimits (line 683) | void
function GX2InitPointLimitsReg (line 692) | void
function GX2GetPointLimitsReg (line 706) | void
function GX2SetPointLimitsReg (line 716) | void
function GX2SetCullOnlyControl (line 723) | void
function GX2SetPolygonControl (line 739) | void
function GX2InitPolygonControlReg (line 764) | void
function GX2GetPolygonControlReg (line 792) | void
function GX2SetPolygonControlReg (line 816) | void
function GX2SetPolygonOffset (line 823) | void
function GX2InitPolygonOffsetReg (line 840) | void
function GX2GetPolygonOffsetReg (line 872) | void
function GX2SetPolygonOffsetReg (line 893) | void
function GX2SetScissor (line 913) | void
function GX2InitScissorReg (line 924) | void
function GX2GetScissorReg (line 946) | void
function GX2SetScissorReg (line 962) | void
function GX2SetTargetChannelMasks (line 976) | void
function GX2InitTargetChannelMasksReg (line 1000) | void
function GX2GetTargetChannelMasksReg (line 1026) | void
function GX2SetTargetChannelMasksReg (line 1048) | void
function GX2SetViewport (line 1055) | void
function GX2InitViewportReg (line 1068) | void
function GX2GetViewportReg (line 1157) | void
function GX2SetViewportReg (line 1183) | void
function GX2SetRasterizerClipControl (line 1222) | void
function GX2SetRasterizerClipControlEx (line 1229) | void
function GX2SetRasterizerClipControlHalfZ (line 1245) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_registers.h
function namespace (line 7) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_sampler.cpp
type cafe::gx2 (line 7) | namespace cafe::gx2
function GX2InitSampler (line 10) | void
function GX2InitSamplerBorderType (line 29) | void
function GX2InitSamplerClamping (line 41) | void
function GX2InitSamplerDepthCompare (line 57) | void
function GX2InitSamplerFilterAdjust (line 69) | void
function GX2InitSamplerLOD (line 85) | void
function GX2InitSamplerLODAdjust (line 105) | void
function GX2InitSamplerRoundingMode (line 125) | void
function GX2InitSamplerXYFilter (line 137) | void
function GX2InitSamplerZMFilter (line 153) | void
function GX2SetPixelSamplerBorderColor (line 167) | void
function GX2SetVertexSamplerBorderColor (line 189) | void
function GX2SetGeometrySamplerBorderColor (line 210) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_sampler.h
function namespace (line 7) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_shaders.cpp
type cafe::gx2 (line 14) | namespace cafe::gx2
function GX2CalcGeometryShaderInputRingBufferSize (line 19) | uint32_t
function GX2CalcGeometryShaderOutputRingBufferSize (line 25) | uint32_t
function GX2SetFetchShader (line 31) | void
function GX2SetVertexShader (line 54) | void
function GX2SetPixelShader (line 140) | void
function GX2SetGeometryShader (line 205) | void
function _GX2SetSampler (line 289) | void
function GX2SetPixelSampler (line 301) | void
function GX2SetVertexSampler (line 309) | void
function GX2SetGeometrySampler (line 317) | void
function GX2SetVertexUniformReg (line 325) | void
function GX2SetPixelUniformReg (line 341) | void
function GX2SetVertexUniformBlock (line 357) | void
function GX2SetPixelUniformBlock (line 394) | void
function GX2SetGeometryUniformBlock (line 431) | void
function GX2SetShaderModeEx (line 468) | void
function GX2SetStreamOutBuffer (line 595) | void
function GX2SetStreamOutEnable (line 617) | void
function GX2SetStreamOutContext (line 628) | void
function GX2SaveStreamOutContext (line 665) | void
function GX2SetGeometryShaderInputRingBuffer (line 680) | void
function GX2SetGeometryShaderOutputRingBuffer (line 712) | void
function GX2GetPixelShaderGPRs (line 744) | uint32_t
function GX2GetPixelShaderStackEntries (line 750) | uint32_t
function GX2GetVertexShaderGPRs (line 756) | uint32_t
function GX2GetVertexShaderStackEntries (line 762) | uint32_t
function GX2GetGeometryShaderGPRs (line 768) | uint32_t
function GX2GetGeometryShaderStackEntries (line 774) | uint32_t
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_shaders.h
function namespace (line 9) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_state.cpp
type cafe::gx2 (line 22) | namespace cafe::gx2
type StaticStateData (line 27) | struct StaticStateData
function GX2Init (line 44) | void
function GX2Shutdown (line 134) | void
function GX2GetMainCoreId (line 142) | int32_t
function GX2Flush (line 152) | void
function GX2GetGPUTimeout (line 162) | uint32_t
function GX2SetGPUTimeout (line 168) | void
function GX2GetMiscParam (line 174) | uint32_t
function BOOL (line 194) | BOOL
function GX2SetSpecialState (line 223) | void
type internal (line 265) | namespace internal
function enableStateShadowing (line 268) | void
function disableStateShadowing (line 299) | void
function isInitialised (line 314) | bool
function getMainCoreId (line 320) | uint32_t
function setMainCore (line 326) | void
function initialiseProfiling (line 332) | void
function GX2ProfileMode (line 360) | GX2ProfileMode
function GX2TossStage (line 366) | GX2TossStage
function BOOL (line 372) | BOOL
function setProfilingEnabled (line 378) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_state.h
function namespace (line 6) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_surface.cpp
type cafe::gx2 (line 18) | namespace cafe::gx2
function calcNumLevelsForSize (line 23) | static uint32_t
function calcNumLevels (line 29) | static uint32_t
function computeAuxInfo (line 47) | static void
function GX2CalcSurfaceSizeAndAlignment (line 62) | void
function GX2CalcDepthBufferHiZInfo (line 183) | void
function GX2CalcColorBufferAuxInfo (line 215) | void
function GX2SetColorBuffer (line 225) | void
function GX2SetDepthBuffer (line 299) | void
function GX2InitColorBufferRegs (line 352) | void
function GX2InitDepthBufferRegs (line 429) | void
function GX2InitDepthBufferHiZEnable (line 512) | void
function GX2GetSurfaceSwizzle (line 524) | uint32_t
function GX2GetSurfaceSwizzleOffset (line 530) | uint32_t
function GX2SetSurfaceSwizzle (line 545) | void
function GX2GetSurfaceMipPitch (line 553) | uint32_t
function GX2GetSurfaceMipSliceSize (line 562) | uint32_t
function GX2CopySurface (line 571) | void
function GX2ExpandColorBuffer (line 724) | void
function GX2ExpandDepthBuffer (line 731) | void
function GX2ResolveAAColorBuffer (line 738) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_surface.h
function namespace (line 7) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_temp.cpp
type cafe::gx2 (line 4) | namespace cafe::gx2
function GX2TempGetGPUVersion (line 7) | uint32_t
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_temp.h
function namespace (line 4) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_tessellation.cpp
type cafe::gx2 (line 6) | namespace cafe::gx2
function GX2SetTessellation (line 9) | void
function GX2SetMinTessellationLevel (line 18) | void
function GX2SetMaxTessellationLevel (line 32) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_tessellation.h
function namespace (line 4) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_texture.cpp
type cafe::gx2 (line 12) | namespace cafe::gx2
function GX2InitTextureRegs (line 17) | void
function setTexture (line 173) | static void
function GX2SetPixelTexture (line 216) | void
function GX2SetVertexTexture (line 223) | void
function GX2SetGeometryTexture (line 230) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2_texture.h
function namespace (line 8) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_buffer.cpp
type cafe::gx2 (line 15) | namespace cafe::gx2
function GX2RGetBufferAlignment (line 20) | uint32_t
function GX2RGetBufferAllocationSize (line 26) | uint32_t
function GX2RSetBufferName (line 32) | void
function BOOL (line 39) | BOOL
function BOOL (line 45) | BOOL
function BOOL (line 73) | BOOL
function GX2RDestroyBufferEx (line 96) | void
function GX2RInvalidateBuffer (line 114) | void
function GX2RLockBufferEx (line 126) | virt_ptr<void>
function GX2RUnlockBufferEx (line 150) | void
function GX2RSetStreamOutBuffer (line 166) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_buffer.h
function namespace (line 5) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_displaylist.cpp
type cafe::gx2 (line 7) | namespace cafe::gx2
function GX2RBeginDisplayListEx (line 10) | void
function GX2REndDisplayList (line 24) | uint32_t
function GX2RCallDisplayList (line 32) | void
function GX2RDirectCallDisplayList (line 43) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_displaylist.h
function namespace (line 7) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_draw.cpp
type cafe::gx2 (line 6) | namespace cafe::gx2
function GX2RSetAttributeBuffer (line 9) | void
function GX2RDrawIndexed (line 21) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_draw.h
function namespace (line 5) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_memory.cpp
type cafe::gx2 (line 5) | namespace cafe::gx2
function GX2InvalidateMode (line 8) | static GX2InvalidateMode
function GX2RInvalidateMemory (line 67) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_memory.h
function namespace (line 5) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_resource.cpp
type cafe::gx2 (line 9) | namespace cafe::gx2
type StaticGx2rResourceData (line 14) | struct StaticGx2rResourceData
function GX2RSetAllocator (line 24) | void
function BOOL (line 32) | BOOL
function defaultAlloc (line 38) | static virt_ptr<void>
function defaultFree (line 46) | static void
type internal (line 53) | namespace internal
function GX2RResourceFlags (line 56) | GX2RResourceFlags
function gx2rAlloc (line 63) | virt_ptr<void>
function gx2rFree (line 75) | void
function GX2RAllocFuncPtr (line 85) | GX2RAllocFuncPtr
function GX2RFreeFuncPtr (line 91) | GX2RFreeFuncPtr
function initialiseGx2rAllocator (line 97) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_resource.h
function namespace (line 6) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_shaders.cpp
type cafe::gx2 (line 5) | namespace cafe::gx2
function GX2RSetVertexUniformBlock (line 8) | void
function GX2RSetPixelUniformBlock (line 18) | void
function GX2RSetGeometryUniformBlock (line 28) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_shaders.h
function namespace (line 4) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_surface.cpp
type cafe::gx2 (line 8) | namespace cafe::gx2
type internal (line 13) | namespace internal
function getSurfaceData (line 16) | static void
function BOOL (line 50) | BOOL
function BOOL (line 84) | BOOL
function GX2RDestroySurfaceEx (line 111) | void
function GX2RLockSurfaceEx (line 128) | virt_ptr<void>
function GX2RUnlockSurfaceEx (line 155) | void
function BOOL (line 171) | BOOL
function GX2RInvalidateSurface (line 177) | void
FILE: src/libdecaf/src/cafe/libraries/gx2/gx2r_surface.h
function namespace (line 6) | namespace cafe::gx2
FILE: src/libdecaf/src/cafe/libraries/h264/h264.cpp
type cafe::h264 (line 3) | namespace cafe::h264
function rpl_entry (line 6) | static int32_t
FILE: src/libdecaf/src/cafe/libraries/h264/h264.h
function namespace (line 4) | namespace cafe::h264
FILE: src/libdecaf/src/cafe/libraries/h264/h264_bitstream.h
function namespace (line 4) | namespace cafe::h264
function readU1 (line 28) | uint8_t readU1()
function readU (line 45) | uint32_t readU(size_t n)
function readU2 (line 55) | uint8_t readU2()
function readU3 (line 60) | uint8_t readU3()
function readU4 (line 65) | uint8_t readU4()
function readU5 (line 70) | uint8_t readU5()
function readU8 (line 75) | uint8_t readU8()
function readU16 (line 88) | uint16_t readU16()
function readUE (line 93) | uint32_t readUE()
function readSE (line 107) | int32_t readSE()
function byteAligned (line 120) | bool byteAligned()
function eof (line 125) | bool eof()
function bytesRead (line 130) | size_t bytesRead()
FILE: src/libdecaf/src/cafe/libraries/h264/h264_decode.cpp
type cafe::h264 (line 13) | namespace cafe::h264
type internal (line 24) | namespace internal
function getWorkMemory (line 27) | virt_ptr<H264WorkMemory>
function initialiseWorkMemory (line 39) | static void
function getLevelMemoryRequirement (line 59) | static uint32_t
function H264Error (line 100) | H264Error
function H264Error (line 133) | H264Error
function H264Error (line 170) | H264Error
function H264Error (line 216) | H264Error
function H264Error (line 238) | H264Error
function H264Error (line 264) | H264Error
function H264Error (line 281) | H264Error
function H264Error (line 292) | H264Error
function H264Error (line 302) | H264Error
function H264Error (line 312) | H264Error
function H264Error (line 325) | H264Error
function H264Error (line 336) | H264Error
function H264Error (line 346) | H264Error
function H264Error (line 356) | H264Error
FILE: src/libdecaf/src/cafe/libraries/h264/h264_decode.h
function namespace (line 7) | namespace cafe::h264
FILE: src/libdecaf/src/cafe/libraries/h264/h264_decode_ffmpeg.cpp
type cafe::h264 (line 30) | namespace cafe::h264
type H264CodecMemory (line 34) | struct H264CodecMemory
type cafe::h264::ffmpeg (line 54) | namespace cafe::h264::ffmpeg
function receiveFrames (line 57) | static int
function H264Error (line 191) | H264Error
function H264Error (line 230) | H264Error
function H264Error (line 259) | H264Error
function H264Error (line 285) | H264Error
function H264Error (line 400) | H264Error
function H264Error (line 424) | H264Error
function H264Error (line 451) | H264Error
function H264Error (line 480) | H264Error
FILE: src/libdecaf/src/cafe/libraries/h264/h264_decode_ffmpeg.h
function namespace (line 4) | namespace cafe::h264::ffmpeg
FILE: src/libdecaf/src/cafe/libraries/h264/h264_decode_null.cpp
type cafe::h264 (line 11) | namespace cafe::h264
type H264CodecMemory (line 15) | struct H264CodecMemory
type cafe::h264::null (line 31) | namespace cafe::h264::null
function receiveFrames (line 44) | static int
function H264Error (line 130) | H264Error
function H264Error (line 149) | H264Error
function H264Error (line 173) | H264Error
function H264Error (line 199) | H264Error
function H264Error (line 300) | H264Error
function H264Error (line 320) | H264Error
function H264Error (line 340) | H264Error
FILE: src/libdecaf/src/cafe/libraries/h264/h264_decode_null.h
function namespace (line 4) | namespace cafe::h264::null
FILE: src/libdecaf/src/cafe/libraries/h264/h264_stream.cpp
type cafe::h264 (line 11) | namespace cafe::h264
type internal (line 14) | namespace internal
function clearPictureParameterSet (line 17) | static void
function clearSequenceParameterSet (line 25) | static void
function rbspHasMoreData (line 33) | static bool
function rbspReadTrailingBits (line 59) | static void
function readScalingList (line 71) | static
Condensed preview — 1742 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,810K chars).
[
{
"path": ".clang-format",
"chars": 3395,
"preview": "---\nLanguage: Cpp\n# BasedOnStyle: LLVM\nAccessModifierOffset: -3\nAlignAfterOpenBracket: Align\nAlignConsecutiveAss"
},
{
"path": ".github/workflows/ccpp.yml",
"chars": 7634,
"preview": "name: C/C++ CI\n\non: [push, pull_request]\n\njobs:\n windows-build:\n runs-on: windows-2019\n strategy:\n fail-fast"
},
{
"path": ".gitignore",
"chars": 107,
"preview": "build/\ndump/\nmlc/\nslc/\nhfio/\nsdcard/\ndocs/\n.vs/\n*.txt\n!CMakeLists.txt\n*.elf\n*.rpx\n*.o\n!tests/hle/bin/*.rpx\n"
},
{
"path": ".gitmodules",
"chars": 1774,
"preview": "[submodule \"libraries/pugixml\"]\n\tpath = libraries/pugixml\n\turl = https://github.com/zeux/pugixml.git\n[submodule \"librari"
},
{
"path": "BUILDING.md",
"chars": 3744,
"preview": "# Building decaf-emu from source\n- [Windows](#windows)\n- [Linux](#Linux)\n- [MacOS](#MacOS)\n- [CMake](#CMake)\n- [Troubles"
},
{
"path": "CMakeLists.txt",
"chars": 9886,
"preview": "cmake_minimum_required(VERSION 3.2)\n\nproject(decaf-emu C CXX)\nlist(APPEND CMAKE_MODULE_PATH \"${CMAKE_CURRENT_SOURCE_DIR}"
},
{
"path": "CMakeModules/FindCARES.cmake",
"chars": 3785,
"preview": "# Distributed under the OSI-approved BSD 3-Clause License. See accompanying\n# file Copyright.txt or https://cmake.org/l"
},
{
"path": "CMakeModules/FindFFMPEG.cmake",
"chars": 884,
"preview": "macro(find_component COMPONENT LIBRARY HEADER)\n find_path(${COMPONENT}_INCLUDE_DIR NAMES \"${HEADER}\" HINTS \"/usr/inclu"
},
{
"path": "CMakeModules/FindLibUV.cmake",
"chars": 3967,
"preview": "# Distributed under the OSI-approved BSD 3-Clause License. See accompanying\n# file Copyright.txt or https://cmake.org/l"
},
{
"path": "CMakeModules/FindSDL2.cmake",
"chars": 7658,
"preview": "# Distributed under the OSI-approved BSD 3-Clause License. See accompanying\n# file Copyright.txt or https://cmake.org/li"
},
{
"path": "CMakeModules/FindWAYLAND.cmake",
"chars": 3293,
"preview": "# Try to find Wayland on a Unix system\n#\n# This will define:\n#\n# WAYLAND_FOUND - True if Wayland is found\n# WA"
},
{
"path": "CMakeModules/FindXCB.cmake",
"chars": 1310,
"preview": "# - FindXCB\n#\n# Copyright (C) 2015 Valve Corporation\n\nfind_package(PkgConfig)\n\nif(NOT XCB_FIND_COMPONENTS)\n set(XCB_F"
},
{
"path": "CMakeModules/GetGitRevisionDescription.cmake",
"chars": 4629,
"preview": "# - Returns a version string from Git\n#\n# These functions force a re-configure on each git commit so that you can\n# trus"
},
{
"path": "CMakeModules/GetGitRevisionDescription.cmake.in",
"chars": 1282,
"preview": "# \n# Internal file for GetGitRevisionDescription.cmake\n#\n# Requires CMake 2.6 or newer (uses the 'function' command)\n#\n#"
},
{
"path": "CMakePresets.json",
"chars": 455,
"preview": "{\n \"version\": 3,\n \"cmakeMinimumRequired\": {\n \"major\": 3,\n \"minor\": 21,\n \"patch\": 0\n },\n \"configurePresets\":"
},
{
"path": "LICENSE.md",
"chars": 35141,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "README.md",
"chars": 1913,
"preview": "[](https://github.com/decaf-"
},
{
"path": "libraries/CMakeLists.txt",
"chars": 4375,
"preview": "# addrlib\nadd_library(addrlib STATIC\n \"addrlib/src/addrinterface.cpp\"\n \"addrlib/src/core/addrelemlib.cpp\"\n \"add"
},
{
"path": "libraries/bin2c.cmake",
"chars": 1451,
"preview": "# https://github.com/wjakob/nanogui/blob/f9c3b7a/resources/bin2c.cmake\n# Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@e"
},
{
"path": "resources/CMakeLists.txt",
"chars": 775,
"preview": "project(resources)\n\nset(Fonts\n fonts/CafeCn.ttf\n fonts/CafeKr.ttf\n fonts/CafeStd.ttf\n fonts/CafeTw.ttf\n fonts/"
},
{
"path": "resources/fonts/DejaVuSansMono.LICENSE",
"chars": 8792,
"preview": "Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.\nGlyphs imported from Arev fonts are (c) Tavmjo"
},
{
"path": "resources/fonts/NotoSansCJK.LICENSE",
"chars": 4599,
"preview": "Copyright (c) <dates>, <Copyright Holder> (<URL|email>),\nwith Reserved Font Name <Reserved Font Name>.\nCopyright (c) <da"
},
{
"path": "resources/hidpi.manifest",
"chars": 509,
"preview": "<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\" xmlns:asmv3=\"urn:schemas-microsoft-com:asm.v3\" "
},
{
"path": "src/CMakeLists.txt",
"chars": 291,
"preview": "include_directories(\".\")\n\nadd_subdirectory(common)\nadd_subdirectory(libconfig)\nadd_subdirectory(libcpu)\nadd_subdirectory"
},
{
"path": "src/common/CMakeLists.txt",
"chars": 540,
"preview": "project(common)\n\ninclude_directories(\".\")\n\nfile(GLOB_RECURSE SOURCE_FILES *.cpp)\nfile(GLOB_RECURSE HEADER_FILES *.h *.in"
},
{
"path": "src/common/align.h",
"chars": 1072,
"preview": "#pragma once\n#include <cstddef>\n\ntemplate<typename Type>\nconstexpr inline Type\nalign_up(Type value, size_t alignment)\n{\n"
},
{
"path": "src/common/atomicqueue.h",
"chars": 2737,
"preview": "#pragma once\n#include <atomic>\n\n/**\n * Multi-producer multi-consumer queue.\n * This is unsafe and full of assumptions, s"
},
{
"path": "src/common/bit_cast.h",
"chars": 609,
"preview": "#pragma once\n#include <cstring>\n#include <memory>\n#include <type_traits>\n\n// reinterpret_cast for value types\ntemplate<t"
},
{
"path": "src/common/bitfield.h",
"chars": 5879,
"preview": "#pragma once\n#include \"bit_cast.h\"\n#include \"bitutils.h\"\n#include \"decaf_assert.h\"\n\n#include <common/type_traits.h>\n#inc"
},
{
"path": "src/common/bitutils.h",
"chars": 4552,
"preview": "#pragma once\n#include \"platform.h\"\n#include <climits>\n#include <cstdint>\n#include <cstddef>\n\n#ifdef PLATFORM_WINDOWS\n#in"
},
{
"path": "src/common/byte_swap.h",
"chars": 1831,
"preview": "#pragma once\n#include \"platform.h\"\n#include \"bit_cast.h\"\n#include <cstdint>\n\n#ifdef PLATFORM_LINUX\n#include <byteswap.h>"
},
{
"path": "src/common/byte_swap_array.h",
"chars": 3593,
"preview": "#pragma once\n#include \"byte_swap.h\"\n#include \"platform.h\"\n#include \"platform_intrin.h\"\n#include <vector>\n\ntemplate<typen"
},
{
"path": "src/common/cbool.h",
"chars": 149,
"preview": "#pragma once\n#include <cstdint>\n\n#ifndef BOOL\nusing BOOL = int32_t;\n#endif\n\n#ifndef TRUE\n#define TRUE 1\n#endif\n\n#ifndef "
},
{
"path": "src/common/configstorage.h",
"chars": 945,
"preview": "#pragma once\n#include <functional>\n#include <memory>\n#include <mutex>\n#include <vector>\n\ntemplate<typename SettingsType>"
},
{
"path": "src/common/count_of.h",
"chars": 102,
"preview": "#pragma once\n#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))\n"
},
{
"path": "src/common/datahash.h",
"chars": 2160,
"preview": "#pragma once\n\n#define XXH_INLINE_ALL\n#define XXH_CPU_LITTLE_ENDIAN 1\n#define XXH_STATIC_LINKING_ONLY\n#include \"xxhash.h\""
},
{
"path": "src/common/decaf_assert.h",
"chars": 1866,
"preview": "#pragma once\n#include <string>\n#include \"platform.h\"\n#include \"platform_compiler.h\"\n#include \"platform_stacktrace.h\"\n\n#i"
},
{
"path": "src/common/enum_end.inl",
"chars": 161,
"preview": "\n#undef ENUM_BEG\n#undef ENUM_END\n#undef ENUM_VALUE\n\n#undef FLAGS_BEG\n#undef FLAGS_END\n#undef FLAGS_VALUE\n\n#undef ENUM_NA"
},
{
"path": "src/common/enum_start.inl",
"chars": 1624,
"preview": "\n#ifndef ENUM_BEG\n#include <cstdint>\n#include <type_traits>\n#define ENUM_BEG(name, type) namespace name##_ { enum Value "
},
{
"path": "src/common/enum_string_declare.inl",
"chars": 263,
"preview": "\n#define ENUM_BEG(name, type) \\\n std::string to_string(name enumValue);\n\n#define ENUM_VALUE(key, value)\n\n#define ENUM_"
},
{
"path": "src/common/enum_string_define.inl",
"chars": 663,
"preview": "\n#define ENUM_BEG(name, type) \\\n std::string to_string(name enumValue) { \\\n using namespace name##_; \\\n swit"
},
{
"path": "src/common/fastregionmap.h",
"chars": 2711,
"preview": "#pragma once\n#include <atomic>\n#include <common/decaf_assert.h>\n\nstatic_assert(sizeof(std::atomic<void*>) == sizeof(void"
},
{
"path": "src/common/fixed.h",
"chars": 1987,
"preview": "#pragma once\n#include \"bitfield.h\"\n#include <cnl/fixed_point.h>\n\nusing ufixed_16_16_t = cnl::fixed_point<uint32_t, -16>;"
},
{
"path": "src/common/floatutils.h",
"chars": 4040,
"preview": "#pragma once\n#include \"bit_cast.h\"\n#include \"bitutils.h\"\n#include <numeric>\n\nunion FloatBitsSingle\n{\n static const uns"
},
{
"path": "src/common/frameallocator.h",
"chars": 996,
"preview": "#pragma once\n#include <cstdint>\n#include \"align.h\"\n#include \"decaf_assert.h\"\n\nclass FrameAllocator\n{\npublic:\n FrameAll"
},
{
"path": "src/common/log.h",
"chars": 2202,
"preview": "#pragma once\n#include <fmt/core.h>\n#include <memory>\n#include <string_view>\n\n/**\n * Looks and acts like a spdlog logger "
},
{
"path": "src/common/make_array.h",
"chars": 390,
"preview": "#pragma once\n#include <array>\n\ntemplate <class ArrayType, class... ValueTypes>\nconstexpr auto make_array(ValueTypes&&..."
},
{
"path": "src/common/murmur3.h",
"chars": 804,
"preview": "//-----------------------------------------------------------------------------\n// MurmurHash3 was written by Austin App"
},
{
"path": "src/common/pch.h",
"chars": 533,
"preview": "#pragma once\n\n#include <array>\n#include <atomic>\n#include <chrono>\n#include <condition_variable>\n#include <cstdint>\n#inc"
},
{
"path": "src/common/platform.h",
"chars": 251,
"preview": "#pragma once\n\n#if defined(WIN32) || defined(_WIN32) || defined(_MSC_VER)\n#define PLATFORM_WINDOWS\n#elif __APPLE__\n#defin"
},
{
"path": "src/common/platform_compiler.h",
"chars": 1197,
"preview": "#pragma once\n\n// Macro to indicate that a branch is likely or unlikely to be taken.\n#ifdef __GNUC__ // Includes Clang.\n"
},
{
"path": "src/common/platform_debug.h",
"chars": 142,
"preview": "#pragma once\n#include <string>\n\nnamespace platform\n{\n\nvoid\ndebugBreak();\n\nvoid\ndebugLog(const std::string& message);\n\n} "
},
{
"path": "src/common/platform_dir.h",
"chars": 343,
"preview": "#pragma once\n#include <string>\n\nnamespace platform\n{\n\nbool\ncreateDirectory(const std::string &path);\n\nbool\ncreateParentD"
},
{
"path": "src/common/platform_exception.h",
"chars": 1131,
"preview": "#pragma once\n#include <functional>\n\nnamespace platform\n{\n\nstruct Fiber;\n\nstruct Exception\n{\n enum Type\n {\n Acce"
},
{
"path": "src/common/platform_fiber.h",
"chars": 349,
"preview": "#pragma once\n#include <functional>\n\nnamespace platform\n{\n\nstruct Fiber;\n\nusing FiberEntryPoint = std::function<void(void"
},
{
"path": "src/common/platform_intrin.h",
"chars": 169,
"preview": "#pragma once\n\n#if defined(_MSC_VER) || defined(__SSE3__)\n#define PLATFORM_HAS_SSE3\n#endif\n\n#if defined(_MSC_VER)\n#includ"
},
{
"path": "src/common/platform_memory.h",
"chars": 1242,
"preview": "#pragma once\n#include <cstddef>\n#include <cstdint>\n#include <string>\n\nnamespace platform\n{\n\nenum class ProtectFlags\n{\n "
},
{
"path": "src/common/platform_socket.h",
"chars": 508,
"preview": "#pragma once\n#include \"platform.h\"\n\n#ifdef PLATFORM_WINDOWS\n#define WIN32_LEAN_AND_MEAN\n#include <WinSock2.h>\n#include <"
},
{
"path": "src/common/platform_stacktrace.h",
"chars": 266,
"preview": "#pragma once\n#include <string>\n\nnamespace platform\n{\n\nstruct StackTrace;\n\nStackTrace *\ncaptureStackTrace();\n\nvoid\nfreeSt"
},
{
"path": "src/common/platform_thread.h",
"chars": 198,
"preview": "#pragma once\n#include <thread>\n#include <string>\n\nnamespace platform\n{\n\nvoid\nsetThreadName(std::thread *thread,\n\t\t\t con"
},
{
"path": "src/common/platform_time.h",
"chars": 153,
"preview": "#pragma once\n#include <ctime>\n\nnamespace platform\n{\n\ntm\nlocaltime(const std::time_t& time);\n\ntime_t\nmake_gm_time(std::tm"
},
{
"path": "src/common/platform_winapi_string.h",
"chars": 1476,
"preview": "#pragma once\n#include \"platform.h\"\n\n#ifdef PLATFORM_WINDOWS\n#include <string>\n#include <string_view>\n\n#define WIN32_LEAN"
},
{
"path": "src/common/pow.h",
"chars": 147,
"preview": "#pragma once\n\ntemplate<typename Type>\ninline Type\nLog2(Type x)\n{\n Type y = 0;\n\n while (x > 1) {\n x >>= 1;\n "
},
{
"path": "src/common/rangecombiner.h",
"chars": 1169,
"preview": "#pragma once\n\n// void(_ObjType object, _OffsetType offset, _SizeType size)\ntemplate<typename _ObjType, typename _OffsetT"
},
{
"path": "src/common/src/assert.cpp",
"chars": 2769,
"preview": "#include \"decaf_assert.h\"\n#include \"log.h\"\n#include \"platform.h\"\n#include \"platform_stacktrace.h\"\n\n#include <fmt/format."
},
{
"path": "src/common/src/log.cpp",
"chars": 508,
"preview": "#include \"log.h\"\n#include <spdlog/spdlog.h>\n\nLogger gLog;\n\nvoid\nLogger::log(Level lvl, std::string_view msg)\n{\n if (mL"
},
{
"path": "src/common/src/murmur3.cpp",
"chars": 7656,
"preview": "//-----------------------------------------------------------------------------\n// MurmurHash3 was written by Austin App"
},
{
"path": "src/common/src/platform_posix_debug.cpp",
"chars": 293,
"preview": "#include \"platform.h\"\n#include \"platform_debug.h\"\n\n#ifdef PLATFORM_POSIX\n\nnamespace platform\n{\n\nvoid\ndebugBreak()\n{\n /"
},
{
"path": "src/common/src/platform_posix_dir.cpp",
"chars": 1360,
"preview": "#include \"platform.h\"\n#include \"platform_dir.h\"\n\n#ifdef PLATFORM_POSIX\n#include <errno.h>\n#include <fmt/core.h>\n#include"
},
{
"path": "src/common/src/platform_posix_exception.cpp",
"chars": 3445,
"preview": "#include <vector>\n#include \"platform.h\"\n#include \"platform_exception.h\"\n#include \"platform_fiber.h\"\n#include \"log.h\"\n\n#i"
},
{
"path": "src/common/src/platform_posix_fiber.cpp",
"chars": 1619,
"preview": "#include \"platform.h\"\n#include \"platform_fiber.h\"\n#include \"log.h\"\n\n#ifdef PLATFORM_POSIX\n#include <array>\n#include <err"
},
{
"path": "src/common/src/platform_posix_memory.cpp",
"chars": 7088,
"preview": "#include \"platform.h\"\n#include \"platform_memory.h\"\n#include \"log.h\"\n\n#ifdef PLATFORM_POSIX\n#include <common/decaf_assert"
},
{
"path": "src/common/src/platform_posix_socket.cpp",
"chars": 502,
"preview": "#include \"platform_socket.h\"\n\n#ifdef PLATFORM_POSIX\n#include <errno.h>\n#include <unistd.h>\n\nnamespace platform\n{\n\nbool s"
},
{
"path": "src/common/src/platform_posix_stacktrace.cpp",
"chars": 454,
"preview": "#include \"decaf_assert.h\"\n#include \"platform.h\"\n#include \"platform_stacktrace.h\"\n\n#ifdef PLATFORM_POSIX\n#include <stdexc"
},
{
"path": "src/common/src/platform_posix_thread.cpp",
"chars": 503,
"preview": "#include \"platform.h\"\n#include \"platform_thread.h\"\n\n#ifdef PLATFORM_POSIX\n#include <cstdlib>\n#include <pthread.h>\n\nnames"
},
{
"path": "src/common/src/platform_posix_time.cpp",
"chars": 314,
"preview": "#include \"platform.h\"\n#include \"platform_time.h\"\n\n#ifdef PLATFORM_POSIX\n#include <time.h>\n\nnamespace platform\n{\n\ntm\nloca"
},
{
"path": "src/common/src/platform_win_debug.cpp",
"chars": 307,
"preview": "#include \"platform.h\"\n\n#ifdef PLATFORM_WINDOWS\n#include \"platform_debug.h\"\n\n#define WIN32_LEAN_AND_MEAN\n#include <Window"
},
{
"path": "src/common/src/platform_win_dir.cpp",
"chars": 2043,
"preview": "#include \"platform.h\"\n\n#ifdef PLATFORM_WINDOWS\n#include \"platform_dir.h\"\n#include \"platform_winapi_string.h\"\n\n#define WI"
},
{
"path": "src/common/src/platform_win_exception.cpp",
"chars": 1772,
"preview": "#include \"platform.h\"\n\n#ifdef PLATFORM_WINDOWS\n#include \"platform_exception.h\"\n#include \"platform_fiber.h\"\n\n#define WIN3"
},
{
"path": "src/common/src/platform_win_fiber.cpp",
"chars": 986,
"preview": "#include \"platform.h\"\n\n#ifdef PLATFORM_WINDOWS\n#include \"platform_fiber.h\"\n\n#define WIN32_LEAN_AND_MEAN\n#include <Window"
},
{
"path": "src/common/src/platform_win_memory.cpp",
"chars": 7389,
"preview": "#include \"platform.h\"\n\n#ifdef PLATFORM_WINDOWS\n#include \"decaf_assert.h\"\n#include \"log.h\"\n#include \"platform_memory.h\"\n\n"
},
{
"path": "src/common/src/platform_win_socket.cpp",
"chars": 417,
"preview": "#include \"platform_socket.h\"\n\n#ifdef PLATFORM_WINDOWS\nnamespace platform\n{\n\nbool socketWouldBlock(int result)\n{\n retur"
},
{
"path": "src/common/src/platform_win_stacktrace.cpp",
"chars": 1479,
"preview": "#include \"platform.h\"\n\n#ifdef PLATFORM_WINDOWS\n#include \"platform_stacktrace.h\"\n\n#define WIN32_LEAN_AND_MEAN\n#include <f"
},
{
"path": "src/common/src/platform_win_thread.cpp",
"chars": 1078,
"preview": "#include \"platform.h\"\n\n#ifdef PLATFORM_WINDOWS\n#include \"platform_thread.h\"\n\n#define WIN32_LEAN_AND_MEAN\n#include <Windo"
},
{
"path": "src/common/src/platform_win_time.cpp",
"chars": 323,
"preview": "#include \"platform.h\"\n\n#ifdef PLATFORM_WINDOWS\n#include \"platform_time.h\"\n\nnamespace platform\n{\n\ntm\nlocaltime(const std:"
},
{
"path": "src/common/structsize.h",
"chars": 1490,
"preview": "#pragma once\n#include <cstddef>\n#include \"platform.h\"\n\n// Workaround weird macro concat ## behaviour\n#define PP_CAT(a, b"
},
{
"path": "src/common/strutils.h",
"chars": 3744,
"preview": "#pragma once\n#include \"platform.h\"\n\n#include <algorithm>\n#include <cstdarg>\n#include <cstdio>\n#include <cstring>\n#includ"
},
{
"path": "src/common/teenyheap.h",
"chars": 3034,
"preview": "#pragma once\n#include \"align.h\"\n#include \"decaf_assert.h\"\n#include <algorithm>\n#include <map>\n#include <mutex>\n#include "
},
{
"path": "src/common/tga_encoder.cpp",
"chars": 907,
"preview": "#include \"log.h\"\n#include \"tga_encoder.h\"\n#include <fstream>\n\nnamespace tga\n{\n\nbool\nwriteFile(const std::string &filenam"
},
{
"path": "src/common/tga_encoder.h",
"chars": 810,
"preview": "#pragma once\n#include <cstdint>\n#include <string>\n\nnamespace tga\n{\n\n#pragma pack(push, 1)\n\nstruct FileHeader\n{\n enum I"
},
{
"path": "src/common/type_list.h",
"chars": 58,
"preview": "#pragma once\n\ntemplate<typename...>\nstruct type_list\n{\n};\n"
},
{
"path": "src/common/type_traits.h",
"chars": 479,
"preview": "#pragma once\n#include <type_traits>\n\n// Same as std::underlying_type but works for non-enum Types\ntemplate<class T, bool"
},
{
"path": "src/common/vulkan_hpp.h",
"chars": 447,
"preview": "#pragma once\n\n#include <vulkan/vk_platform.h>\n\n#ifdef VK_USE_PLATFORM_XLIB_KHR\n#include <X11/Xlib.h>\n#include <X11/Xutil"
},
{
"path": "src/common/xxhash.c",
"chars": 33285,
"preview": "/*\n* xxHash - Fast Hash algorithm\n* Copyright (C) 2012-2016, Yann Collet\n*\n* BSD 2-Clause License (http://www.opensou"
},
{
"path": "src/common/xxhash.h",
"chars": 13968,
"preview": "/*\n xxHash - Extremely Fast Hash algorithm\n Header File\n Copyright (C) 2012-2016, Yann Collet.\n\n BSD 2-Clause Li"
},
{
"path": "src/decaf-cli/CMakeLists.txt",
"chars": 486,
"preview": "project(decaf-cli)\n\ninclude_directories(\".\")\n\nfile(GLOB_RECURSE SOURCE_FILES *.cpp)\nfile(GLOB_RECURSE HEADER_FILES *.h)\n"
},
{
"path": "src/decaf-cli/config.cpp",
"chars": 469,
"preview": "#include \"config.h\"\n\nnamespace config\n{\n\nnamespace system\n{\n\nint timeout_ms = 0;\n\n} // namespace system\n\nbool\nloadFronte"
},
{
"path": "src/decaf-cli/config.h",
"chars": 297,
"preview": "#pragma once\n#include <libconfig/config_toml.h>\n#include <string>\n#include <toml++/toml.h>\n\nnamespace config\n{\n\nnamespac"
},
{
"path": "src/decaf-cli/decafcli.cpp",
"chars": 1992,
"preview": "#include \"decafcli.h\"\n#include \"config.h\"\n\n#include <chrono>\n#include <condition_variable>\n#include <libgpu/gpu_graphics"
},
{
"path": "src/decaf-cli/decafcli.h",
"chars": 264,
"preview": "#pragma once\n#include <libdecaf/decaf.h>\n#include <string>\n#include <thread>\n#include <spdlog/spdlog.h>\n\nusing namespace"
},
{
"path": "src/decaf-cli/main.cpp",
"chars": 5106,
"preview": "#include \"config.h\"\n#include \"decafcli.h\"\n\n#include <common/decaf_assert.h>\n#include <common/log.h>\n#include <common/pla"
},
{
"path": "src/decaf-qt/CMakeLists.txt",
"chars": 3979,
"preview": "project(decaf-qt)\nset(CMAKE_AUTOMOC ON)\nset(CMAKE_INCLUDE_CURRENT_DIR ON)\nset(CMAKE_CXX_STANDARD 17)\n\ninclude_directorie"
},
{
"path": "src/decaf-qt/resources/resources.qrc",
"chars": 782,
"preview": "<RCC>\n <qresource prefix=\"images\">\n <file alias=\"logo\">../../../resources/logo.svg</file>\n <file alias=\"icon\">../"
},
{
"path": "src/decaf-qt/src/aboutdialog.h",
"chars": 507,
"preview": "#pragma once\n#include \"ui_about.h\"\n\n#include <QDialog>\n#include <decaf_buildinfo.h>\n\nclass AboutDialog : public QDialog\n"
},
{
"path": "src/decaf-qt/src/debugger/addresstextdocumentwidget.cpp",
"chars": 25407,
"preview": "#include \"addresstextdocumentwidget.h\"\n\n#include <QApplication>\n#include <QAbstractTextDocumentLayout>\n#include <QClipbo"
},
{
"path": "src/decaf-qt/src/debugger/addresstextdocumentwidget.h",
"chars": 4979,
"preview": "#pragma once\n#include <QAbstractScrollArea>\n#include <QAbstractTextDocumentLayout>\n#include <QTextCharFormat>\n#include <"
},
{
"path": "src/decaf-qt/src/debugger/breakpointsmodel.h",
"chars": 2953,
"preview": "#pragma once\n#include <QAbstractTableModel>\n#include <vector>\n\n#include \"debugdata.h\"\n\nclass BreakpointsModel : public Q"
},
{
"path": "src/decaf-qt/src/debugger/breakpointswindow.cpp",
"chars": 2025,
"preview": "#include \"breakpointswindow.h\"\n#include \"ui_breakpointswindow.h\"\n\n#include \"debugdata.h\"\n#include \"breakpointsmodel.h\"\n\n"
},
{
"path": "src/decaf-qt/src/debugger/breakpointswindow.h",
"chars": 652,
"preview": "#pragma once\n#include <QWidget>\n\nnamespace Ui\n{\nclass BreakpointsWindow;\n}\n\nclass DebugData;\nclass BreakpointsModel;\n\ncl"
},
{
"path": "src/decaf-qt/src/debugger/debugdata.cpp",
"chars": 2459,
"preview": "#include \"debugdata.h\"\n\n#include <libcpu/cpu_breakpoints.h>\n#include <libcpu/jit_stats.h>\n#include <libdecaf/decaf_debug"
},
{
"path": "src/decaf-qt/src/debugger/debugdata.h",
"chars": 3254,
"preview": "#pragma once\n#include <libcpu/cpu_breakpoints.h>\n#include <libcpu/jit_stats.h>\n#include <libdecaf/decaf_debug_api.h>\n#in"
},
{
"path": "src/decaf-qt/src/debugger/debuggershortcuts.h",
"chars": 214,
"preview": "#pragma once\n#include <QAction>\n\nstruct DebuggerShortcuts\n{\n QAction *toggleBreakpoint;\n QAction *navigateForward;\n "
},
{
"path": "src/decaf-qt/src/debugger/debuggerwindow.cpp",
"chars": 15239,
"preview": "#include \"debuggerwindow.h\"\n#include \"ui_debuggerwindow.h\"\n\n#include \"debugdata.h\"\n\n#include \"breakpointswindow.h\"\n#incl"
},
{
"path": "src/decaf-qt/src/debugger/debuggerwindow.h",
"chars": 2823,
"preview": "#pragma once\n#include \"debuggershortcuts.h\"\n\n#include <QMainWindow>\n#include <DockManager.h>\n\n#include <libdecaf/decaf_d"
},
{
"path": "src/decaf-qt/src/debugger/disassemblywidget.cpp",
"chars": 19266,
"preview": "#include \"disassemblywidget.h\"\n\n#include <QtEndian>\n#include <QPainter>\n#include <QScrollBar>\n#include <QTextBlock>\n\n#in"
},
{
"path": "src/decaf-qt/src/debugger/disassemblywidget.h",
"chars": 3713,
"preview": "#pragma once\n#include \"addresstextdocumentwidget.h\"\n#include \"debugdata.h\"\n\n#ifndef Q_MOC_RUN\n// moc struggles parsing e"
},
{
"path": "src/decaf-qt/src/debugger/disassemblywindow.cpp",
"chars": 1543,
"preview": "#include \"debugdata.h\"\n#include \"debuggershortcuts.h\"\n#include \"disassemblywindow.h\"\n#include \"ui_disassemblywindow.h\"\n\n"
},
{
"path": "src/decaf-qt/src/debugger/disassemblywindow.h",
"chars": 611,
"preview": "#pragma once\n#include <QWidget>\n\nnamespace Ui\n{\nclass DisassemblyWindow;\n}\n\nclass DebugData;\nstruct DebuggerShortcuts;\n\n"
},
{
"path": "src/decaf-qt/src/debugger/functionsmodel.h",
"chars": 3170,
"preview": "#pragma once\n#include <QAbstractTableModel>\n\n#include \"debugdata.h\"\n\nclass FunctionsModel : public QAbstractTableModel\n{"
},
{
"path": "src/decaf-qt/src/debugger/functionswindow.cpp",
"chars": 1927,
"preview": "#include \"functionswindow.h\"\n#include \"functionsmodel.h\"\n#include \"debugdata.h\"\n\n#include \"ui_functionswindow.h\"\n\n#inclu"
},
{
"path": "src/decaf-qt/src/debugger/functionswindow.h",
"chars": 675,
"preview": "#pragma once\n#include <QWidget>\n\nnamespace Ui\n{\nclass FunctionsWindow;\n}\n\nclass DebugData;\nclass FunctionsModel;\nclass Q"
},
{
"path": "src/decaf-qt/src/debugger/jitprofilingmodel.h",
"chars": 4074,
"preview": "#pragma once\n#include <QAbstractTableModel>\n\n#include \"debugdata.h\"\n\nclass JitProfilingModel : public QAbstractTableMode"
},
{
"path": "src/decaf-qt/src/debugger/jitprofilingwindow.cpp",
"chars": 3564,
"preview": "#include \"jitprofilingwindow.h\"\n#include \"ui_jitprofilingwindow.h\"\n\n#include \"debugdata.h\"\n#include \"jitprofilingmodel.h"
},
{
"path": "src/decaf-qt/src/debugger/jitprofilingwindow.h",
"chars": 819,
"preview": "#pragma once\n#include <QWidget>\n\nnamespace Ui\n{\nclass JitProfilingWindow;\n}\n\nclass DebugData;\nclass JitProfilingModel;\nc"
},
{
"path": "src/decaf-qt/src/debugger/memorywidget.cpp",
"chars": 13918,
"preview": "#include \"memorywidget.h\"\n\n#include <cctype>\n#include <libdecaf/decaf_debug_api.h>\n\n#include <QAction>\n#include <QApplic"
},
{
"path": "src/decaf-qt/src/debugger/memorywidget.h",
"chars": 3141,
"preview": "#pragma once\n#include \"addresstextdocumentwidget.h\"\n#include <QAbstractScrollArea>\n#include <QAbstractTextDocumentLayout"
},
{
"path": "src/decaf-qt/src/debugger/memorywindow.cpp",
"chars": 1615,
"preview": "#include \"debuggershortcuts.h\"\n#include \"memorywindow.h\"\n#include \"memorywidget.h\"\n\n#include \"ui_memorywindow.h\"\n\nMemory"
},
{
"path": "src/decaf-qt/src/debugger/memorywindow.h",
"chars": 482,
"preview": "#pragma once\n#include <QWidget>\n\nnamespace Ui\n{\nclass MemoryWindow;\n}\n\nstruct DebuggerShortcuts;\n\nclass MemoryWindow : p"
},
{
"path": "src/decaf-qt/src/debugger/registerswindow.cpp",
"chars": 8387,
"preview": "#include \"registerswindow.h\"\n\n#include <QFontDatabase>\n#include <QTextBlock>\n#include <QTextDocument>\n#include <QVBoxLay"
},
{
"path": "src/decaf-qt/src/debugger/registerswindow.h",
"chars": 1072,
"preview": "#pragma once\n#include <array>\n#include <cstdint>\n#include <QWidget>\n#include <QPlainTextEdit>\n#include <QTextBlock>\n\n#in"
},
{
"path": "src/decaf-qt/src/debugger/segmentsmodel.h",
"chars": 3222,
"preview": "#pragma once\n#include <QAbstractTableModel>\n#include <vector>\n\n#include \"debugdata.h\"\n\nclass SegmentsModel : public QAbs"
},
{
"path": "src/decaf-qt/src/debugger/segmentswindow.cpp",
"chars": 1950,
"preview": "#include \"segmentswindow.h\"\n#include \"ui_segmentswindow.h\"\n\n#include \"debugdata.h\"\n#include \"segmentsmodel.h\"\n\nSegmentsW"
},
{
"path": "src/decaf-qt/src/debugger/segmentswindow.h",
"chars": 621,
"preview": "#pragma once\n#include <QWidget>\n#include <memory>\n\nnamespace Ui\n{\nclass SegmentsWindow;\n}\n\nclass DebugData;\nclass Segmen"
},
{
"path": "src/decaf-qt/src/debugger/stackwidget.cpp",
"chars": 10563,
"preview": "#include \"stackwidget.h\"\n\n#include <QtEndian>\n#include <QPainter>\n#include <QScrollBar>\n#include <QTextBlock>\n#include <"
},
{
"path": "src/decaf-qt/src/debugger/stackwidget.h",
"chars": 2158,
"preview": "#pragma once\n#include \"addresstextdocumentwidget.h\"\n#include \"debugdata.h\"\n\n#include <map>\n#include <QString>\n#include <"
},
{
"path": "src/decaf-qt/src/debugger/stackwindow.cpp",
"chars": 1950,
"preview": "#include \"debuggershortcuts.h\"\n#include \"stackwindow.h\"\n#include \"ui_stackwindow.h\"\n\nStackWindow::StackWindow(DebuggerSh"
},
{
"path": "src/decaf-qt/src/debugger/stackwindow.h",
"chars": 667,
"preview": "#pragma once\n#include <QWidget>\n\n#include \"debugdata.h\"\n\nnamespace Ui\n{\nclass StackWindow;\n}\n\nclass QAbstractItemModel;\n"
},
{
"path": "src/decaf-qt/src/debugger/threadsmodel.h",
"chars": 3771,
"preview": "#pragma once\n#include <QAbstractTableModel>\n\n#include \"debugdata.h\"\n\nclass ThreadsModel : public QAbstractTableModel\n{\n "
},
{
"path": "src/decaf-qt/src/debugger/threadswindow.cpp",
"chars": 1727,
"preview": "#include \"threadswindow.h\"\n#include \"ui_threadswindow.h\"\n\n#include \"debugdata.h\"\n#include \"threadsmodel.h\"\n\nThreadsWindo"
},
{
"path": "src/decaf-qt/src/debugger/threadswindow.h",
"chars": 486,
"preview": "#pragma once\n#include <QWidget>\n\nnamespace Ui\n{\nclass ThreadsWindow;\n}\n\nclass DebugData;\nclass ThreadsModel;\n\nclass Thre"
},
{
"path": "src/decaf-qt/src/debugger/voicesmodel.h",
"chars": 4055,
"preview": "#pragma once\n#include <QAbstractTableModel>\n#include <vector>\n\n#include \"debugdata.h\"\n\nclass VoicesModel : public QAbstr"
},
{
"path": "src/decaf-qt/src/debugger/voiceswindow.cpp",
"chars": 1072,
"preview": "#include \"voiceswindow.h\"\n#include \"ui_voiceswindow.h\"\n\n#include \"debugdata.h\"\n#include \"voicesmodel.h\"\n\nVoicesWindow::V"
},
{
"path": "src/decaf-qt/src/debugger/voiceswindow.h",
"chars": 400,
"preview": "#pragma once\n#include <QWidget>\n\nnamespace Ui\n{\nclass VoicesWindow;\n}\n\nclass DebugData;\nclass VoicesModel;\n\nclass Voices"
},
{
"path": "src/decaf-qt/src/decafinterface.cpp",
"chars": 1697,
"preview": "#include \"decafinterface.h\"\n#include \"inputdriver.h\"\n#include \"sounddriver.h\"\n#include \"settings.h\"\n\n#include <QCoreAppl"
},
{
"path": "src/decaf-qt/src/decafinterface.h",
"chars": 912,
"preview": "#pragma once\n#include \"settings.h\"\n\n#include <libdecaf/decaf_eventlistener.h>\n#include <libdecaf/decaf_graphics.h>\n#incl"
},
{
"path": "src/decaf-qt/src/erreuladriver.cpp",
"chars": 614,
"preview": "#include \"erreuladriver.h\"\n\nErrEulaDriver::ErrEulaDriver(QObject *parent) :\n QObject(parent)\n{\n}\n\nvoid\nErrEulaDriver::"
},
{
"path": "src/decaf-qt/src/erreuladriver.h",
"chars": 635,
"preview": "#pragma once\n#include <libdecaf/decaf_erreula.h>\n#include <QObject>\n\nclass QInputDialog;\nclass QWidget;\n\nclass ErrEulaDr"
},
{
"path": "src/decaf-qt/src/inputdriver.cpp",
"chars": 14098,
"preview": "#include \"inputdriver.h\"\n\n#include <QKeyEvent>\n#include <QTimer>\n#include <SDL.h>\n#include <SDL_gamecontroller.h>\n\nInput"
},
{
"path": "src/decaf-qt/src/inputdriver.h",
"chars": 2034,
"preview": "#pragma once\n#include \"settings.h\"\n\n#include <QObject>\n#include <QVector>\n\n#include <array>\n#include <libdecaf/decaf_inp"
},
{
"path": "src/decaf-qt/src/inputeventfilter.h",
"chars": 796,
"preview": "#pragma once\n#include <QObject>\n#include <QEvent>\n#include <QKeyEvent>\n\nclass InputEventFilter : public QObject\n{\n Q_O"
},
{
"path": "src/decaf-qt/src/main.cpp",
"chars": 1030,
"preview": "#include \"mainwindow.h\"\n#include \"decafinterface.h\"\n#include \"inputdriver.h\"\n#include \"sounddriver.h\"\n\n#include <libconf"
},
{
"path": "src/decaf-qt/src/mainwindow.cpp",
"chars": 14083,
"preview": "#include \"mainwindow.h\"\n\n#include \"aboutdialog.h\"\n#include \"debugger/debuggerwindow.h\"\n#include \"decafinterface.h\"\n#incl"
},
{
"path": "src/decaf-qt/src/mainwindow.h",
"chars": 2790,
"preview": "#pragma once\n#include \"ui_mainwindow.h\"\n\n#include <array>\n#include <QMainWindow>\n\nclass DebuggerWindow;\nclass DecafInter"
},
{
"path": "src/decaf-qt/src/renderwidget.cpp",
"chars": 4213,
"preview": "#include \"inputdriver.h\"\n#include \"renderwidget.h\"\n\n#include <QApplication>\n#include <QEvent>\n#include <QResizeEvent>\n#i"
},
{
"path": "src/decaf-qt/src/renderwidget.h",
"chars": 512,
"preview": "#pragma once\n#include <QWidget>\n#include <thread>\n\nnamespace gpu\n{\nclass GraphicsDriver;\n}\n\nclass InputDriver;\n\nclass Re"
},
{
"path": "src/decaf-qt/src/settings/audiosettingswidget.cpp",
"chars": 456,
"preview": "#include \"audiosettingswidget.h\"\n\nAudioSettingsWidget::AudioSettingsWidget(QWidget *parent, Qt::WindowFlags f) :\n Sett"
},
{
"path": "src/decaf-qt/src/settings/audiosettingswidget.h",
"chars": 426,
"preview": "#pragma once\n#include \"ui_audiosettings.h\"\n#include \"settingswidget.h\"\n\nclass AudioSettingsWidget : public SettingsWidge"
},
{
"path": "src/decaf-qt/src/settings/colourlineedit.h",
"chars": 1269,
"preview": "#pragma once\n#include <QColorDialog>\n#include <QEvent>\n#include <QLineEdit>\n\nclass ColourLineEdit : public QLineEdit\n{\np"
},
{
"path": "src/decaf-qt/src/settings/contentsettingswidget.cpp",
"chars": 4251,
"preview": "#include \"contentsettingswidget.h\"\n\n#include <QFileDialog>\n\nContentSettingsWidget::ContentSettingsWidget(QWidget *parent"
},
{
"path": "src/decaf-qt/src/settings/contentsettingswidget.h",
"chars": 698,
"preview": "#pragma once\n#include \"ui_contentsettings.h\"\n#include \"settingswidget.h\"\n\nclass ContentSettingsWidget : public SettingsW"
},
{
"path": "src/decaf-qt/src/settings/debugsettingswidget.cpp",
"chars": 1102,
"preview": "#include \"debugsettingswidget.h\"\n\n#include <QIntValidator>\n\nDebugSettingsWidget::DebugSettingsWidget(QWidget *parent,\n "
},
{
"path": "src/decaf-qt/src/settings/debugsettingswidget.h",
"chars": 426,
"preview": "#pragma once\n#include \"ui_debugsettings.h\"\n#include \"settingswidget.h\"\n\nclass DebugSettingsWidget : public SettingsWidge"
},
{
"path": "src/decaf-qt/src/settings/displaysettingswidget.cpp",
"chars": 2641,
"preview": "#include \"displaysettingswidget.h\"\n\n#include <QDoubleValidator>\n\nDisplaySettingsWidget::DisplaySettingsWidget(QWidget *p"
},
{
"path": "src/decaf-qt/src/settings/displaysettingswidget.h",
"chars": 436,
"preview": "#pragma once\n#include \"ui_displaysettings.h\"\n#include \"settingswidget.h\"\n\nclass DisplaySettingsWidget : public SettingsW"
},
{
"path": "src/decaf-qt/src/settings/inputsettingswidget.cpp",
"chars": 12619,
"preview": "#include \"inputsettingswidget.h\"\n#include \"inputeventfilter.h\"\n#include \"inputdriver.h\"\n\n#include <QStandardItemModel>\n\n"
},
{
"path": "src/decaf-qt/src/settings/inputsettingswidget.h",
"chars": 1619,
"preview": "#pragma once\n#include \"ui_inputsettings.h\"\n#include \"inputdriver.h\"\n#include \"settingswidget.h\"\n\n#include <SDL_joystick."
},
{
"path": "src/decaf-qt/src/settings/loggingsettingswidget.cpp",
"chars": 3197,
"preview": "#include \"loggingsettingswidget.h\"\n\n#include <QFileDialog>\n\nstatic const char *LogLevels[] = {\n \"trace\",\n \"debug\",\n "
},
{
"path": "src/decaf-qt/src/settings/loggingsettingswidget.h",
"chars": 557,
"preview": "#pragma once\n#include \"ui_loggingsettings.h\"\n#include \"settingswidget.h\"\n\nclass LoggingSettingsWidget : public SettingsW"
},
{
"path": "src/decaf-qt/src/settings/settingsdialog.cpp",
"chars": 3494,
"preview": "#include \"settingsdialog.h\"\n#include \"settings.h\"\n\n#include \"audiosettingswidget.h\"\n#include \"contentsettingswidget.h\"\n#"
},
{
"path": "src/decaf-qt/src/settings/settingsdialog.h",
"chars": 878,
"preview": "#pragma once\n#include \"ui_settings.h\"\n#include \"settingswidget.h\"\n\n#include <QDialog>\n#include <QVector>\n\nclass DecafInt"
},
{
"path": "src/decaf-qt/src/settings/settingswidget.h",
"chars": 380,
"preview": "#pragma once\n#include \"settings.h\"\n\n#include <QWidget>\n\nclass SettingsWidget : public QWidget\n{\npublic:\n SettingsWidge"
},
{
"path": "src/decaf-qt/src/settings/systemsettingswidget.cpp",
"chars": 3988,
"preview": "#include \"systemsettingswidget.h\"\n\n#include <QFileDialog>\n\nstatic constexpr const char *LibraryList[] = {\n \"avm.rpl\",\n"
},
{
"path": "src/decaf-qt/src/settings/systemsettingswidget.h",
"chars": 455,
"preview": "#pragma once\n#include \"ui_systemsettings.h\"\n#include \"settingswidget.h\"\n\nclass SystemSettingsWidget : public SettingsWid"
},
{
"path": "src/decaf-qt/src/settings.cpp",
"chars": 11481,
"preview": "#include \"settings.h\"\n#include \"inputdriver.h\"\n\n#include <libconfig/config_toml.h>\n#include <optional>\n#include <toml++/"
},
{
"path": "src/decaf-qt/src/settings.h",
"chars": 3310,
"preview": "#pragma once\n#include <array>\n#include <memory>\n#include <mutex>\n#include <vector>\n#include <libcpu/cpu_config.h>\n#inclu"
},
{
"path": "src/decaf-qt/src/softwarekeyboarddriver.cpp",
"chars": 716,
"preview": "#include \"softwarekeyboarddriver.h\"\n\nSoftwareKeyboardDriver::SoftwareKeyboardDriver(QObject *parent) :\n QObject(parent"
},
{
"path": "src/decaf-qt/src/softwarekeyboarddriver.h",
"chars": 575,
"preview": "#pragma once\n#include <libdecaf/decaf_softwarekeyboard.h>\n#include <QObject>\n\nclass QInputDialog;\nclass QWidget;\n\nclass "
},
{
"path": "src/decaf-qt/src/sounddriver.cpp",
"chars": 4844,
"preview": "#include \"sounddriver.h\"\n\n#ifdef QT_MULTIMEDIA_LIB\nbool\nSoundDriver::start(unsigned outputRate, unsigned numChannels)\n{\n"
},
{
"path": "src/decaf-qt/src/sounddriver.h",
"chars": 1774,
"preview": "#pragma once\n#include \"settings.h\"\n\n#ifdef QT_MULTIMEDIA_LIB\n#include <QAudioOutput>\n#include <QObject>\n#include <QDebug"
},
{
"path": "src/decaf-qt/src/tgahandler.cpp",
"chars": 12691,
"preview": "/* This file is part of the KDE project\n Copyright (C) 2003 Dominik Seichter <domseichter@web.de>\n Copyright (C) 200"
},
{
"path": "src/decaf-qt/src/tgahandler.h",
"chars": 696,
"preview": "/* This file is part of the KDE project\n Copyright (C) 2003 Dominik Seichter <domseichter@web.de>\n This program is f"
},
{
"path": "src/decaf-qt/src/titlelistmodel.h",
"chars": 3404,
"preview": "#pragma once\n#include <libdecaf/decaf_content.h>\n\n#include <QAbstractTableModel>\n#include <QDir>\n#include <QString>\n#inc"
},
{
"path": "src/decaf-qt/src/titlelistscanner.h",
"chars": 3455,
"preview": "#pragma once\n#include <atomic>\n#include <QDirIterator>\n#include <QDomDocument>\n#include <QPixmap>\n#include <QObject>\n\n#i"
},
{
"path": "src/decaf-qt/src/titlelistwidget.cpp",
"chars": 6451,
"preview": "#include \"settings.h\"\n#include \"titlelistwidget.h\"\n#include \"titlelistmodel.h\"\n#include \"titlelistscanner.h\"\n#include \"u"
},
{
"path": "src/decaf-qt/src/titlelistwidget.h",
"chars": 1123,
"preview": "#pragma once\n#include <QStringList>\n#include <QThread>\n#include <QWidget>\n\nclass SettingsStorage;\nclass TitleScanner;\ncl"
},
{
"path": "src/decaf-qt/ui/about.ui",
"chars": 3466,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>AboutDialog</class>\n <widget class=\"QDialog\" name=\"Abo"
},
{
"path": "src/decaf-qt/ui/audiosettings.ui",
"chars": 1203,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>AudioSettingsWidget</class>\n <widget class=\"QWidget\" n"
},
{
"path": "src/decaf-qt/ui/contentsettings.ui",
"chars": 7818,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ContentSettingsWidget</class>\n <widget class=\"QWidget\""
},
{
"path": "src/decaf-qt/ui/debugger/breakpointswindow.ui",
"chars": 2260,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>BreakpointsWindow</class>\n <widget class=\"QWidget\" nam"
},
{
"path": "src/decaf-qt/ui/debugger/debuggerwindow.ui",
"chars": 15983,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>DebuggerWindow</class>\n <widget class=\"QMainWindow\" na"
},
{
"path": "src/decaf-qt/ui/debugger/disassemblywindow.ui",
"chars": 1896,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>DisassemblyWindow</class>\n <widget class=\"QWidget\" nam"
},
{
"path": "src/decaf-qt/ui/debugger/functionswindow.ui",
"chars": 3240,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>FunctionsWindow</class>\n <widget class=\"QWidget\" name="
},
{
"path": "src/decaf-qt/ui/debugger/jitprofilingwindow.ui",
"chars": 6145,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>JitProfilingWindow</class>\n <widget class=\"QWidget\" na"
},
{
"path": "src/decaf-qt/ui/debugger/memorywindow.ui",
"chars": 3841,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>MemoryWindow</class>\n <widget class=\"QWidget\" name=\"Me"
},
{
"path": "src/decaf-qt/ui/debugger/segmentswindow.ui",
"chars": 2249,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>SegmentsWindow</class>\n <widget class=\"QWidget\" name=\""
},
{
"path": "src/decaf-qt/ui/debugger/stackwindow.ui",
"chars": 2240,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>StackWindow</class>\n <widget class=\"QWidget\" name=\"Sta"
},
{
"path": "src/decaf-qt/ui/debugger/threadswindow.ui",
"chars": 2243,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ThreadsWindow</class>\n <widget class=\"QWidget\" name=\"T"
},
{
"path": "src/decaf-qt/ui/debugger/voiceswindow.ui",
"chars": 1775,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>VoicesWindow</class>\n <widget class=\"QWidget\" name=\"Vo"
},
{
"path": "src/decaf-qt/ui/debugsettings.ui",
"chars": 1981,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>DebugSettingsWidget</class>\n <widget class=\"QWidget\" n"
},
{
"path": "src/decaf-qt/ui/displaysettings.ui",
"chars": 3584,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>DisplaySettingsWidget</class>\n <widget class=\"QWidget\""
}
]
// ... and 1542 more files (download for full content)
About this extraction
This page contains the full source code of the exjam/wiiu-emu GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1742 files (7.1 MB), approximately 1.9M tokens, and a symbol index with 7070 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.