Skip to content

Archive Reading Library for FFVIII. Gives API to read from ZZZ or FIFLFS archives.

License

Notifications You must be signed in to change notification settings

Sebanisu/OpenVIII_CPP_WIP

Repository files navigation

OpenVIII CPP WIP

Image of CI passing or not. contributions welcome GPL v3 License C++ 20 GitHub followers Documentation Status

Credits:

Reference:

Requires:

  • C++ 20
  • GCC 10.2
    • Currently supported.
  • MSVC
    • I'm using some features visual studio doesn't support yet. But, they are pushing updates out regularly.
  • Clang
    • Missing <ranges> and missing <concepts>.
  • lz4
    • This is used in the remaster's archives.
  • ut
    • For testing.
  • Tools Library
    • For parcing buffers into types.

Prefer:

This is WIP and everything is subject to change.

This is a port of OpenVIII to C++. It's kinda an experiment. I want to keep is a modular as possible so you don't need to include what you don't want. I want to be able to compile on Linux and Windows atleast. Right now I might be supporting things in GCC that doesn't work in MSVC. I may move things out of the monorepo. I had everything in it's own library but I struggled to keep it working. I have learned some cmake tricks and maybe able to get this to work again.

Only things directly related to accessing FF8 should be in this project. If it's code that could be more generally licensed it should probably be in another library. This library has to be GPL because it refers to projects and references projects under the GPL. Not all the dependencies need to be GPL. I started Tools Library for things that don't need to be in this project.

The Plan:

  • TESTS!!!! - I'm using ut for my testing framework. This was overdue. I have test apps that just dump to console. But I needed unit tests for a long time. If I'm going to alter a file I want to try to make sure it's under test before I change it.

    • I'll probably move the apps that I wrote into their own project using this as a dependency. Like the one that extracts all the archives.
    • FS
    • FI
    • LZSS compression
    • LZ4 compression
    • FL
  • I need to add a configuration library, maybe the one FFNx uses. Right now everything is hardcoded.

    • This will be to store the path[s] to FF8 and such. Right now I'm using a hardcoded list. I could maybe have a windows only app that fetches the FF8 path from the registry. Though I wouldn't write one of those directly in the library because this will be cross platform.
  • Ability to quickly get at what you want.

    • Made functions to search archives for files and uncompress them.
      • FIFLFS
      • ZZZ
      • The slowest part is extracting from the nested compressed FIELD archives. So we either need to preextract the files to speed up operations or only extract on an as needed basis.
      • Extracted files in a directory.
  • Support for each of the file formats

    • FI
    • FS
    • FL
    • ZZZ
      • ZZZ is a uncompressed archive with a header of filenames offsets and sizes.
    • TIM
    • LZS
      • Lzss compressed raw 16-color pixels. Header is x y width, height.
    • TEX
    • PAK
  • Lightweight render tests. Later on write tests to quickly render things. Much like our debug menu on OpenVIII-monogame. I'll be able to open up maps and view them make sure the drawing logic is good. But like it'll be it's own lightweight exe that just populates a list of maps or something for each type I wanna test.

About

Archive Reading Library for FFVIII. Gives API to read from ZZZ or FIFLFS archives.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages