ifstools

Extractor/repacker for Konmai IFS files


License
MIT
Install
pip install ifstools==1.15

Documentation

ifstools

Extractor for Konmai IFS files.

Features

  • Converts all textures to png without requiring a second program
  • Repacks without ingame display issues
  • Multithreaded recompression
  • Only changed textures are recompressed, the rest are cached
  • Works on eacloud music ifs files
  • Correctly names files under afp, bsi and geo folders
  • Converts internal binary xmls to plaintext, to facilitate further experimentation.
  • Dumps the ifs manifest so you can explore the format

Install

Just want an exe? Download the latest.

Have Python installed? Do this: pip install ifstools
Then run ifstools from anywhere in a command prompt.

Usage

usage: ifstools [-h] [-e] [-y] [-o OUT_DIR] [--tex-only] [-c]
                       [--bounds] [--uv] [--no-cache] [-m] [-s] [-r]
                       file_to_unpack.ifs|folder_to_repack_ifs
                       [file_to_unpack.ifs|folder_to_repack_ifs ...]

Unpack/pack IFS files and textures

positional arguments:
  file_to_unpack.ifs|folder_to_repack_ifs
                        files/folders to process. Files will be unpacked,
                        folders will be repacked

optional arguments:
  -h, --help            show this help message and exit
  -e, --extract-folders
                        do not repack folders, instead unpack any IFS files
                        inside them
  -y                    don't prompt for file/folder overwrite
  -o OUT_DIR            output directory
  --tex-only            only extract textures
  -c, --canvas          dump the image canvas as defined by the
                        texturelist.xml in _canvas.png
  --bounds              draw image bounds on the exported canvas in red
  --uv                  crop images to uvrect (usually 1px smaller than
                        imgrect). Forces --tex-only
  --no-cache            ignore texture cache, recompress all
  -m, --extract-manifest
                        extract the IFS manifest for inspection
  -s, --silent          don't display files as they are processed
  -r, --norecurse       if file contains another IFS, don't extract its
                        contents

Build an exe

pip install pyinstaller
pyinstaller ifstools_bin.py --onefile -n ifstools
Recommend doing this in a fresh venv so the module finder doesn't include more than required.

Notes:

  • dxt5 texture repacking is not fully supported - they will silently be converted to argb8888rev

Todo:

  • Recursive repacking for ifs inside ifs

I hope the rest is self explanatory. Confused? Create a new issue and tell me what docs to add.