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 ship on it, making it one of the newest engines RuneTranslate supports. 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 or any extra download. From inside the archive it extracts the dialogue, character names and choices out of the .ast (Lua-table) and .txt (line-oriented) scripts, lists every line in the editor, and preserves the inline engine commands — ruby / furigana, name-plates, colour, clickwaits — and line breaks across translation so the markup survives untouched. Export uses loose-file override: the translated scripts are written loose next to the archives, and because the Artemis runtime prefers a loose script on disk over the same path packed in a .pfs, the game simply reads your translation — there is no repack at all (the same approach as the Kirikiri patch flow). This is a brand-new, best-effort engine: it has not yet been verified on many real games — an in-game verification pass is still pending — and compiled .asb scripts aren't supported yet. Verify on a real game 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 writes the translated .ast / .txt scripts back as loose files at their original archive paths. The Artemis runtime prefers a loose script on disk over the same path packed in a .pfs, so the game just reads your translation — there's no repack and the archives are left untouched. Run the exported copy and it plays in your language.