技能包

console-skill:把自有 PS2 光盘逆向移植到 PC 的 11 个 Claude 技能

适合手里有自有 PS2 光盘镜像、想用 Claude 把这张盘逆向并重编译到 PC 上运行的人,前提是你自己镜像光盘并自己编译 PS2Recomp 运行时。

官方来源 · Jakeschincariol/console-skill

安装

https://github.com/Jakeschincariol/console-skill

适合谁

你手里有一张自己买的 PS2 光盘,愿意在自己的电脑上把它镜像成盘镜像文件,并且希望把这份私人副本带到 PC 上继续玩、继续改。仓库给出的是 11 个 Claude 技能,把一次移植拆成可以逐个调用的步骤;真正动手执行的是你对话里的 Claude,仓库本身不会直接产出可以双击的成品移植。

它明确排除了另一类人:这里没有可下载的 ISO、没有 BIOS、没有任何来路不明的素材,所有内容都从你自己拥有的盘开始,所以先找资源再说的路线在这里行不通。它也不适合只想看效果的人——镜像盘、准备编译环境、逐段做逆向判断,这些环节都得你自己扛。如果你想要的是一个已经跑起来、自己完全不用碰工具链的游戏,这条路走不通:承载移植的运行时必须你亲手准备,技能做的事只是把过程拆开讲清楚。

大致画像是:能敲命令行、看得懂编译报错、愿意为一个私人副本花时间做逆向的个人开发者和爱好者,把这张盘当成研究与折腾对象,而不是要交付的产品。

3 分钟完成第一次尝试

官方给出的安装方式很直接:在 Claude 对话里把下面两行贴进去。

https://github.com/Jakeschincariol/console-skill
install skill

粘贴之前先确认两件事:镜像文件放在哪个目录、当前会话能不能访问到它;以及这台机器上是否已经有 CMake 3.20 以上的版本和一款 C++20 编译器。

有两个前提要先知道。一是技能脚本本身是纯 Python 的,没有依赖要装,粘贴之后由 Claude 读取仓库并把 11 个技能准备好;真正耗时的是运行环节需要的 PS2Recomp 运行时,那要你自己 clone 并编译,环境要求是 CMake 3.20 以上与 C++20 编译器。二是整条链路的起点是你自己镜像出来的盘镜像文件,没有现成素材可用。

安装位置:技能装好后以斜杠命令出现在 Claude 里;如果在 Claude Code 里改用插件方式安装,命令会被加上命名空间,写法变成 /console-skill:console-reverse 这种形式。

第一次试跑请挑只读的那一步:让 Claude 调起 /console-reverse,打开你本地的盘镜像,识别引导 ELF、列出函数并产出一份设计文档。这一步不改动你的镜像,也不会生成可执行程序。副作用只有一处——分析产物(设计文档与函数清单)会落在你指定的工作目录里,所以先确认输出目录再让它继续,不要让它写到镜像所在的位置。

可观察的成功信号:命令被识别并跑完,输出里出现引导 ELF 的位置、函数数量,以及一份设计文档的路径。

使用案例

案例一:把一张自有盘变成可分析的代码结构。/console-reverse 打开你的盘镜像,找到游戏代码,映射出引导 ELF、每一个函数以及一份设计文档,仓库说明把它写成驱动整个移植的那一步。这一步的输入只有你自己的盘镜像,输出是一份设计文档和一张函数级别的地图,本身不产出可运行程序。证据的边界也在这里:这一步被讲清楚了,但后续各阶段的逐条命令与产出清单,官方说明里没有给出,也就是说下一步具体做什么,需要你在对话里继续追问。

案例二:给重编译准备好真正跑起来的地方。仓库把 PS2Recomp 列为必需组件,定位是重编译器与移植运行所在的运行时,并且要自行 clone 和编译,用到 CMake 3.20 以上与 C++20 编译器。证据到构建要求为止:具体的 clone 地址与构建命令属于上游 PS2Recomp 仓库的范围,本仓库的说明没有复述。

使用边界

  • 起点只能是你自己拥有、自己镜像的盘;这里没有 ISO、没有 BIOS、没有下载来的内容,游戏数据也不会进入你打算分享的仓库或 Mod。
  • PS2Recomp 不是开箱即用:你需要一条可用的 C++20 工具链和 CMake,并愿意自己处理构建问题。
  • 给你的是技能与步骤说明,不是一份成品移植;能不能跑起来取决于镜像质量、逆向判断和编译环境。
  • 插件式安装只对 Claude Code 成立,命令会被命名空间化;在 Claude 里用粘贴方式装则没有前缀,两种写法的命令名并不相同。
  • 公开说明给出的是 11 个技能的整体分工,以及每一步依赖什么前置条件;具体到某个技能内部的命令清单与验收标准,公开说明没有逐条展开,需要你在实际调用时确认。