Legal & Compliance
Disclaimer: We aren’t lawyers! The following information references specific legal statutes regarding software interoperability and reverse engineering simply to clearly demonstrate our commitment to strictly lawful development.
Project Intent
Rakata is an open-source research project and software library strictly designed to build interoperability with the data formats used by Star Wars: Knights of the Old Republic (KOTOR).
- Our Goal: We want to empower users to access, read, edit, and safely modify their own legally purchased game files on modern operating systems using open-source tools.
- No DRM Circumvention: This project completely avoids the game executable. We do not bypass, strip, or defeat any Digital Rights Management (DRM) or software encryption. We solely parse static data files (like
.rim,.bif, and.mdlfiles) for the pure purpose of compatibility. - No Pirated Assets: This repository does not contain, distribute, or host any copyrighted game assets (art, sound, proprietary code, or binaries) owned by the original rights holders. You must supply your own legally obtained copy of the game to do anything useful with this software.
Legal Basis for Reverse Engineering
This project operates under the specific “Interoperability” exceptions provided by copyright law in major jurisdictions:
🇨🇦 Canada (Jurisdiction of Maintainer)
Under the Copyright Act (R.S.C., 1985, c. C-42), this project relies on Section 30.61, which permits the reproduction of a computer program for the purpose of:
- (a) obtaining information that is necessary to allow the computer program to be compatible with another computer program; or
- (b) correcting errors in the computer program.
🇺🇸 United States
Under the Digital Millennium Copyright Act (DMCA), this project operates under the 17 U.S.C. § 1201(f) exception for Reverse Engineering, which states:
- (1) … a person who has lawfully obtained the right to use a copy of a computer program may circumvent a technological measure… for the sole purpose of identifying and analyzing those elements of the program that are necessary to achieve interoperability of an independently created computer program with other programs…
🇪🇺 European Union (Host Jurisdiction - Codeberg)
Under Directive 2009/24/EC (Legal Protection of Computer Programs), this project adheres to Article 6 (Decompilation), which allows for the reproduction of code and translation of its form when:
- (a) these acts are performed by the licensee or by another person having a right to use a copy of a program…
- (b) the information necessary to achieve interoperability has not previously been readily available…
- (c) these acts are confined to the parts of the original program which are necessary to achieve interoperability.
Acknowledgements
Portions of the initial file format logic were originally derived from research by the awesome PyKotor project (licensed under LGPL-3.0-or-later) and verified against original game binaries using clean-room reverse engineering techniques (via Ghidra and ret-sync).
Transcribed material in the MDL surface
Behavioural referencing
We observe what they emit so our output round-trips through them, which is the ordinary practice described in Contributing and needs no special mention. One item is different in kind, being content taken across rather than behaviour observed, and it is named here because that distinction is the one worth being honest about.
The eight MDL classification name strings in mdl/ascii_names.rs come from mdledit’s ReturnClassificationName (by bead-v, source). The numeric codes are independently ours, attested against retail models; only the human-readable names are borrowed.
mdledit states no licence: no licence file, and no licence text in any source header. We are not treating that silence as a grant, and it cannot be settled upstream either, since the author has been out of contact for years. We would rather remove a dependency than reason our way to a comfortable conclusion about someone else’s work.
This one cannot be removed by re-deriving it. swkotor.exe carries no ASCII name for any classification bit: no such string anywhere, no adjacent table of eight, and the words that do occur belong to unrelated subsystems. There is nothing on the engine side to compare these strings against in either direction, so they are unattestable rather than pending.
The MDL controller tables are no longer on this list. All 58 codes and their name strings are traced directly from swkotor.exe, from four named functions covering the base node, emitters, lights and meshes, and the set is closed rather than sampled: every call site of the three controller-registration routines in the binary falls inside those four. mdl/ascii_names.rs records the trace address against each table. The per-mesh sequence value and the mesh block write order are likewise ours, derived from the retail model corpus.
Behavioural referencing, which is not borrowing
Called out so its absence from the list above is not read as an oversight. Our ASCII writer matches mdledit’s field ordering and formatting conventions so files round-trip through it. Our reader tolerates node orderings that mdlops and PyKotor produce. Cross-checks against kotorblender’s reader confirmed several offsets that were independently traced, and reone’s saber-segment constants agree with a vertex count read from vanilla models. models/mesh_derived_fields.md compares how six tools each handle the same ambiguous fields, which is documentation about those tools rather than anything taken from them.
Where xoreos, kotorblender or reone has its own name for a field we also model, the source records theirs beside ours for cross-reference. Our identifiers are our own.
reone publishes GPL-3.0. KotorBlender exists as two maintained forks, ndixUR’s at GPL-2.0-or-later inherited from NeverBlender and seedhartha’s at GPL-3.0-or-later. All are compatible with this project’s own GPL-3.0-or-later. We are not lawyers and this is not legal advice; if any author would prefer different handling, we would rather hear it and act on it than defend a position.
- This project is open-source and licensed under GPL-3.0-or-later.
- Star Wars: Knights of the Old Republic is a trademark of its respective owners. This passion project is not affiliated with, endorsed by, or connected to Bioware, LucasArts, or Disney in any way.