EnginesGuidesFAQPatreonDiscordDownload
Sign in
RuneTranslate · translate games from Japanese and 30+ languages
EnginesGuidesCompareImage textSave editorCheat ModeFAQDownloadChangelogTrustpilotPatreonDiscordYouTubePrivacyTermsContact
All engines

Supported engine · NScripter / ONScripter

Full — rebuilt & played

NScripter / ONScripter translator — translate classic JP visual novels end-to-end

NScripter (by Naoki Takahashi) is the closed-source Windows engine a huge slice of Japanese doujin and commercial visual novels were authored on; ONScripter is the open-source (GPL) cross-platform runtime — Linux, macOS, Android, ONScripter-EN, Ponscripter — that fan translators actually ship their translated builds on. RuneTranslate covers both. It reads the game's loose script — an nscript.dat or pscript.dat where every byte is XOR'd against 0x84, or a plaintext 0.utf / 0.txt — decodes the Shift-JIS / CP932 (or UTF-8) dialogue, lists every translatable line, and on export re-encodes and re-obfuscates it (XOR 0x84) when the original .dat used it, writing a loose script the engine loads over any archive. It automatically applies the one-byte text marker so a translated English line isn't mis-parsed as a command (the classic NScripter trap), and it translates the source-language text (Japanese by default) baked into title screens, menus, and buttons via image-text OCR. Most games ship the script loose (which is fully supported), a script packed only inside an .nsa / .sar archive isn't read yet, and SPB-compressed image art is still being hardened. Verify on a real game before you rely on it.

Glossary tip for this engine

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 menu renders them identically. Glossary 101 →

Download RuneTranslate for Windows

How to translate NScripter / ONScripter

  1. STEP 1

    Open the NScripter / ONScripter game folder

    Point RuneTranslate at the game directory — the folder with the game's .exe (or an ONScripter binary), the script (nscript.dat, pscript.dat, or a plaintext 0.utf / 0.utf.txt / 0.txt), and the .nsa / .sar archives. Detection keys on those script markers — a bare 0.txt or a lone .nsa on its own isn't enough, it needs a corroborating NScripter signal (the engine font, an ONScripter binary, or a real script file). Your original folder is never modified.

  2. STEP 2

    Extract and decode the script

    RuneTranslate un-XORs the nscript.dat / pscript.dat against 0x84 (or reads a plaintext 0.utf / 0.txt directly), decodes the Shift-JIS / CP932 (or UTF-8) text, and lists every translatable line in the editor grouped by file. Engine markup and command tokens are masked behind numeric placeholders so the provider never mangles them.

  3. STEP 3

    Translate via your preferred provider

    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 you can point the OpenAI-compatible provider at OpenRouter or NanoGPT. An optional AI-refiner second pass tightens the literal phrasing.

  4. STEP 4

    Translate the baked-in image text

    Much of the NScripter UI is pre-rendered art, so the Japanese on title screens and buttons is pixels, not strings. Box each piece of text on an image, recognize it, translate it, and on export the translated image is written loose into the export so the engine loads it over the .nsa archive.

  5. STEP 5

    Export a translated build

    On export, RuneTranslate copies the game and writes the translated script back as a loose file — re-encoded to Shift-JIS / CP932 and re-obfuscated with XOR 0x84 if the original .dat used it, with the one-byte text marker applied — plus any translated images loose alongside it. Run the exported copy on NScripter or ONScripter and it plays in your language.

Supports

  • XOR-0x84 nscript.dat / pscript.dat decode + re-obfuscation, and plaintext 0.utf / 0.utf.txt / 0.txt scripts
  • Shift-JIS / CP932 round-trip (and UTF-8 on modern ONScripter-EN / Ponscripter builds)
  • The one-byte text marker auto-applied so English lines are not mis-parsed as commands
  • Baked-in image text on titles / menus / buttons via image-text OCR
  • Dialogue + UI strings (choices, captions) listed and grouped in the editor
  • Output is a full, runnable translated copy — loose files the engine loads over the archives

Limitations

  • Verify the exported game launches and reads correctly before you rely on it
  • A script packed only inside an .nsa / .sar archive (no loose nscript.dat / 0.txt) is not extracted yet
  • Genuine custom encryption (beyond the standard XOR-0x84 obfuscation) may not open
  • SPB-compressed and heavily stylised image art may need a manual touch-up
  • On legacy Shift-JIS scripts, non-Latin target languages are limited by what the game fonts can render

Related reading

The full NScripter / ONScripter translation walkthrough
Read the guide →

Related reading

RuneTranslate vs Textractor
Read the guide →

Other supported engines

GettextRPG MakerRPG Maker XP/VX/AceRen'PyKirikiriWolf RPGTyranoBuilderElectron VNUnityBakinSRPG StudioGodotArtemisYU-RISAliceSoftUnrealLiveMaker