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

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:

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

GLFW

Miya aka Kopie

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

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

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

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

create an issue

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:

From the SexyAppFramework docs:

Always include the name of the contributor as in:

@Contributor

@Contributor

For todos include the todo marking as in:

@Contributor todo

@Contributor todo

Always add a colon to specify that the start of the comment starts there

@Contributor todo: Thing went wrong!

@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

@Contributor GOTY: 0xADDRESS

Thanks to

@rspforhp for their amazing work decompiling the 0.9.9 version of PvZ

@rspforhp

@ruslan831 for archiving the 0.9.9 decompilation of PvZ

@ruslan831

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