Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.
This report summarizes scanner evidence for dolphin-emu/dolphin, a C++ project with 15,747 GitHub stars. SynthScan examined 1,015,776 lines of code across 5551 source files, recording 3052 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 2.8 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 3028 finding(s).
Are imports declared and package/API names verified? 17 finding(s).
Are wrappers, guards, and repeated structures necessary? 9 finding(s).
Which changes need focused human review? 3052 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 3052 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CMakeLists.txt | 601 | ######################################## | COMMENT |
| LOW | BuildMacOSUniversalBinary.py | 41 | "dst_app": "universal/", | COMMENT |
| LOW | Tools/perf-disassemble.sh | 1 | #!/bin/bash | COMMENT |
| LOW | Tools/symbolicate-ppc.py | 1 | #!/usr/bin/python | COMMENT |
| LOW | Tools/symbolicate-ppc.py | 21 | # 0.57% JIT_PPC_zz_044141c_ (/tmp/perf-15936.map) | COMMENT |
| LOW | Source/PCH/pch.h | 1 | // Copyright 2013 Dolphin Emulator Project | COMMENT |
| LOW | Source/PCH/pch.h | 21 | #undef STRINGIFY_HELPER | COMMENT |
| LOW | Source/PCH/pch.h | 41 | #include <errno.h> | COMMENT |
| LOW | Source/PCH/pch.h | 61 | #include <list> | COMMENT |
| LOW | Source/PCH/pch.h | 81 | #include <stdlib.h> | COMMENT |
| LOW | Source/PCH/pch.cpp | 1 | // Copyright 2014 Dolphin Emulator Project | COMMENT |
| LOW | Source/PCH/nopch/pch.h | 1 | // dummy include to help with disabling pch for a single file | COMMENT |
| LOW | Source/DSPTool/DSPTool.cpp | 1 | // Copyright 2009 Dolphin Emulator Project | COMMENT |
| LOW | Source/DSPTool/DSPTool.cpp | 361 | COMMENT | |
| LOW | Source/Core/Core/CheatSearch.cpp | 1 | // Copyright 2021 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/PatchEngine.cpp | 1 | // Copyright 2008 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/PatchEngine.cpp | 21 | #include "Common/Assert.h" | COMMENT |
| LOW | Source/Core/Core/NetPlayCommon.h | 1 | // Copyright 2021 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/Core.h | 1 | // Copyright 2008 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/NetworkCaptureLogger.cpp | 1 | // Copyright 2021 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/NetworkCaptureLogger.h | 1 | // Copyright 2021 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/Host.h | 1 | // Copyright 2008 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 1 | // Copyright 2008 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 21 | #define CTX_RDX Rdx | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 41 | #error No context definition for architecture | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 61 | #define CTX_R9 __r9 | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 81 | #if _M_X86_64 | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 101 | #define CTX_LR __ss.__lr | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 121 | #define CTX_RSP gregs[REG_RSP] | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 141 | typedef ucontext_t SContext; | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 161 | #define CTX_REG(x) sc_x[x] | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 181 | #define CTX_R9 __gregs[_REG_R9] | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 201 | #define CTX_RSI mc_rsi | COMMENT |
| LOW | Source/Core/Core/MachineContext.h | 221 | #elif defined(__HAIKU__) | COMMENT |
| LOW | Source/Core/Core/Core.cpp | 1 | // Copyright 2008 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/Core.cpp | 21 | #endif | COMMENT |
| LOW | Source/Core/Core/Core.cpp | 41 | #include "Core/Boot/Boot.h" | COMMENT |
| LOW | Source/Core/Core/Core.cpp | 61 | #include "Core/HW/Wiimote.h" | COMMENT |
| LOW | Source/Core/Core/Core.cpp | 81 | COMMENT | |
| LOW | Source/Core/Core/NetPlayCommon.cpp | 1 | // Copyright 2021 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/Movie.h | 1 | // Copyright 2008 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/State.cpp | 1 | // Copyright 2008 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/State.cpp | 21 | COMMENT | |
| LOW | Source/Core/Core/State.cpp | 41 | #include "Core/CoreTiming.h" | COMMENT |
| LOW | Source/Core/Core/NetPlayServer.h | 1 | // Copyright 2013 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/BootManager.cpp | 1 | // Copyright 2011 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/BootManager.cpp | 21 | COMMENT | |
| LOW | Source/Core/Core/AchievementManager.cpp | 1 | // Copyright 2023 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/AchievementManager.cpp | 21 | #include "Common/StringUtil.h" | COMMENT |
| LOW | Source/Core/Core/CoreTiming.cpp | 1 | // Copyright 2008 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/CoreTiming.cpp | 21 | #include "Core/CPUThreadConfigCallback.h" | COMMENT |
| LOW | Source/Core/Core/DolphinAnalytics.cpp | 1 | // Copyright 2016 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/DolphinAnalytics.cpp | 21 | #include <functional> | COMMENT |
| LOW | Source/Core/Core/AchievementManager.h | 1 | // Copyright 2023 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/AchievementManager.h | 21 | #include <picojson.h> | COMMENT |
| LOW | Source/Core/Core/NetPlayClient.cpp | 1 | // Copyright 2010 Dolphin Emulator Project | COMMENT |
| LOW | Source/Core/Core/NetPlayClient.cpp | 21 | #include <fmt/ranges.h> | COMMENT |
| LOW | Source/Core/Core/NetPlayClient.cpp | 41 | #include "Core/Config/NetplaySettings.h" | COMMENT |
| LOW | Source/Core/Core/NetPlayClient.cpp | 61 | #include "Core/HW/WiimoteEmu/DesiredWiimoteState.h" | COMMENT |
| LOW | Source/Core/Core/NetPlayClient.cpp | 1961 | // but which sockets on each individual GameCube should be used | COMMENT |
| 2930 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | Externals/mbedtls/library/error.c | 226 | /* Begin Auto-Generated Code. */ | COMMENT |
| HIGH | Externals/mbedtls/library/error.c | 569 | /* End Auto-Generated Code. */ | COMMENT |
| HIGH | Externals/mbedtls/library/error.c | 590 | /* Begin Auto-Generated Code. */ | COMMENT |
| HIGH | Externals/mbedtls/library/error.c | 887 | /* End Auto-Generated Code. */ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | BuildMacOSUniversalBinary.py | 56 | # be cryptographically signed/notarized but will instead just use a | COMMENT |
| MEDIUM | BuildMacOSUniversalBinary.py | 82 | # 2) Single architecture builds should utilize the normal generated cmake | COMMENT |
| MEDIUM | Source/Core/Core/HW/GCMemcard/GCMemcard.cpp | 156 | // whichever block has the higher value. Essentially, if (0.update_ctr >= 1.update_ctr) { use 0 } | COMMENT |
| MEDIUM | Source/Core/Core/HLE/HLE_Misc.cpp | 44 | // robust alternative would be to actually detect memory writes, but that | COMMENT |
| MEDIUM | Source/Core/Core/FifoPlayer/FifoRecorder.cpp | 224 | // The video thread may call into functions that utilize these | COMMENT |
| MEDIUM | Source/Core/VideoCommon/ShaderCache.cpp | 1235 | // - AMD, Nvidia: Definitely keyed on dual source blend, but the others seem more random | COMMENT |
| MEDIUM | Source/Core/VideoCommon/AbstractTexture.cpp | 47 | // Use a temporary staging texture for the download. Certainly not optimal, | COMMENT |
| MEDIUM | Source/Core/DolphinQt/Debugger/EditSymbolDialog.cpp | 101 | // Not sure what the max size should be. Definitely not a full 8, so set to 7. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Source/Core/Core/WiiUtils.cpp | 115 | const std::array<u8, 32> dummy_data{}; | CODE |
| LOW | Source/Core/Core/WiiUtils.cpp | 131 | if (!new_handle || !new_handle->Write(dummy_data.data(), dummy_data.size())) | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 163 | static void HitVirtualTrue_fk(BranchWatch* branch_watch, u64 fake_key, u32 inst) | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 165 | branch_watch->m_collection_vt[{std::bit_cast<FakeBranchWatchCollectionKey>(fake_key), inst}] | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 169 | static void HitPhysicalTrue_fk(BranchWatch* branch_watch, u64 fake_key, u32 inst) | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 171 | branch_watch->m_collection_pt[{std::bit_cast<FakeBranchWatchCollectionKey>(fake_key), inst}] | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 175 | static void HitVirtualFalse_fk(BranchWatch* branch_watch, u64 fake_key, u32 inst) | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 177 | branch_watch->m_collection_vf[{std::bit_cast<FakeBranchWatchCollectionKey>(fake_key), inst}] | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 181 | static void HitPhysicalFalse_fk(BranchWatch* branch_watch, u64 fake_key, u32 inst) | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 183 | branch_watch->m_collection_pf[{std::bit_cast<FakeBranchWatchCollectionKey>(fake_key), inst}] | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 187 | static void HitVirtualTrue_fk_n(BranchWatch* branch_watch, u64 fake_key, u32 inst, u32 n) | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 189 | branch_watch->m_collection_vt[{std::bit_cast<FakeBranchWatchCollectionKey>(fake_key), inst}] | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 193 | static void HitPhysicalTrue_fk_n(BranchWatch* branch_watch, u64 fake_key, u32 inst, u32 n) | CODE |
| LOW⚡ | Source/Core/Core/Debugger/BranchWatch.h | 195 | branch_watch->m_collection_pt[{std::bit_cast<FakeBranchWatchCollectionKey>(fake_key), inst}] | CODE |
| LOW | docs/ResourcePacks.md | 61 | "authors": ["John Doe", "Jane Doe"], | CODE |
| LOW | docs/ResourcePacks.md | 61 | "authors": ["John Doe", "Jane Doe"], | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | Externals/mbedtls/include/psa/crypto.h | 967 | * -# Initialize the operation object with one of the methods described in the | COMMENT |
| MEDIUM | Externals/mbedtls/include/psa/crypto.h | 1341 | * -# Initialize the operation object with one of the methods described in the | COMMENT |
| MEDIUM | Externals/mbedtls/include/psa/crypto.h | 1402 | * -# Initialize the operation object with one of the methods described in the | COMMENT |
| MEDIUM | Externals/mbedtls/include/psa/crypto.h | 1761 | * -# Initialize the operation object with one of the methods described in the | COMMENT |
| MEDIUM | Externals/mbedtls/include/psa/crypto.h | 1825 | * -# Initialize the operation object with one of the methods described in the | COMMENT |
| MEDIUM | Externals/mbedtls/include/psa/crypto.h | 2290 | * -# Initialize the operation object with one of the methods described in the | COMMENT |
| MEDIUM | Externals/mbedtls/include/psa/crypto.h | 2360 | * -# Initialize the operation object with one of the methods described in the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | Tools/test-updater.py | 172 | except: | CODE |
| HIGH | Tools/test-updater.py | 176 | except: | CODE |
| HIGH | Tools/ghidra/SaveDolphinMap.py | 55 | except: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | Externals/liblzma/CMakeLists.txt | 54 | #============================================================================ | COMMENT |
| MEDIUM | Externals/liblzma/CMakeLists.txt | 56 | #============================================================================ | COMMENT |
| MEDIUM | Externals/bzip2/CMakeLists.txt | 52 | #============================================================================ | COMMENT |
| MEDIUM | Externals/bzip2/CMakeLists.txt | 54 | #============================================================================ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | Source/Core/Core/HW/DSPHLE/UCodes/Zelda.h | 227 | // command buffer. In this implementation, the synchronous+interrupts flow | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Source/Core/Core/Core.cpp | 982 | // NOTE: This function is potentially re-entrant. If a job calls | COMMENT |
| LOW⚡ | Source/Core/Core/PowerPC/PPCAnalyst.cpp | 418 | // Step 1: Find all functions | COMMENT |
| LOW | Externals/liblzma/common/index_hash.c | 184 | // NOTE: This function has many similarities to index_encode() and | COMMENT |
| LOW | Externals/liblzma/common/block_util.c | 51 | // NOTE: This function is used for validation too, so it is | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Source/Core/Core/State.cpp | 99 | // Don't forget to increase this after doing changes on the savestate system | COMMENT |
| LOW | Source/Core/DolphinQt/Config/SettingsWindow.cpp | 193 | // If you change the order, don't forget to update the SettingsWindowPaneIndex enum. | COMMENT |
| LOW | Externals/mbedtls/include/mbedtls/blowfish.h | 40 | #define MBEDTLS_BLOWFISH_ROUNDS 16 /**< Rounds to use. When increasing this value, make sure to extend the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | Source/Core/Core/PowerPC/PPCAnalyst.cpp | 418 | // Step 1: Find all functions | COMMENT |
| LOW⚡ | Source/Core/Core/PowerPC/PPCAnalyst.cpp | 423 | // Step 2: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Tools/test-updater.py | 56 | CODE | |
| LOW | Externals/mbedtls/scripts/config.py | 439 | CODE | |
| LOW | Externals/discord-rpc/build.py | 255 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Tools/perf-disassemble.sh | 11 | # Example usage: | COMMENT |
| LOW | Source/Core/Common/Analytics.h | 31 | // Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Source/Core/Core/HW/DSPHLE/UCodes/AXStructs.h | 35 | // TODO: implement and comment it in the mixer | COMMENT |
| LOW | Source/Core/VideoBackends/Software/SWEfbInterface.cpp | 494 | // TODO: implement support for multisampling. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Tools/test-updater.py | 55 | class HTTPRequestHandler(http.server.BaseHTTPRequestHandler): | CODE |
| LOW | Tools/find-includes-cycles.py | 17 | def strongly_connected_components(graph: dict[str, list[str]]) -> list[tuple[str, ...]]: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Tools/test-updater.py | 19 | CODE |