Skip to content

PPSSPW 代码地图 ​

先读主流程的输入与交接,再按责任定位修改。本页只覆盖已声明主流程,不把目录出现过当作完整模块调查。

路径职责关键代码与主流程的关系
wasm-page/src/页面外观与游玩控件布局player-controls.css / styles.css由 Angular 构建配置依次载入
wasm-page/src/app/页面结构、栏目与运行时脚本接线app.html / ppsspp-runtime.tsAngular 入口调用
wasm-page/public/启动、触控、浏览器文件与存档的实际运行逻辑ppsspp-runtime.js / touch-controls.js页面按序载入
wasm-page/tests/约束启动、栏目切换、触控和存储失败行为runtime.test.mjs / touch-controls.test.mjswasm-page 的 test 命令
scripts/把配套核心交给静态网页产物scripts/package-player.pymake pages 或显式打包命令
server/只暴露打包目录并设置线程所需响应头server/serve-player.py打包后的人工预览
deps/ppsspp-wasm/SDL/窗口变化时同步显示尺寸与输入比例SDLMain.cpp网页尺寸通知抵达原生 SDL 后处理
deps/ppsspp-wasm/UI/原生设置栏目按可用宽度切换布局TabbedDialogScreen.cpp / GameSettingsScreen.cpp接收核心尺寸变化并重建栏目
deps/ppsspp-wasm/Common/UI/栏目导航、选中可见与视图状态恢复TabHolder.cpp / UIScreen.cpp原生设置页共用的视图机制

wasm-page/src/ ​

基础页面外观与游玩控件分开维护。栏目导航、按键键帽及模拟摇杆的样式放在独立样式表,避免将视觉改动混进输入状态处理。

重要代码功能关键符号调用方 / 使用方
游玩控件(仓库文件:wasm-page/src/player-controls.css)手柄视觉、命中区域、栏目布局和短横屏适配.touch-gamepad / .panel-navigation / #panelTabList模板与触控状态类
基础样式(仓库文件:wasm-page/src/styles.css)页面整体结构、面板与原有响应式规则.stage / #sidePanel页面模板
样式加载配置(仓库文件:wasm-page/angular.json)先加载基础样式,再加载游玩控件样式build.options.stylesAngular 构建

相关验证:独立网页构建及浏览器布局检查;触控外观检查不代表真机操作体验已经通过。

wasm-page/src/app/ ​

页面启动与运行时脚本接线。范围仅为下表入口及主流程直接使用的契约,其余文件没有逐一审核。

重要代码功能关键符号调用方 / 使用方
职责入口(仓库文件:wasm-page/src/app/ppsspp-runtime.ts)页面启动与运行时脚本接线PpssppRuntime.bootstrapAngular 入口调用
页面模板(仓库文件:wasm-page/src/app/app.html)图标文字栏目、关联面板与屏幕手柄语义panelTabList / touchGamepadAngular 渲染;运行时绑定事件

相关验证:wasm-page/tests/runtime.test.mjs;实际执行结果集中记在指南变更记录。

wasm-page/public/ ​

启动、浏览器文件与存档的实际运行逻辑。范围仅为下表入口及主流程直接使用的契约,其余文件没有逐一审核。

重要代码功能关键符号调用方 / 使用方
职责入口(仓库文件:wasm-page/public/ppsspp-runtime.js)启动、浏览器文件与存档的实际运行逻辑start / loadPersistedFiles / mountBrowserGame页面按序载入
栏目导航(仓库文件:wasm-page/public/ppsspp-runtime.js)切换选中面板、焦点和键盘导航activatePanelTab / onPanelTabKeyDown模板中的栏目按钮
布局与画布跟踪(仓库文件:wasm-page/public/ppsspp-runtime.js)区分布局与可视区域,向核心通知画布尺寸变化、向手柄通知位置变化syncViewportSize / installCanvasResizeTracking / ppsspp-player-layout浏览器视口、全屏、画布观察器
屏幕手柄(仓库文件:wasm-page/public/touch-controls.js)每指针输入、方向拖动、摇杆死区与安全释放createState / mount / dpadButtons / stickAxes运行时输入桥采样

相关验证:wasm-page/tests/runtime.test.mjs、wasm-page/tests/orientation.test.mjs、wasm-page/tests/touch-controls.test.mjs;模拟器核心仍需单独验收。

wasm-page/tests/ ​

约束启动能力和存储失败行为。范围仅为下表入口及主流程直接使用的契约,其余文件没有逐一审核。

重要代码功能关键符号调用方 / 使用方
职责入口(仓库文件:wasm-page/tests/runtime.test.mjs)约束启动能力和存储失败行为partial core / storage maintenance 用例wasm-page 的 test 命令
触控回归(仓库文件:wasm-page/tests/touch-controls.test.mjs)多指并按、短按、方向换向、摇杆落点与失焦释放mounted controls / mounted stick 用例wasm-page 的 test 命令
原生窗口尺寸夹具(仓库文件:wasm-page/tests/sdl-viewport.cpp)为真实生产分支提供窗口数据与断言production-resize.inc / main独立 Python 编译脚本,不属于 npm test
栏目模式夹具(仓库文件:wasm-page/tests/tabbed-layout.cpp)检查宽度边界、平台分支与跨模式重建请求production-tabbed-layout.inc / main独立 Python 编译脚本;视图重建为替身

相关验证入口:wasm-page/package.json。DOM 替身中的输入断言不替代浏览器命中测试或游戏内响应。

scripts/ ​

把配套核心交给静态网页产物。范围仅为下表入口及主流程直接使用的契约,其余文件没有逐一审核。

重要代码功能关键符号调用方 / 使用方
职责入口(仓库文件:scripts/package-player.py)把配套核心交给静态网页产物main / diagnostic_metadatamake pages 或显式打包命令
窗口尺寸回归入口(仓库文件:scripts/test-sdl-viewport.py)从当前生产源码提取函数和 resize 分支,编译并执行小型 Wasm 测试body / main显式运行;需要 Emscripten SDK 与 Node.js
栏目模式回归入口(仓库文件:scripts/test-tabbed-layout.py)提取真实布局决策和尺寸回调,分别验证网页与非网页分支main / UseHorizontalTabs / resized显式运行;需要 Emscripten SDK 与 Node.js
构建验证顺序(仓库文件:scripts/ci/build.sh)完整核心构建前先执行窗口尺寸和栏目模式回归test-sdl-viewport.py / test-tabbed-layout.py / make wasm-release构建任务入口;改动脚本不代表任务已执行

打包边界的验证入口为 server/player-tests/;窗口尺寸分支由独立编译脚本执行,结果分别记录,不能互相替代。

server/ ​

只暴露打包目录并设置线程所需响应头。范围仅为下表入口及主流程直接使用的契约,其余文件没有逐一审核。

重要代码功能关键符号调用方 / 使用方
职责入口(仓库文件:server/serve-player.py)只暴露打包目录并设置线程所需响应头PlayerHandler / main打包后的人工预览

相关验证:server/player-tests/。本轮只检查可读证据,业务测试没有执行。

deps/ppsspp-wasm/SDL/ ​

这里只追踪窗口尺寸与输入坐标直接关联的分支,不把上游目录整体视为已审核。

重要代码功能关键符号调用方 / 使用方
窗口事件与 DPI(仓库文件:deps/ppsspp-wasm/SDL/SDLMain.cpp)尺寸变化时先更新 DPI,再更新显示边界,拒绝无效尺寸UpdateScreenDPI / SDL_WINDOWEVENT_SIZE_CHANGEDSDL 事件循环、原生显示与输入换算

相关验证:python scripts/test-sdl-viewport.py 检查真实分支,但 SDL 调用为替身;还需完整重建并加载新核心,才能验证浏览器原生触点。

deps/ppsspp-wasm/UI/ ​

这里只追踪设置栏目在窗口收窄、展开时的布局与状态交接,不展开全部原生界面组件。

重要代码功能关键符号调用方 / 使用方
栏目布局决策(仓库文件:deps/ppsspp-wasm/UI/TabbedDialogScreen.cpp)网页核心按有效宽度切换栏目方向,安全重建搜索与初始选中项UseHorizontalTabs / resized / CreateViews / ApplySearchFilter核心窗口尺寸回调、各设置页
游戏设置栏目(仓库文件:deps/ppsspp-wasm/UI/GameSettingsScreen.cpp)网页核心使用横向图标文字标签GameSettingsScreen / HorizontalShowIcons设置入口

相关验证:python scripts/test-tabbed-layout.py 执行真实模式决策与尺寸回调,视图重建使用替身;栏目点击和搜索生命周期仍需加载完整核心后验证。

deps/ppsspp-wasm/Common/UI/ ​

栏目切换与界面重建共用下列视图机制;这里仅追踪设置页直接依赖的入口。

重要代码功能关键符号调用方 / 使用方
栏目容器(仓库文件:deps/ppsspp-wasm/Common/UI/TabHolder.cpp)测量图标文字标签、恢复选中栏目,并在布局变化后将选中标签滚入视野IconLabelTabChoice / Layout / SetInitialTab / PersistData分栏设置页
视图状态交接(仓库文件:deps/ppsspp-wasm/Common/UI/UIScreen.cpp)重建前后保存、恢复栏目内容滚动与焦点DoRecreateViews / PersistData原生视图重建

验证需在完整核心中检查栏目选中、手动导航、滚动与焦点恢复;实际已执行的项目及设备边界见指南变更记录。

覆盖范围 ​

覆盖 Angular 到浏览器运行时的接线、栏目与触控交互、启动能力检查、本地文件挂载、打包与预览;只追踪这些入口。模拟器 CPU/GPU、FFmpeg、完整在线下载、联机、云同步和移动设备性能未覆盖;deps 仅追踪对话框确认、窗口尺寸与设置栏目相关入口,其余第三方实现不作逐层架构讲解。

生成物、依赖安装目录、临时日志及第三方供应商源码不作为本次第一方模块地图。修改范围外机制前应重新调查,不能从本页推断兼容性。

证据状态:除特别标注外,本页基于当前源码已确认。