Skip to content
/ rpx Public

A modern, feature-rich library and CLI tool for extracting RenPy RPA archives (RPA-1.0 to RPA-4.0) in NodeJS.

License

Notifications You must be signed in to change notification settings

Dynamicaaa/rpx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RPX

A multi-purpose Ren'Py tool


Modern JavaScript RPA toolchain for developers and modders


Maintainer: Dynamicaaa



Features Overview

Core Capabilities Advanced Functionality
Supports RPA-1.0 - RPA-4.0
Understands ALT-1.0 and ZiX-12A/12B loader-based variants
Runtime Detection
Detects Ren'Py/Python version from archive data
Dual Interface
CLI + Node.js API integration
`.rpyc` Auto-Decompiler
Powered by @dynamicaaa/unrpyc-js
Legacy & Modern Indexing
Understands `.rpi` and embedded index formats
XOR Key Encryption
Supports RPA-3.x & RPA-4.x encrypted archives
Obfuscated Headers
Recognises ZiX-12A, ZiX-12B, and ALT-1.0 signatures
Index Junk Recovery
Scans past junk prefixes to locate the compressed index
Cross-Platform
Works on Windows, macOS, and Linux
Pickle Protocols
Automatic pickle version detection

Quick Start

Installation

npm install @dynamicaaa/rpx
npx @dynamicaaa/rpx --help
npm install -g @dynamicaaa/rpx

CLI Usage

rpx extract -i game.rpa -o extracted/
rpx list -i game.rpa
rpx info -i game.rpa --verbose
rpx create -i dist/game -o dist/game.rpa --header ALT-1.0 --key 0x89ABCDEF

Programmatic Usage

import { RPX, extract, list, createArchive } from '@dynamicaaa/rpx';
const archive = new RPX('game.rpa');
await archive.readHeader();
await archive.parseIndex();
console.log('Files:', await archive.listFiles());
await extract('game.rpa', 'extracted');
await createArchive({ input: 'build/game', output: 'dist/game.rpa', version: 'ALT-1.0', key: '0x89ABCDEF' });

Command Reference

CommandDescription
rpx extractExtract files from an RPA archive.
rpx listList archive contents.
rpx infoDisplay archive header information.
rpx createPackage files into .rpa archives (RPA-1.0 - RPA-4.0, plus ALT-1.0 obfuscation support; ZiX extraction only).

Archive Creation Reference

OptionDescription
inputSource directory or file.
outputDestination archive path.
versionTarget header (1.0, 2.0, 3.0, 3.2, 4.0, ALT-1.0; default 3.0). ZiX variants are extraction-only.
keyOptional XOR key for encryption.
markerToggle "Made with Ren'Py" marker.
includeHiddenInclude hidden files.
forceOverwrite existing archives.
pickleProtocolOverride pickle version manually.
RPX understands ALT-1.0 key obfuscation and resolves ZiX-12A/ZiX-12B archives by consulting the accompanying `loader.py`/`.pyc` to recover verification codes. The extractor will also scan past junk prefixes before decompressing the index.

Runtime Detection

RPX automatically infers Ren'Py runtime metadata:

  • Detects Ren'Py 6.x / 7.x (Python 2) and Ren'Py 8.x (Python 3).
  • Displays pickle protocol version and script metadata.
  • Reports confidence levels and diagnostic notes.

Dependencies

RPX ships with a minimal set of runtime dependencies:


Documentation & Support

Project Overview | CLI Guide | API Reference | Examples | Troubleshooting


Contributing

We welcome contributions! Run tests, update docs, and describe edge cases. Open an issue for bugs or requests.


License

MIT (c) Dynamicaaa


Built with love for the Ren'Py developer community

About

A modern, feature-rich library and CLI tool for extracting RenPy RPA archives (RPA-1.0 to RPA-4.0) in NodeJS.

Resources

License

Stars

Watchers

Forks

Packages

No packages published