这个项目能做什么

PocketHLE 是一款实验性高层模拟器(HLE),面向 Pocket PC 2002/2003 和 Windows Mobile 5/6 游戏,目标是运行打包在 .CAB 归档中的原生 ARM Windows CE 可执行文件。它并不模拟完整的 Windows CE 设备,而是加载原始游戏可执行文件,通过 CPU 后端运行其 ARM 代码,并提供游戏所需的 Windows CE API 的净室主机端实现。该项目受 touchHLE 和 EKA2L1 启发,启动器/库工作流受 j2me-loader 影响。 README 中描述的功能包括:导入和解包 .CAB 归档;从 _setup.xml 或二进制 MSCE 安装头恢复长文件名和安装路径;选择目标游戏可执行文件;加载原生 ARM 和 MIPS PE 镜像并检查导入;使用 Unicorn Engine 后端执行 ARM 代码;通过 HLE 桩拦截导入的 Windows CE DLL 调用;coredll.dll 和 aygshell.dll 的序号到名称解析;模拟核心窗口、GDI、GAPI、注册表、文件系统、定时、输入和音频路径;在桌面前端和 Android SurfaceView/OpenGL 前端中渲染软件帧缓冲;桌面和 Android 上带有逐游戏设置的共享游戏库;以及通过 GitHub Actions 构建 Linux/Windows/Android 版本。 项目说明其当前可复现的验证覆盖了以 WVGA 分辨率运行并捕获 PCM 音频的 Asphalt 4,以及通过 OpenGL ES 层启动 Call of Duty 2 标题画面;其他游戏(Zuma Deluxe、Bejeweled、Asphalt 2 3D、Crazy Taxi、Diamond Twister、Splinter Cell Conviction)在 proof/ 目录下有兼容性工作或探测,但 README 提醒不要将它们描述为完全验证。它明确指出 PocketHLE 不是完整的 Windows CE 模拟器:部分游戏在 CRT 初始化、动态导入、工作线程设置或未实现的 API 处停止,成功启动或首帧渲染并不意味着游戏可端到端游玩。 架构组件:pocket-cli(CLI/捕获)、pocket-desktop(egui 启动器)、pocket-android(Kotlin + JNI)、pocket-core(模拟器/VFS)、pocket-cab(CAB 安装器)、pocket-pe(ARM/MIPS PE)、pocket-library(游戏数据库)、pocket-kernel(进程/GDI/HLE 分发)、pocket-cpu(桩/Unicorn)、pocket-winceapi(coredll/gx/hss)。启动流程:CAB 解压和注册表重建、PE 解析、带 IAT 补丁到 HLE 桩的镜像映射、客户机代码执行、API 分发到 Rust 处理程序,以及带主机输入转发的帧缓冲显示。 使用方法:下载发布归档,导入合法获取的 .CAB,在桌面或 Android 启动器中选择游戏。CLI 示例包括 inspect-cab、使用 --cpu unicorn 运行、--dump-frames-to 和 --max-frames,以及 pe-info;支持 .exe 和 .zip 输入,--cpu stub 用于仅追踪/加载器测试。构建说明涵盖 Linux(Rust 1.85+、原生 GTK/X11/Wayland 依赖、cargo build/test、unicorn 特性构建)、Windows(MSVC 工具链 + CMake)和 Android(Android Studio Iguana+、NDK r26+、cargo-ndk、Gradle)。库布局使用 library.json、config.json 和逐游戏目录(含 game.json、source.cab 和解压文件);默认位置为 ~/.local/share/PocketHLE/library 或平台等效路径。 路线图项目包括完成 CRT 和传统 ARM 启动路径、扩展动态导入和线程/运行时兼容性、改进资源/GDI/对话框覆盖、更广泛的手柄/键盘/触摸映射、音频混音、更多可复现兼容性捕获,以及桌面/Android 用户体验和诊断。README 包含法律声明,不分发受版权保护的 Microsoft 系统 DLL、固件或游戏资产,API 层为净室重新实现;用户需自行负责游戏副本。许可证为双重 Apache-2.0 OR MIT。欢迎通过项目 Discord 贡献、提交兼容性报告和追踪信息。