Plants vs. Zombies PlayStation 2 版

Hacker News Top 产品

摘要

一个粉丝项目将反编译的 Plants vs. Zombies GOTY 版移植到 PlayStation 2 及其他平台,用 SDL 和 OpenGL 替换了遗留的渲染器,以实现跨平台支持。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/24 17:02

OptiJuegos/pvz-ps2 来源:https://github.com/OptiJuegos/pvz-ps2

re-plants-vs-zombies 分支 (ps2)

我懒得解释所有内容,直接用 “build ps2.bat” 构建即可,它包含了所有依赖 (Windows)!!
在 Linux 上,你需要修改 cmake 配置!!
建议使用包含压缩资源的 main.pak,以避免加载缓慢和崩溃!

基于 headshot2017 分支!!向他致以最高的敬意!

这是 Patoke 的 PVZ GOTY 反编译版本的一个分支,目标如下:

  • 用 SDL + OpenGL 替换渲染器
  • 将 Windows 代码替换为跨平台代码
  • 用 SDL Mixer X (https://github.com/WohlSoft/SDL-Mixer-X) 替换 DirectSound/BASS/FMod
  • 本工程使用了一个 SDL Mixer X 的分支,通过 libopenmpt 增加了对 MO3 格式的支持。该分支位于 SexyAppFramework/sound/SDL-Mixer-X 下
  • 支持 main.pak
  • 优化控制台移植版的内存使用 (部分完成)
  • 将游戏移植到以下平台:
平台数据路径状态
Windows (SDL2)与可执行文件相同正常工作
Linux (SDL2)与可执行文件相同正常工作
Haiku (SDL2)与可执行文件相同部分工作:无音乐
Nintendo Switchsdmc:/switch/PlantsvsZombies在真实硬件和 Citron 上正常工作。Kenji-NX 启动时崩溃。
Nintendo 3DSsdmc:/3ds/PlantsvsZombies开发中,老款 3DS 可能内存不足,新款 3DS 勉强可用。
Nintendo Wii U尚未开始,但有计划

要玩游戏,你需要拥有 PvZ GOTY 的游戏数据。将 “main.pak” 和 “properties” 文件夹复制到 re-plants-vs-zombies 可执行文件所在的路径(或上述控制台移植版的对应数据路径)。
或者,你也可以使用 PvZ .pak 提取工具,用提取出的数据代替 main.pak,但这取决于你。

原始 README 继续如下:

re-plants-vs-zombies

该项目专注于反编译第一部《植物大战僵尸》的最新功能,并扩展游戏及其引擎。
SexyAppFramework 可追溯到 2005 年,是一个非常古老的游戏引擎,不符合现代 C++ 规范,也不使用现代渲染后端。
本项目旨在通过使用最新的 C++ 标准特性,以及用现代的、跨平台包装 GLFW (https://www.glfw.org/) 替换旧的 DirectDraw 和 Direct3D7 渲染器,同时对 Miya(又名 Kopie)的 PvZ 0.9.9 反编译项目(https://github.com/rspforhp)进行扩展(该项目现已删除),为模组作者和玩家提供最佳 PvZ 体验。

免责声明

本项目不鼓励盗版。
本项目不包含 PopCap 除其开源游戏引擎之外的任何知识产权,仅输出一个反编译的粉丝版 PvZ 可执行文件。
要使用本项目玩游戏,你需要通过购买官方游戏(https://store.steampowered.com/app/3590/Plants_vs_Zombies_GOTY_Edition/)获得原始游戏文件。

路线图

当前重点

  • 为基础游戏添加 x64 支持 (部分完成)
  • 将旧渲染后端替换为 GLFW (进行中)
  • 将所有仅限 Windows 的代码替换为跨平台的 GLFW 对应代码 (进行中)

待完成:获得一个使用 GLFW 的 x64 可运行版本后

  • 添加 GOTY 版本的所有功能
  • 成就 (部分完成)
  • Zombatar

可能的未来功能

  • 为游戏创建易于使用的模组 API
  • 从文件中解析僵尸
  • 从文件中解析植物
  • 从文件中解析地图
  • 为自定义序列添加脚本支持

安装

Visual Studio Community

打开包含 CMakeSettings.json 的文件夹,等待缓存生成完成,然后构建项目。

其他环境(Sublime、Visual Studio Code、MSYS2 等)

CMakeSettings.json 所在的目录下运行以下命令(假设你已安装带 Ninja 的 CMake):
cmake -G Ninja -B cmake-build
cmake --build cmake-build
如果运行这些命令无法成功构建,请创建一个 issue (https://github.com/Patoke/re-plants-vs-zombies/issue) 并详细描述你的问题。

构建完成后,输出的可执行文件应位于 SexyAppFramework 文件夹内的 DebugRelease 目录(取决于你的构建目标)。
然后,将该可执行文件复制到原始游戏根目录(或将原始游戏目录的内容复制到前述文件夹中)。
之后,你应该就可以直接打开构建好的可执行文件,享受 re-pvz 了!

贡献

贡献时请遵循以下指南:
SexyAppFramework 编码理念

来自 SexyAppFramework 文档:

该框架与其他许多 API 的不同之处在于,某些类属性不通过访问器方法封装,而是通过公有成员数据直接访问。例如,应用程序窗口标题是通过在创建窗口之前为应用程序对象中的 std::string mTitle 赋值来设置的。我们认为这在很多情况下减少了实现一个类所需的代码。
另外值得注意的是变量前缀法:“m”表示类成员,“the”表示传递给方法或函数的参数,“a”表示局部变量。

贡献者标记
当你需要为其他开发者留下注释时,应使用以下格式:

  • 始终包含贡献者名称,例如:
  • @Contributor
  • 对于待办事项,包含待办标记,例如:
  • @Contributor todo
  • 始终使用冒号表示注释开始处:
  • @Contributor todo: 出问题了!
  • 如果某个新函数已被逆向,并且你已在最新版本游戏中找到其地址(或逆向出了某个类成员的偏移量),请按以下方式注明:
  • @Contributor GOTY: 0xADDRESS

致谢

  • @rspforhp (https://www.github.com/octokatherine) 对 PvZ 0.9.9 版本的反编译工作令人惊叹
  • @ruslan831 (https://github.com/ruslan831) 存档了 PvZ 0.9.9 的反编译版本 (https://github.com/ruslan831/PlantsVsZombies-decompilation)
  • GLFW 团队的出色工作
  • PopCap 创造了精彩的《植物大战僵尸》系列(并公开了他们的游戏引擎)
  • 所有在过去、现在积极贡献这个神奇项目的贡献者们

相似文章

Snowboard Kids 2 已实现100%反编译

Hacker News Top

作者宣布,任天堂64游戏《Snowboard Kids 2》现已完全反编译,意味着所有函数都有了对应的C语言实现,并能够编译回原始汇编代码。该项目耗时近两年,功劳归于N64反编译社区以及AI编程助手(Claude、GLM、Codex)的加速作用。

UnDUNE II

Hacker News Top

UnDUNE II 是对经典即时战略游戏《沙丘2》的完整降级重制版,使用 PICO-8 从头重建,所有阵营、任务、单位以及原创音乐均被重制。

像1993年那样制作图形

Hacker News Top

一位开发者详细介绍了如何构建《Catlantean 3D》——一款采用1993年时代图形技术(256色、320x240分辨率、手工制作资产、无人工智能)的第一人称射击游戏,计划在Steam上发布,重点讲解调色板渲染和资产创建。