Supported engine · AliceSoft System
AliceSoft's in-house System engine powers one of the largest catalogs in Japanese PC gaming — the entire Rance series, Evenicle, Daiakuji, the Toushin Toshi games and decades of releases. It's really two engines under one brand: classic titles run on System 3.x (an alice.exe / System39.exe interpreter with a System39.ain index and .ald archives), while modern titles run on System 4 (a System40.exe interpreter with a per-game .ain program image and .ald / .afa archives). RuneTranslate now reads both. It opens the .ald (Alice Linked Data) and .afa (Alice File Archive) containers in pure TypeScript — no GARbro, no external tools, no sidecar — and then goes after the text where it actually lives. On System 3.x, the player-facing dialogue isn't in the compiled .SCO scenarios at all: those only reference each message by number, and the strings themselves sit in the MSGI section of System39.ain, lightly obfuscated. RuneTranslate de-obfuscates that section, lists every message, and on export rewrites it in place — byte-for-byte identical when you haven't changed anything. On System 4, the .ain is a whole compiled-program image wrapped in one of two containers — a zlib-compressed AI2 file or a fully MT19937-encrypted one — and RuneTranslate unwraps both, walks the program's sections, and pulls the message and string pools out for translation. Because the game's bytecode points at each line by index rather than by byte offset, your translation can be any length and the references still line up. On export it re-packs the original container and writes the translated .ain loose next to the game, so the interpreter loads your version. This is a brand-new, best-effort engine still being verified across real games, so test the exported build before you redistribute.
The Rance series and AliceSoft's wider catalog run on a huge recurring cast and a dense web of place names, skills, and faction terms across tens of thousands of lines. Machine translation will romanize the same name three different ways. Glossary your characters, locations, and recurring terms up front so every line renders them identically from the first scene to the last. Glossary 101 →
Point RuneTranslate at the game directory — the folder with the game's interpreter (alice.exe / System39.exe for System 3.x, or System40.exe for System 4), its System39.ain or per-game .ain, and the .ald / .afa archives. Engine detection recognises the AliceSoft layout automatically and tells you which System version it is; your original folder is never modified.
RuneTranslate opens the .ald / .afa archives in pure TypeScript. For a System 3.x game it de-obfuscates the MSGI message section of System39.ain and lists every line. For a System 4 game it unwraps the .ain container (zlib-compressed AI2 or MT19937-encrypted), walks the program image, and pulls out the message pool (player-facing dialogue) plus the string pool. Code strings — format specifiers, debug text, identifiers — are surfaced but excluded by default so you only translate what the player sees.
These are dialogue-heavy, tone-sensitive games, so an LLM (OpenAI GPT-4o / Anthropic Claude) or DeepL usually reads best; free Google Translate or a local model (Ollama / LM Studio) covers short menu strings and item names, and you can point the OpenAI-compatible provider at OpenRouter or NanoGPT. An optional AI-refiner second pass tightens the literal phrasing.
AliceSoft text is Shift-JIS (cp932). RuneTranslate normalizes each translation before it writes it back — folding smart quotes, em-dashes, ellipses and accented Latin to plain ASCII — so a glyph the game font is missing can never silently turn into a “?”. English and other cp932-representable targets export cleanly.
On export, RuneTranslate copies the game and writes the translated .ain back: for System 3.x it rewrites the MSGI section in place; for System 4 it rebuilds the edited message / string pools and re-packs the original container (zlib or encrypted). The translated .ain is dropped loose next to the game, so the interpreter loads your version. Run the exported copy and it plays in your language.