kujata icon indicating copy to clipboard operation
kujata copied to clipboard

Translates Final Fantasy 7 assets to web-friendly formats like JSON and glTF

Logo

kujata

Translates Final Fantasy 7 assets to web-friendly formats like JSON and glTF

Current Features

  • Translate FF7 field character models and animations (char.lgp) to JSON and glTF

    • battle model support coming soon
    • reverse translation (glTF-to-ff7) coming soon
  • Translate FF7 field scene data (flevel.lgp) to JSON

    • translates field scripts, gateways, tiles, palettes, textures, etc., but not all sections yet (only encounters is missing)
    • renders separate layers for background images
  • Translate FF7 kernel data (kernel.bin, kernel2.bin) to JSON

    • All sections except commandData, attackData, battleAndGrowthData, initData
    • Some improvements still to be made, mainly around consistent naming and materia data
  • Translate FF7 window data (window.bin) to multiple per palette pngs

    • All window icons and colours
    • All text icons and colours
    • Every asset with it's prefered palette colors in its own separate png
  • TIM and TEX file loaders and converts into per palette pngs

Pre-requisites and setup

  • "git clone" this repo
  • install NodeJS and run "npm install" to install dependencies
    • https://nodejs.org/en/download/
  • locate field/char.lgp and field/flevel.lgp from your Final Fantasy 7 PC installation
  • use unlgp 0.5b to extract lgp files to a directory
    • see https://github.com/picklejar76/kujata/lgp-0.5b/bin/unlgp.exe
  • use TexTool_0.10 to translate TEX files to png (as needed)
    • see https://github.com/picklejar76/kujata/tex-tool-0.10/TexTool.exe
  • edit config.json to configure your input and output directories
    • see https://github.com/picklejar76/kujata/config.json

How to translate field char data (field/char.lgp) to glTF

  • Run "node test-ff7-to-gltf-translator.js"
    • This translates AAAA.HRC (Cloud skeleton) to aaaa.gltf and aaaa.bin
      • uses AAFE.A (Cloud standing animation) as base structure in the output
      • includes all Cloud animations (based on Ifalna DB) in the output
  • Look at ff7-gltf/viewer/viewer.html for example of how to view in html page
  • Edit the js to translate other models as desired
  • For help, reach out to the author: [email protected]

How to translate field flevel data (field/flevel.lgp) to JSON

  • Look at https://github.com/picklejar76/kujata/ff7-asset-loader/test-flevel-loader.js
  • Better instructions coming soon
  • For help, reach out to the author: [email protected]

How to translate kernel data (kernel/kernel.bin, kernel/kernel2.bin) to JSON

  • Look at https://github.com/picklejar76/kujata/ff7-asset-loader/test-kernel-extractor.js
  • Better instructions coming soon
  • For help, reach out to the author: https://github.com/dangarfield/kujata

How to translate .TIM of .TEX files into PNGs

  • Look at https://github.com/picklejar76/kujata/ff7-asset-loader/test-kernel-extractor.js
  • new TimFile().loadTimFileFromBuffer(file.buffer).saveAllPalettesAsPngs(outputFilePath)
  • new TimFile().loadTimFileFromPath(file.path).saveAllPalettesAsPngs(outputFilePath)
  • new TexFile().loadTexFileFromBuffer(file.buffer).saveAsPng(outputFilePath)
  • new TexFile().loadTexFileFromPath(file.path).saveAsPng(outputFilePath)

Thanks goes to...

  • qhimm community
  • Aali, for patching FF7, graphics work, lgp/unlgp utility, etc.
  • Borde, for authoring Kimera and TexTool_0.10
  • DLPB, for authoring too many tools to list here
  • ficedula, for authoring multiple tools, including lzs decompressor and Ifalna model viewer
  • Kaldarasha, for model editing experience and design advice, etc.
  • halkun, for evangelizing glTF, FF7 file spreadsheet, etc.
  • Sega Chief, for field model friendly names, etc.
  • quantumpencil, for sister-ray
  • Jusete, for finding a good kujata logo
  • others TBD; please let me know if I left out any person or acknowledgement!