Case study

re-plants-vs-zombies: decompiling and modernizing Plants vs. Zombies GOTY

Reconstructs C++ source for Plants vs. Zombies on PopCap’s open-source SexyAppFramework, starting from an earlier community decompilation of version 0.9.9 and adding functionality reversed from the Game of the Year edition, with functions annotated by GOTY addresses. The project also modernizes the engine with current C++ and is replacing the DirectDraw and Direct3D 7 renderers with GLFW. It builds a fan executable that runs from an original game folder, aiming at a modernized, extensible game rather than an identical binary.

Requirements & limits

  • README describes decompiling the latest functionality of the first PvZ title and expanding the game and its engine, building on a since-deleted 0.9.9 decompilation by Miya (rspforhp) that it credits ruslan831 with archiving. Its roadmap marks x64 support and achievements as partial, the GLFW renderer and cross-platform replacements as in progress, and Zombatar and a modding API as not done. There are no releases; the last commit is dated 2026-07-11.
  • Playing needs the original game files from a purchased copy; README links the Steam Game of the Year Edition but names no exact executable version. The built executable is run from that game folder, and the audio code loads bass.dll or fmod.dll at runtime instead of linking a committed copy. README says the repository includes no PopCap IP beyond the open-source engine; Resources.cpp/.h reconstruct the game’s generated resource-ID tables, data derived from the game as is usual for such projects.
  • Builds use CMake 3.16+ and C++23. README documents Visual Studio Community, whose CMakeSettings.json has x86 and x64 MSVC configurations, or CMake with Ninja; toolchain.cmake cross-compiles with x86_64-w64-mingw32 Clang and windres. The reviewed build produces a Windows executable, and the repository has no CI workflow.
  • The sources document no tests, CI or comparison with the original executable; contributors annotate reversed functions and class members with their GOTY addresses. Fidelity to the original game is not measured, and this collection built or ran nothing.
  • LICENSE dedicates the repository under CC0 1.0. The SexyAppFramework code derives from the engine PopCap made public, but PopCap’s license text is not included; the ogg code keeps Xiph.org’s BSD-style notice, and the FMOD 3 (Firelight, 1999–2002) and BASS 2.4 (Un4seen, 1999–2022) API headers keep their vendors’ copyrights. The original game and its files keep their rights holders’ terms. README says the project does not condone piracy; the reviewed sources establish no AI or REA use, and no runtime reproduction is claimed.

About this entry

Type
Case study
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Targets
Game

Sources reviewed

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · Patoke/re-plants-vs-zombies · Revision c469203
  2. CMakeLists.txt GitHub · Patoke/re-plants-vs-zombies · Revision c469203
  3. SexyAppFramework/CMakeLists.txt GitHub · Patoke/re-plants-vs-zombies · Revision c469203
  4. CMakeSettings.json GitHub · Patoke/re-plants-vs-zombies · Revision c469203
  5. toolchain.cmake GitHub · Patoke/re-plants-vs-zombies · Revision c469203
  6. LawnApp.cpp GitHub · Patoke/re-plants-vs-zombies · Revision c469203
  7. Resources.cpp GitHub · Patoke/re-plants-vs-zombies · Revision c469203
  8. SexyAppFramework/sound/BassLoader.cpp GitHub · Patoke/re-plants-vs-zombies · Revision c469203
  9. SexyAppFramework/sound/fmod.h GitHub · Patoke/re-plants-vs-zombies · Revision c469203
  10. SexyAppFramework/sound/bass.h GitHub · Patoke/re-plants-vs-zombies · Revision c469203
  11. SexyAppFramework/ogg/COPYING GitHub · Patoke/re-plants-vs-zombies · Revision c469203
  12. LICENSE GitHub · Patoke/re-plants-vs-zombies · Revision c469203

More in Games

All 231 entries in GamesGames case studies (189)