GithubHelp home page GithubHelp logo

ffvii's Introduction

FFVII

Match Status Decomp Status

An in-progress decompilation of the original US release of Final Fantasy VII on the PSX.

Building (Linux)

Install build dependencies

The build process has the following package requirements:

  • git
  • build-essential
  • binutils-mips-linux-gnu
  • python3
  • bchunk
  • 7z

Under a Debian based distribution, you can install these with the following commands:

sudo apt-get update
sudo apt-get install git build-essential binutils-mips-linux-gnu python3 bchunk p7zip-full

Clone the repository

Clone https://github.com/Drahsid/ffvii.git in whatever diretory you wish. Make sure to initialize the submodules!

git clone https://github.com/Drahsid/ffvii.git --recursive
cd ffvii
git submodule init

Install Python3 requirements

Run pip3 install requirements.txt

Prepare your base images

In the directory base place the .bin and .cue files of each disk in this folder with these names:

disk bin/cue filename
1 bin ffvii1.bin
1 cue ffvii1.cue
2 bin ffvii2.bin
2 cue ffvii2.cue
3 bin ffvii3.bin
3 cue ffvii3.cue

Extracting the contents of the disks

The first time that you run make setup, assets will be extracted from your disks into the SCUS_941 directory acoording to common_files.yaml. This will take a few minutes! You can use make ubernuke to clean the relevant directories if you need to re-extract your assets.

Build the code

Just run make to build. If the build succeeds, a folder will be produced with the name build, inside this, you will find the output.

Contributing

Contributions are welcome. If you would like to reserve a function, open a PR with the function or file name(s).

Big TODOs

Currently, capstone has no logic to disassemble GTE instructions (which are COP2 instructions,) and thus, these are interpreted as data. This means that any code that uses these are effectively not possible to decompile back into C (for now).

The process of extracting assets from the disk files is a two-step process, and optimally would become a single-step process.

Additionally, there is currently not a method to magically re-assemble the disk.

ffvii's People

Contributors

drahsid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

halibutsurprise

ffvii's Issues

[message] LameGuy64 has ISO build tools and FFHacktics is working on GTE stuff

LameGuy64:
https://github.com/Lameguy64?tab=repositories

Features include the most mature SDK to date, ISO extraction and build tools, physical hardware debugging tooling, and PS1 image/art asset handling software.

FFHacktics stuff:
https://ffhacktics.com/wiki/Store_Rotation_matrix_elements_to_GTE
https://ffhacktics.com/wiki/Store_Translation_Vectors_to_GTE
https://ffhacktics.com/wiki/Get_vector*matrix_from_GTE
https://ffhacktics.com/wiki/Routine_Locations

The last link has plenty of redirects, do not hesitate to click on vaguely described things that are near things relevant to your interests.

More important, you should ask them on their discord about their tooling.

The Castlevania SOTN decompilation team also has impressive tooling, you should chat with them.
https://github.com/Xeeynamo/sotn-decomp

Typo in setup instructions

ReadMe.md line 33:
"Run pip3 install requirements.txt"

Should read
"Run pip3 install -r requirements.txt"

My research suggests the original command creates the config file, while the -r flag installs using it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.