- Final Fantasy Inside Wiki - FF8
- Final Fantasy Inside Wiki - LZSS format
- Doomtrain Wiki
- OpenVIII-monogame
- Deling
- Hyne
- Doomtrain
- FFNx
- PyFF7
- C++ 23
- GCC 16
- Currently supported.
- MSVC
- Some newer language/library features may still lag behind GCC support.
- Clang
- Currently untested. It may already work or may require some changes to the library.
- lz4
- Used for remaster archive support.
- ut
- Unit testing framework.
- fmt
- Formatting library.
- spdlog
- Logging library.
- Tools Library
- Used for parsing buffers into types.
- Back end first.
- Lazy operations over eager
- Functional style
- Constexpr
- Algorithms over loops
This project started as a port of OpenVIII to modern C++, but gradually became more focused on being a reusable back end library for reading, writing, extracting, and working with FF8 file formats and archives.
The long term goal is still to continue porting functionality from OpenVIII where it makes sense, but most recent development has focused on tooling support and reusable library code instead of rebuilding the engine itself.
The library is intended to stay modular so projects only need to include the pieces they actually use. The primary development targets are Linux and Windows.
This project is currently used by:
There is still a large amount of functionality from OpenVIII that has not been ported into this library yet.
Only things directly related to accessing or manipulating FF8 data should live in this repository. More general purpose code should be moved into separate libraries when possible.
This library is GPL because it references and derives from GPL related projects and research. Not all dependencies need to be GPL licensed.
Some reusable code has already been moved into:
- FI
- FS
- FL
- ZZZ
- FIFLFS
- LZSS
- LZ4
- PAK
- TIM
- TEX
- LZS image data
- PNG export support
- Archive extraction tools
- Archive search tools
- Compression utilities
- Texture conversion utilities
- Field rendering/debug utilities
The project currently uses:
Coverage currently includes:
- FS
- FI
- FL
- LZSS compression
- LZ4 compression
- PupuID
- UniquifyPupu
There are still older test applications that dump results to console. Over time these should move into proper automated unit tests.
- Expand unit test coverage
- Continue porting OpenVIII functionality where useful
- Improve cross platform support
- Improve archive editing support
- Add configuration support instead of hardcoded paths
- Continue separating reusable code into standalone libraries
- Add lightweight rendering validation tools
- Add more FF8 format support
- FI
- FS
- FL
- ZZZ
- TIM
- LZS
- TEX
- PAK
This project is still WIP and APIs, formats, and internal structures are subject to change.