# TonyWasAProSkater：派生自一致性反编译的 THPS1 原生移植

> 从一个仍在进行中的零售版可执行文件一致性反编译项目派生分支，将 Tony Hawk’s Pro Skater（PlayStation 美版）移植为原生 Windows 与 Linux 程序。反编译部分用 Psy-Q 工具链重新编译已重建的函数，并与使用者自备的零售可执行文件逐字节比对；移植部分则以 SDL2 和 OpenGL 服务取代 PlayStation 硬件和库。运行需使用者自备光盘镜像；一致性与可玩性结果仍为项目报告。

- 类型：案例
- 目标：游戏
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-18
- 收录于：2026-10-18
- 原始资源：<https://github.com/LANCommander/TonyWasAProSkater>
- 一手来源：<https://github.com/LANCommander/TonyWasAProSkater/blob/23968e91391ccdeb35f45e1fe987a8a40085aa5f/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/thps1-decomp-native-port-case/>
- 记录 JSON：<https://awesomerea.org/resources/thps1-decomp-native-port-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/thps1-decomp-native-port-case/index.md)

## 使用条件与局限

- **前提条件：**运行需使用者自备 Tony Hawk’s Pro Skater（美版）PlayStation 光盘的原始 MODE2/2352 BIN 镜像；也可改用 Dreamcast 光盘镜像（.gdi 及其轨道）提供素材。首次启动会把约 630 MB 内容复制到 Data 文件夹。构建还需使用者光盘中的零售版 SLUS_008.60 可执行文件，以获取函数布局。README 说明仓库未提交任何游戏素材或原始可执行文件，但包含反编译代码和已初始化数据。
- **前提条件：**构建可在 Windows 上使用 MSYS2 的 32 位 MinGW 工具链和 SDL2（64 位构建使用 ucrt64），或在 x86 Linux 上使用 multilib GCC 与 32 位 SDL2，另需 Python 3 和 Ghidra 的 GNU 反修饰器；Psy-Q 库名称表依据 ghidra_psx_ldr 的签名生成。运行需 64 位 Windows 10／11，或具备 32 位 SDL2 与 OpenGL 库的 x86 Linux，以及支持 OpenGL 3.3 的 GPU。重新校验已匹配函数还需 Node 和未随项目分发的 Psy-Q 4.5 编译器。
- **范围：**所审阅的 main 分支派生自 LANCommander/THPS，仅针对 PS1 美版零售可执行文件 SLUS_008.60，不涵盖系列后续作品。2026-10-13 生成的 decomp/PROGRESS.md 报告游戏代码字节中 88.0%（1,178 个函数中的 928 个）逐字节一致，Psy-Q 库不在范围内。移植在 game/ 中编译该代码的独立分支；decomp/ 作为逐字节一致的参照保留，不参与移植构建，因此可运行的程序本身并非一致性构建产物。
- **测试证据：**decomp/tools/check_all.mjs 会重新编译 matched.tsv 中的每个函数，并与零售版字节比对；取代手写汇编和 Sony 库的 C 代码，则通过重放录制的游戏状态与原 MIPS 代码对照检查。移植层的改动通过确定性运行检查，将画面帧和存档与早期构建比较。README 报告九个经典生涯关卡均可游玩，PS1 混响仅为近似实现。
- **许可：**README 和移植层 README 称项目自身代码采用仓库 LICENSE 中的 MIT 许可，但所审阅的源码树中没有 LICENSE 文件，GitHub 也未检测到许可。移植层 README 说明反编译的游戏代码、数据及全部素材仍归 Activision／Neversoft 所有；SDL 2、PL_MPEG、glad 等链接库保留各自条款。源码树含 CLAUDE.md 项目笔记和 GhidraMCP 配置。

## 一手来源

1. <https://github.com/LANCommander/TonyWasAProSkater/blob/23968e91391ccdeb35f45e1fe987a8a40085aa5f/README.md>
2. <https://github.com/LANCommander/TonyWasAProSkater/blob/23968e91391ccdeb35f45e1fe987a8a40085aa5f/platform/pc/README.md>
3. <https://github.com/LANCommander/TonyWasAProSkater/blob/23968e91391ccdeb35f45e1fe987a8a40085aa5f/decomp/README.md>
4. <https://github.com/LANCommander/TonyWasAProSkater/blob/23968e91391ccdeb35f45e1fe987a8a40085aa5f/decomp/PROGRESS.md>
5. <https://github.com/LANCommander/TonyWasAProSkater/blob/23968e91391ccdeb35f45e1fe987a8a40085aa5f/decomp/matched.tsv>
6. <https://github.com/LANCommander/TonyWasAProSkater/blob/23968e91391ccdeb35f45e1fe987a8a40085aa5f/decomp/tools/check_all.mjs>
7. <https://github.com/LANCommander/TonyWasAProSkater/blob/23968e91391ccdeb35f45e1fe987a8a40085aa5f/docs/coverage-report.md>
8. <https://github.com/LANCommander/TonyWasAProSkater/blob/23968e91391ccdeb35f45e1fe987a8a40085aa5f/platform/pc/dist/THIRD-PARTY-NOTICES.txt>

## 同分区更多条目：游戏

- [Vandal Hearts：基于一致性反编译的原生 PC 移植](https://awesomerea.org/zh/resources/vandal-hearts-pc-port-case/index.md) · 案例
- [Age of Empires Free Software Remake：基于原版数据的重新实现](https://awesomerea.org/zh/resources/aoe-free-software-remake-case/index.md) · 案例
- [Bravo：逆向实现的 Minecraft 服务端](https://awesomerea.org/zh/resources/bravo-minecraft-server-case/index.md) · 案例
- [Chariot《帝国时代》引擎重实现](https://awesomerea.org/zh/resources/chariot/index.md) · 案例
- [CoD4 Rewrite：Rust/Bevy 游戏重建](https://awesomerea.org/zh/resources/cod4-rewrite-reconstruction-case/index.md) · 案例
- [CorsixTH：Theme Hospital 的开源重新实现](https://awesomerea.org/zh/resources/corsixth-engine-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
