diff --git a/README.md b/README.md index 741515b2..9c5dc0da 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # Sly Cooper and the Thievius Raccoonus + -[![Build status][build-badge]][build-url] [![Discord Channel][discord-badge]][discord-url] [![Wiki][wiki-badge]][wiki-url] [![Contributors][contributors-badge]][contributors-url] +[![Build status][build-badge]][build-url] [![Discord Channel][discord-badge]][discord-url] [![Contributors][contributors-badge]][contributors-url] [![Docs][docs-badge]][docs-url] [![Wiki][wiki-badge]][wiki-url] [build-url]: https://ci.appveyor.com/project/TheOnlyZac/sly1/branch/main @@ -13,47 +14,30 @@ [contributors-url]: https://github.com/theonlyzac/sly1/graphs/contributors -[contributors-badge]: https://img.shields.io/github/contributors/theonlyzac/sly1?color=%23006ED1 +[contributors-badge]: https://img.shields.io/github/contributors/theonlyzac/sly1?color=%23db6d28 [discord-url]: https://discord.gg/2GSXcEzPJA -[discord-badge]: https://img.shields.io/discord/439454661100175380?color=%23006ED1&logo=discord&logoColor=%23FFFFFF +[discord-badge]: https://img.shields.io/discord/439454661100175380?color=%235865F2&logo=discord&logoColor=%23FFFFFF + + +[docs-url]: https://theonlyzac.github.io/sly1 +[docs-badge]: https://img.shields.io/badge/docs-doxygen-2C4AA8 [wiki-url]: https://slymods.info -[wiki-badge]: https://img.shields.io/badge/wiki-slymods.info-006ED1 +[wiki-badge]: https://img.shields.io/badge/wiki-slymods.info-2C4AA8 -This is a work-in-progress decompilation of [*Sly Cooper and the Thievius Raccoonus*](https://en.wikipedia.org/wiki/Sly_Cooper_and_the_Thievius_Raccoonus) for the PlayStation 2. It is based on the NTSC-U version of the game (`SCUS-971.98`). Documentation of the game's internal structures and mechanics can be found on the [SlyMods Wiki][wiki-url]. +This is a work-in-progress decompilation of [*Sly Cooper and the Thievius Raccoonus*](https://en.wikipedia.org/wiki/Sly_Cooper_and_the_Thievius_Raccoonus) for the PlayStation 2. It is based on the NTSC-U version of the game (`SCUS-971.98`). +* Documenation of the code is available on Github Pages at [theonlyzac.github.io/sly1](https://theonlyzac.github.io/sly1). +* of the game's internal structures and mechanics can be found on the [SlyMods Wiki][wiki-url]. -The goal of this project is to better understand how the game works. **This repo does not contain any game assets or code from the game's executable.** +The goal of this project is to better understand how the game works. This repo does not contain any game assets or code from the game's executable. -New contributors are welcome and encouraged to make a pull request! If you would like to help but aren't sure where to begin, you can [join our Discord server][discord-url] and/or read [CONTRIBUTING.md](/CONTRIBUTING.MD) for info on how to get started. +New contributors are welcome and encouraged to make a pull request! If you would like to help but aren't sure where to begin, you can [join our Discord server][discord-url] and read [CONTRIBUTING.md](/CONTRIBUTING.MD) for info on how to get started. -## Frequently Asked Questions - -#### What is a decompilation? - -When the developers created the game they wrote programming code that we call the source code. Then they compiled the source code into machine code that can run on the PS2. Our job is to reverse-engineer the compiled code and produce new, original code that behaves the same way. This process leaves us with code that is very similar (but not identical) to the source code and helps us understand what the programmers were thinking when they made the game. - -#### How does it work? - -We use a tool called [Ghidra](https://ghidra-sre.org/) which was created by the [NSA](https://www.nsa.gov/) for reverse-engineering software. Ghidra analyzes the game binary to identity functions, variables, data types and structures. We then reimplement each individual function by writing C++ code that produces the same output. We do not copy/paste any code or include any original assembly code from the game binary in the decompilation. - -#### Has this ever been done before? - -This is one of the first large-scale PS2 decompilation projects. We take inspiration from other projects like the [Super Mario 64 decomp](https://github.com/n64decomp/sm64) for the N64 and the [Breath of the Wild decomp](https://github.com/zeldaret/botw) for the Wii U (the latter being more similar in scope to this project). There is also a Jak & Daxter decomp/PC port called [OpenGOAL](https://github.com/open-goal/jak-project), though that game is written in 98% GOAL language rather than C/C++. - -#### Is this a matching decomp? - -Most of the decompiled code is not yet matching. We are actively researching the PS2 compiler and working to come up with with a process for function matching. - -#### How can I help? - -If you would like to contribute but have no idea where to start, you can [join our discord server](https://discord.gg/gh5xwfj) and/or read [CONTRIBUTING.md](/CONTRIBUTING.MD) for some resources and advice to get started! - - -## Getting Started +## Building ### Windows/Linux - CLI @@ -77,3 +61,36 @@ To build unit tests, `cd` into the build directory and run `cmake --build . --ta Clone the repo and open Visual Studio. Click `File > Open > CMake...` and open the file `CMakeLists.txt` in the main project folder. Set the startup item to `SCUS_971.98`. For unit testing, build the target "Check" and the tests should appear in the Test Explorer window. It will run the tests, and the results will show in the Test Explorer as well as the Output window. + + +## FAQ + +#### What is a decompilation? + +When the developers created the game they wrote programming code that we call the source code. Then they compiled the source code into machine code that can run on the PS2. Our job is to reverse-engineer the compiled code and produce new, original code that behaves the same way. This process leaves us with code that is very similar (but not identical) to the source code and helps us understand what the programmers were thinking when they made the game. + +#### How does it work? + +We use a tool called [Ghidra](https://ghidra-sre.org/) which was created by the [NSA](https://www.nsa.gov/) for reverse-engineering software. Ghidra analyzes the game binary to identity functions, variables, data types and structures. We then reimplement each individual function by writing C++ code that produces the same output. We do not copy/paste any code or include any original assembly code from the game binary in the decompilation. + +#### Has this ever been done before? + +This is one of the first large-scale PS2 decompilation projects. We take inspiration from other projects like the [Super Mario 64 decomp](https://github.com/n64decomp/sm64) for the N64 and the [Breath of the Wild decomp](https://github.com/zeldaret/botw) for the Wii U (the latter being more similar in scope to this project). There is also a Jak & Daxter decomp/PC port called [OpenGOAL](https://github.com/open-goal/jak-project), though that game is written in 98% GOAL language rather than C/C++. + +#### Is this a matching decomp? + +Most of the decompiled code is not yet matching. We are actively researching the PS2 compiler and working to come up with with a process for function matching. + +#### How can I help? + +If you would like to contribute but have no idea where to start, you can [join our discord server](https://discord.gg/gh5xwfj) and read [CONTRIBUTING.md](/CONTRIBUTING.MD) for some resources and advice to get started! + + diff --git a/logo.png b/logo.png new file mode 100644 index 00000000..97528fb5 Binary files /dev/null and b/logo.png differ