65 stable releases (8 major)
| 11.1.1 | Feb 7, 2026 |
|---|---|
| 11.0.2 | Dec 18, 2025 |
| 10.0.0 | Dec 4, 2025 |
| 9.0.4 | Sep 27, 2025 |
| 3.0.5 | Nov 30, 2024 |
#108 in Game dev
230KB
5K
SLoC
rvpacker-txt-rs-lib
rvpacker-txt-rs-lib that provides functions to extract the text from RPG Maker .rxdata, .rvdata, .rvdata2 and .json files to .txt format for easy translation.
It also provides the json module to convert .rxdata, .rvdata and .rvdata2 files to JSON and back.
This library is used in RPGMTranslate GUI and rvpacker-txt-rs CLI.
Installation
cargo add rvpacker-txt-rs-lib
Features
This crate provides core structs and functions in core module, but also exports wrappers around those, like Purger, Writer, Reader.
Reader/Writer/Purger
These structs abstract over the core module and process files, handling all system calls.
Example
use rvpacker_txt_rs_lib::{Reader, Writer, Purger, Error, FileFlags, EngineType};
fn main() -> Result<(), Error> {
let mut reader = Reader::new();
reader.set_files(FileFlags::Map | FileFlags::other());
reader.read("C:/Game/Data", "C:/Game/translation", EngineType::VXAce)?;
let mut writer = Writer::new();
writer.set_files(FileFlags::Map | FileFlags::other());
writer.write("C:/Game/Data", "C:/Game/translation", "C:/Game/output", EngineType::VXAce)?;
let mut purger = Purger::new();
purger.set_files(FileFlags::Map | FileFlags::other());
purger.purge("C:/Game/Data", "C:/Game/translation", EngineType::VXAce)?;
Ok(())
}
core module
This module provides structs Base, MapBase, OtherBase, SystemBase, PluginBase and ScriptBase.
Example
use rvpacker_txt_rs_lib::{core::{Base, MapBase}, Mode, EngineType, ReadMode};
use std::fs::read;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut base = Base::new(Mode::Read(ReadMode::Default(true)), EngineType::VXAce);
let mut map_base = MapBase::new(&mut base);
let mapinfos = read("C:/Game/Data/MapInfos.rvdata2")?;
let map_file_content = read("C:/Game/Data/Map001.rvdata2")?;
map_base.process("Map001.rvdata2", &map_file_content, &mapinfos, None)?;
// To get the translation, you must use `translation` after processing all the maps.
let translation_data = map_base.translation();
Ok(())
}
json module
json module provides generate and write functions to generate JSON representations of older engines' files and write them back respectively.
Example
use rvpacker_txt_rs_lib::{json::{generate, write}, EngineType, Error};
fn main() -> Result<(), Error> {
generate("C:/Game/Data", "C:/Game/json", false)?;
write("C:/Game/json", "C:/Game/json-output", EngineType::VXAce)?;
Ok(())
}
Serialization/Deserialization
All public enums and structs in this crate are serializable with serde.
Flat enums that contain only number variants are serialized with #[serde(into = "u8", try_from = "u8")] attribute, which converts enums to a single u8 integer, representing the variant. The same applies to FileFlags struct.
Support
Me, the maintainer of this project, is a poor college student from Eastern Europe.
If you could, please consider supporting us through:
Even if you don't, it's fine. We'll continue to do as we right now.
License
Project is licensed under WTFPL.
Dependencies
~8–11MB
~256K SLoC