Plants vs. Zombies for PlayStation 2
Summary
A fan project ports the decompiled Plants vs. Zombies GOTY edition to PlayStation 2 and other platforms, replacing legacy renderers with SDL and OpenGL for cross-platform support.
View Cached Full Text
Cached at: 07/24/26, 05:02 PM
OptiJuegos/pvz-ps2
Source: https://github.com/OptiJuegos/pvz-ps2
re-plants-vs-zombies fork (ps2)
i am too lazy to explain all of this just build with “build ps2.bat” it has all the dependencies (windows)!! on linux you will need to edit the cmake config!!
a main.pak with compressed assets its recommended to avoid slow loading and crashing!
based on headshot2017 fork!! maximum respect to him!
Fork of Patoke’s PVZ GOTY decompilation with the following objectives:
- Replace renderer with SDL + OpenGL
- Replace Windows code with cross-platform code
-
Replace DirectSound/BASS/FMod with SDL Mixer X
- This project uses a fork of SDL Mixer X that adds compatibility with the MO3 format by using libopenmpt. This fork is located under SexyAppFramework/sound/SDL-Mixer-X
- main.pak support
- Optimize memory usage for console ports (Partial)
- Port the game to these platforms:
| Platform | Data path | Status |
|---|---|---|
| Windows (SDL2) | Same as executable | Works |
| Linux (SDL2) | Same as executable | Works |
| Haiku (SDL2) | Same as executable | Partially works: no music |
| Nintendo Switch | sdmc:/switch/PlantsvsZombies | Works on real hardware and Citron. Kenji-NX crashes on boot. |
| Nintendo 3DS | sdmc:/3ds/PlantsvsZombies | In development, might not have enough memory for Old 3DS, might barely work on New 3DS |
| Nintendo Wii U | No work started yet, but planned |
To play the game, you need the game data from PvZ GOTY. Copy “main.pak” and the “properties” folder to the path where the re-plants-vs-zombies executable is (or one of the above data paths for console ports).
Alternatively, you could use a PvZ .pak extractor tool and use extracted data instead of main.pak, but that’s up to you
Original README continues below
re-plants-vs-zombies
A project focused on decompiling the latest functionality from the first PvZ title and expand upon the game and its engine
The SexyAppFramework dating as back as 2005 is a very old game engine and it does not follow proper C++ conventions as per modern standards nor does it use a modern renderer backend
This project aims to modernize the engine by using features from the latest C++ standards aswell as replacing the old legacy DirectDraw and Direct3D7 renderers for the modern GLFW cross-platform wrapper aswell as expanding upon an old (now deleted) decompilation project of PvZ version 0.9.9 by Miya aka Kopie to get the best possible PvZ experience both for modders and players alike
DISCLAIMER
This project does not condone piracy
This project does not include any IP from PopCap outside of their open source game engine, this will only output the executable for a decompiled, fan version of PvZ
To play the game using this project you need to have access to the original game files by purchasing it
Roadmap
Currently focused on
- Add x64 support for the base game (Partial)
- Replace the old renderer backend for GLFW (WIP)
- Replace all Windows only code for cross-platform GLFW counterparts (WIP)
Left for when we have a working x64 build using GLFW
-
Add all functionality from the GOTY version of the game
- Achievements (Partial)
- Zombatar
Possible future features
-
Create an easy to use modding API for the game
- Parse zombies from files
- Parse plants from files
- Parse maps from files
- Add scripting for custom sequences
Installation
Visual Studio Community
Open the folder containing the CMakeSettings.json, wait until cache finishes generating and build the project
Other (Sublime, Visual Studio Code, MSYS2, etc..)
Run the following commands (assuming you have CMake installed with Ninja) where the CMakeSettings.json file is located
cmake -G Ninja -B cmake-build
cmake --build cmake-build
If running these commands does not create a successful build please create an issue and detail your problem
After you build, the output executable should be in the Debug or Release (depending on your build target) folder inside SexyAppFramework
Then you want to copy that executable inside of the original game’s root folder (or copy the contents of the original game folder inside the previously mentioned folder)
After that you should be able to just open the built executable and enjoy re-pvz!
Contributing
When contributing please follow the following guides:
SexyAppFramework coding philosophy
From the SexyAppFramework docs:
The framework differs from many other APIs in that some class properties are not wrapped in accessor methods, but rather are made to be accessed directly through public member data. The window caption of your application, for example, is set by assigning a value to the std::string mTitle in the application object before the application’s window is created. We felt that in many cases this reduced the code required to implement a class. Also of note is the prefix notation used on variables: “m” denotes a class member, “the” denotes a parameter passed to a method or function, and “a” denotes a local variable.
Contributor markings
Whenever you need to leave a comment for other developers to find you should do so with the following grammar:
- Always include the name of the contributor as in:
@Contributor
- For todos include the todo marking as in:
@Contributor todo
- Always add a colon to specify that the start of the comment starts there
@Contributor todo: Thing went wrong!
- If a new function has been reversed and you have found the address in the latest version of the game (or have reversed a certain class member offset) please note it as follows:
@Contributor GOTY: 0xADDRESS
Thanks to
- @rspforhp for their amazing work decompiling the 0.9.9 version of PvZ
- @ruslan831 for archiving the 0.9.9 decompilation of PvZ
- The GLFW team for their amazing work
- PopCap for creating the amazing PvZ franchise (and making their game engine public)
- All the contributors which have worked or are actively working in this amazing project
Similar Articles
@op7418: Oops—now it’s actually playable! With Seedance 2.0, the static GPT Image 2 frames for the ARPG *Jin Ping Mei* have been brought to life, complete with UI interactions and seamless scene transitions.
Seedance 2.0 animates static GPT Image 2 frames into a playable ARPG based on Jin Ping Mei, adding UI and smooth scene transitions.
Snowboard Kids 2 is 100% Decompiled
The author announces that Snowboard Kids 2 for the Nintendo 64 has been fully decompiled, meaning all functions now have matching C implementations that compile to the original assembly. The project took nearly two years and credits both the N64 decompilation community and AI coding agents (Claude, GLM, Codex) for acceleration.
UnDUNE II
UnDUNE II is a complete demake of the classic RTS game DUNE II, rebuilt from scratch in PICO-8 with all factions, missions, units, and original music remade.
Making Graphics Like it's 1993
A developer details building Catlantean 3D, a first-person shooter using 1993-era graphics techniques (256 colors, 320x240 resolution, hand-crafted assets, no AI) with a planned Steam release, focusing on palette rendering and asset creation.
Shipping Godot VR and Porting to PSVR2: A Partial Post Mortem
A detailed post-mortem of shipping a commercial VR game using Godot and porting it to PSVR2, discussing costs (~£80k early adopter tax), technical challenges like rewriting the render server, and community efforts for console porting.