Supported engine · Artemis
Artemis (by iMel Inc. / Mikage) is the Lua-scripted Windows engine behind a large slice of modern Japanese visual novels — roughly 730 releases on VNDB. RuneTranslate reads the engine's .pfs resource archives in pure TypeScript, with no external tools or sidecars: it handles the PF8, PF6 and PF2 formats, including PF8's SHA-1-keyed XOR encryption (the per-entry key is SHA-1 of the archive index), so the packed scripts open without GARbro. From inside the archive it extracts the dialogue, character names and choices out of both the readable .ast (Lua-table) / .txt (line-oriented) scripts AND the compiled binary ASB scenarios that many games actually ship — the form that begins with the ASB marker, often renamed to a custom extension (Crystal Rain, for example, uses .iet). RuneTranslate detects the compiled scenario by its signature rather than its extension, decodes its dialogue, and lists every line. It preserves the inline engine commands — ruby / furigana, name-plates, colour, clickwaits — and line breaks across translation so the markup survives untouched. For export, Artemis reads its scripts from mounted .pfs archives, so RuneTranslate builds a small override patch archive — root.pfs.NNN — for each source .pfs, holding just your translated scripts; Artemis mounts numbered .pfs archives last, so the patch shadows the originals and the game loads your translation with no full repack of the base archive (the scripts are also written loose as a harmless extra). It's the same override-patch idea as the Kirikiri patch.xp3 flow. This engine is still being verified across real games, so test the exported build before redistributing.
Visual novels lean on a fixed cast and recurring terminology across thousands of lines, and machine translation will spell a heroine's name three different ways across three chapters. Glossary your characters, place names, and recurring terms up front so every line of dialogue and every choice renders them identically. Glossary 101 →
Point RuneTranslate at the game directory — the folder with the game's .exe and its .pfs resource archives (often root.pfs / data.pfs and friends). Engine detection recognises the Artemis layout automatically; your original folder is never modified.
RuneTranslate opens the .pfs archives in pure TypeScript — PF8, PF6 and PF2 — and transparently decrypts PF8's SHA-1-keyed XOR data, no GARbro or sidecar required. It then parses the .ast (Lua-table) and .txt (line-oriented) scripts inside, pulling out dialogue, character names and choices, and lists every translatable line in the editor grouped by file. Inline engine commands and line breaks are masked behind numeric placeholders so the provider never mangles them.
These games are dialogue-heavy and tone-sensitive, 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 choices, and you can point the OpenAI-compatible provider at OpenRouter or NanoGPT. An optional AI-refiner second pass tightens the literal phrasing.
Artemis scripts thread ruby / furigana, name-plate, colour and clickwait commands through the dialogue. RuneTranslate freezes every one of them — plus the original line breaks — as placeholders during translation and restores them on the way out, so the translated line keeps the same furigana, the same name-plate and the same pacing as the original.
On export, RuneTranslate copies the game and builds a small override patch archive — root.pfs.NNN — per source .pfs, holding just your translated .ast / .txt scripts (they're also written loose as a harmless extra). Artemis mounts numbered .pfs archives last, so the patch shadows the originals and the game just reads your translation — no full repack, and the base archives are left untouched. Run the exported copy and it plays in your language.