55 lines
2.6 KiB
Markdown
55 lines
2.6 KiB
Markdown
# libcmo21
|
|
|
|
The library for CMO (also accept NMO, VMO and NMS) file RW (read and write). It is also a Minimalist Virtools Environment.
|
|
|
|
> Write with one library. Load and save Virtools file everywhere.
|
|
|
|
## Status
|
|
|
|
This project is now suspended and may be still suspended eternally due to following reasons:
|
|
|
|
* All ultimate goals are achieved.
|
|
* The complexity of this project and legacy bugs.
|
|
* The lost interest and the lack of time of mine.
|
|
|
|
In following life time of this project, only easy-to-be-resolved critical bugs will be fixed.
|
|
|
|
## Introduction
|
|
|
|
The aim of this project is creating a universal library which can RW CMO files or any other Virtools files without any Virtools dependencies.
|
|
|
|
This project will not link any original Virtools dynamic library. So this project can be ported to any platform if the compiler and runtime libraries support.
|
|
|
|
This project only involving specific Virtools version, 2.1. Other too higher Virtools versions are not considered by this project.
|
|
|
|
This project is barely based on the reverse work of doyaGu who decompile `CK2.dll`, `VxMath.dll` and `CK2_3D.dll`. The program [unvirt](https://aluigi.altervista.org/papers.htm#unvirt) created by Luigi Auriemma, which is licensed by GPL-v2, also inspire my work.
|
|
|
|
**The difference between this project and other Virtools libraries (e.g. [doyaGu/Ballanced](https://github.com/doyaGu/Ballanced)), is that this project is not focusing on re-creating the whole Virtools engine. This project only focus on the Virtools files RW, and it only just implement a minimalist Virtools environment for achieving this.**
|
|
|
|
## Goals
|
|
|
|
The ultimate goals of this project are:
|
|
|
|
* Create a library which can read Virtools file and do not limited on x86 platform by original Virtools implement.
|
|
* Create a universal dynamic library for Ballance Map file loading.
|
|
- Create a Python binding for the loader. And allow user can export Ballance Map from Blender on Linux platform natively.
|
|
- Create a C# binding for the loader to enable that I can load Ballance Map in Godot on Linux / Android platform natively.
|
|
|
|
These goals now are all achieved.
|
|
|
|
## Project Layout
|
|
|
|
* LibCmo: Core library. It is a static library because I don't want to process export table things. Link to your program freely.
|
|
* Unvirt: Interactive Virtools file viewer. Can provide more detail than Luigi Auriemma's unvirt.
|
|
* Ballance: Ballance related stuffs which utilize LibCmo.
|
|
- BMap: A dynamic library which is specific for Ballance Map loading and saving.
|
|
- BMapInspector: An inspector for checking Ballance Map.
|
|
|
|
## Contributions
|
|
|
|
See [Contribution Guideline](./CONTRIBUTING.md)
|
|
|
|
## Compile
|
|
|
|
See [Compile Manual](./COMPILE.md)
|