Final Fantasy VIII
Sobre el proyecto
Final Fantasy VIII es un videojuego de tipo RPG desarrollado por Squaresoft en 1999 para el sistema PlayStation, aunque posteriormente salió una versión para PC. Es la octava entrega de la serie de videojuegos Final Fantasy. Este juego se aleja de la tónica de fantasía mostrada en las entregas anteriores enfocándose en presentar a personajes más realistas y el primero en contar con un tema musical cantado para el juego. El juego costó en total para su realización unos tres mil millones de Yenes en Japón.
2 versiones de Final Fantasy VIII
Estás viendo: Final Fantasy VIII
Información oficial del proyecto
About
This is a work-in-progress decompilation project of Final Fantasy VIII (PS1, USA SLUS_008.92).
Progress
A more detailed progress report is available on decomp.dev
<table style="border-collapse: collapse; text-align: center;" border="1" cellpadding="8"> <thead> <tr> <th colspan="3">Total Progress</th> </tr> <tr> <th colspan="3"> <a href="https://decomp.dev/roengstrom/ff8-decomp"> <img src="https://decomp.dev/roengstrom/ff8-decomp.svg?mode=shield&label=Code+Match&color=%233828f7&measure=matched_code_percent" alt="Code Match"></a> <a href="https://decomp.dev/roengstrom/ff8-decomp"> <img src="https://decomp.dev/roengstrom/ff8-decomp.svg?mode=shield&label=Data+Match&color=%233828f7&measure=matched_data_percent" alt="Data Match"></a> </th> </tr> <tr> <th style="text-align: center;">Binary</th> <th>Functions</th> <th>Code</th> </tr> </thead> <tbody> <tr> <td align="center">Main Executable</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmain-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmain-code.json" alt="Code"></td> </tr> <tr> <td align="center">menumain.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenumain-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenumain-code.json" alt="Code"></td> </tr> <tr> <td align="center">menucfg.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenucfg-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenucfg-code.json" alt="Code"></td> </tr> <tr> <td align="center">menupty.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenupty-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenupty-code.json" alt="Code"></td> </tr> <tr> <td align="center">menusts.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenusts-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenusts-code.json" alt="Code"></td> </tr> <tr> <td align="center">menuabl.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenuabl-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenuabl-code.json" alt="Code"></td> </tr> <tr> <td align="center">menushop.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenushop-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenushop-code.json" alt="Code"></td> </tr> <tr> <td align="center">menuext.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenuext-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenuext-code.json" alt="Code"></td> </tr> <tr> <td align="center">menuitem.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenuitem-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenuitem-code.json" alt="Code"></td> </tr> <tr> <td align="center">menumgc.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenumgc-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenumgc-code.json" alt="Code"></td> </tr> <tr> <td align="center">menugf.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenugf-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenugf-code.json" alt="Code"></td> </tr> <tr> <td align="center">menujnc2.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenujnc2-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenujnc2-code.json" alt="Code"></td> </tr> <tr> <td align="center">menusav.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenusav-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenusav-code.json" alt="Code"></td> </tr> <tr> <td align="center">menucrd.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenucrd-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenucrd-code.json" alt="Code"></td> </tr> <tr> <td align="center">menututo.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenututo-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenututo-code.json" alt="Code"></td> </tr> <tr> <td align="center">menutmag.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenutmag-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenutmag-code.json" alt="Code"></td> </tr> <tr> <td align="center">menutips.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenutips-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenutips-code.json" alt="Code"></td> </tr> <tr> <td align="center">menutest.ovl</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenutest-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fmenutest-code.json" alt="Code"></td> </tr> <tr> <td align="center">field_init.bin</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Ffield-init-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Ffield-init-code.json" alt="Code"></td> </tr> <tr> <td align="center">intro.bin</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fintro-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fintro-code.json" alt="Code"></td> </tr> <tr> <td align="center">field.bin</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Ffield-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Ffield-code.json" alt="Code"></td> </tr> <tr> <td align="center">tripletriad.bin</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Ftripletriad-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Ftripletriad-code.json" alt="Code"></td> </tr> <tr> <td align="center">battle_render.bin</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fbattle-render-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fbattle-render-code.json" alt="Code"></td> </tr> <tr> <td align="center">battle.bin</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fbattle-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fbattle-code.json" alt="Code"></td> </tr> <tr> <td align="center">world.bin</td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fworld-functions.json" alt="Functions"></td> <td align="center" valign="middle"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Froengstrom.github.io%2Fff8-decomp%2Fbadges%2Fworld-code.json" alt="Code"></td> </tr> </tbody> </table>Development
Any help is greatly appreciated! Before opening a pull request, please read the contribution guidelines.
Below are some basic steps to get started and building the project.
The following distributions have been tested:
| Distro | Can build? |
|---|---|
| Debian 12 | ✅ |
| Ubuntu-22.04 | ✅ |
| Ubuntu-24.04 | ✅ |
| Ubuntu-26.04 | ❌ |
-
Prerequisites. This "guide" is for devs using debian/ubuntu on Windows using WSL 2
sudo apt update sudo apt install git make cpp gcc-mipsel-linux-gnu binutils-mipsel-linux-gnu binutils-mips-linux-gnu python3 python3-venv cmake g++ -
Clone the repo with submodules:
git clone --recursive https://github.com/roengstrom/ff8-decomp.git cd ff8-decomp git submodule update --init --recursive -
Provide your own disc image: You need a BIN file of FF8 Disc 1 (USA, SLUS-00892). Once extracted from the disk, place it inside the "rom" folder.
-
Run the setup:
make setuprunning this command creates a Python venv, install dependencies (such as splat), extract the bin disc and verify its SHA1, then extracts
SLUS_008.92, all executables and overlays. At the end it will run a full rebuild by doingmake fullThis runs
clean,split(runs splat on the executable + overlays),build-assets(converts binary assets to C source), andverify(assembles, links, and checks that each output matches the original SHA1).At the end of the command, you should see a list of overlays all with the State
Match.For incremental work, the individual targets are also available:
make split # re-run splat make build-assets # regenerate asset C source make verify # build and compare SHA1s make verify EFFECTS=all # ... including all 343 battle effect overlays -
objdiff GUI (optional). To diff against the original in objdiff:
make expected # builds the target objects, on a verified treethen open the repository in objdiff. Re-run after
make split.
References
This project stands on the shoulders of giants. A lot of work has already been put into figuring out the inner workings of FF8 which I have liberally used when starting with this project. A shoutout to the decomp community as well, this project wouldn't be possible without all the work that has been put in and the tools that have developed.
License
This project does not contain any game assets or copyrighted material. It is a clean-room decompilation for educational and preservation purposes. You must provide your own copy of the game to build.
