# STELLAVANITY — English Translation Patch

A fan English translation of the doujin shmup **STELLAVANITY** (`SV123.exe`, v1.23 only).

This is a **patch toolkit**, not a copy of the game. You supply your own original `SV123.exe`;
the build reads it and writes a translated copy plus loose override files. Your original exe
and save files are never modified.

All the strings were translated by artificial intelligence, so some terms may not be correct.
If you know Japanese and want to help with the revision, contact me somewhere from [yorugith.com](https://yorugith.com).

Buy **STELLAVANITY** at [DLsite](https://www.dlsite.com/home/work/=/product_id/RJ091855.html).

See [`changelog.txt`](changelog.txt) for the current patch version and release history.

---

## How it works

Most of STELLAVANITY's on-screen text is hardcoded as Shift-JIS strings **inside `SV123.exe`**,
not in the data files. So the patch is mostly **in-place exe string patching**. Because of that,
this translation only works with **v1.23** (the latest version at the time of writing). It works in two parts:

1. **In-place exe patching** — each English string is written over the original bytes and
   NUL-padded, so the exe stays exactly the same size (no relocation). Every translation fits
   the original byte budget; the patcher refuses to write rather than overflow.
2. **Disk-priority patch** — a single `JNZ→JMP` edit makes the engine load loose
   `datpatch2/*.dat` and image files from disk before the `.sv` archive, so the English data
   and translated images take effect.

Everything is generated from **`translations.json`**. To change
any wording, edit it and rebuild.

---

## How to Install

You have 2 options to install this translation:

1. Download the pre-pached files and follow the INSTALL.txt instructions.

or

2. Build and apply the patch yourself (very simple, just run a python script), for this refer to the next section.



## Build the patch

Before building the patch, you will need the following items:

- Your own legally-obtained **STELLAVANITY v1.23** copy (the folder containing `SV123.exe`).
- **Python 3** installed.

To build the translation patch, run the following command:

```sh
python3 patch.py --exe "/path/to/your/SV123.exe"
```

This produces an install-ready folder named **`translation-patch-v<version>/`** containing:
- `SV123_EN.exe` — the translated executable (run this instead of `SV123.exe`)
- `datpatch2/` — loose English data (medals, accessory descriptions)
- translated UI images
- `manual english/` — the English translation of the game manual (open `index.html`)
- `lore archive english/` — the English translation of the original website's story / world /
  character / tips pages (open `index.html`)
- `INSTALL.txt` — install steps

### Optional extras

```sh
python3 patch.py --exe "/path/to/your/SV123.exe" \
                 --config-exe "/path/to/your/起動前設定.exe" --practice
```

- `--config-exe PATH` — also translates the standalone graphics config tool
  (`起動前設定.exe`) in place and writes **`config_en.exe`** (run it instead of the original).
- `--practice` — also writes **`SV123_EN_FREE_PRACTICE.exe`**, a copy of `SV123_EN.exe` with
  every Practice-menu option unlocked (all difficulties × areas 5–7, the secret/true-boss
  content. Both extra exes stay the exact same size as their
  originals; only a handful of bytes change. The RANK unlock reuses the addresses from
  [`svprac`](https://github.com/inakilbss/svprac), credits to inakilbss.

## Install

1. **Backup** your `SV123.exe`, your saves (`system.dat`, `system2.dat`), and the `replay/`
   folder first.
2. Copy **everything in that `translation-patch-v<version>/` folder** into your STELLAVANITY game
   folder (next to the original `SV123.exe`). Nothing will be overwritten.
3. Run **`SV123_EN.exe`** or **`SV123_EN_FREE_PRACTICE.exe`**.

To revert, just delete the copied files and run the original `SV123.exe` again.
You can also keep both versions side by side: run `SV123.exe` to play the original in Japanese, or `SV123_EN.exe` to play the translated version (or the free practice version).

---

## Layout

```
README.md            this file
changelog.txt        patch version + release history
patch.py             pacher script -> translation-patch-v<version>/
translations.json    all translated text (exe strings + loose-file cells)
templates/           original JP .dat files used as loose-file structure templates
loose_images/        translated UI image overrides
manual english/      English translation of the game manual (HTML)
lore archive english/     English translation of the original site's story/world/character/tips pages (HTML)
translation-patch-v<version>/   the built patch (created by patch.py)
```

---

## Credits

This is a fan translation and is not affiliated with the original author (TRIS-GRAM / Feathered Ether). Requires your own
copy of the game.

- **Yorugith** (@yorugith) — reverse engineering, tooling and image edits.
- **Claude Opus 4.6 (Anthropic)** — Japanese -> English text translation.
