From a75fcbef87a8a970bd97dfc9da47a1b5bc9d4bfc Mon Sep 17 00:00:00 2001
From: Matthew Stanley <1379tech@gmail.com>
Date: Mon, 27 Jul 2026 15:02:34 -0700
Subject: [PATCH] docs(readme): frame features as framework capabilities, not a
fixed roster
Three corrections to framing that made the project read smaller than it is.
- Drop the 'eight titles brought up so far' count from the hero. A number reads
as a ceiling; the point is that bringing up a new game is configuration and
reverse engineering, not new engine work.
- Widescreen: 'six of the seven titles support it' described this ecosystem's
games rather than the capability. The cull-widening, FOV and aspect machinery
is framework tooling any project can enable from a [widescreen] block,
third-party forks included.
- Localization: retitle 'Play a Japanese-only game in English' to 'Swap
language on the fly'. The mechanism has no built-in notion of a default
language -- it is any source to any target, switched live. Describe what is
actually hard about it: substituted text is drawn through the game's own
glyph routine with per-character advances calibrated from real ink width in
VRAM, plus auto-fit condensing, so no engine change or regeneration is needed
to add a language.
Tables are TOML (translations/*.toml, one column per language, hot-reloaded),
verified against text_xlate.cpp and Tsumu's shipped table -- docs/
STRING_TRANSLATION.md still calls them translations.json, which is stale.
Also removes the aging Tomba demo-video embed; the screenshot grid carries the
visual pitch now. Anchors, images and file links all re-verified.
---
README.md | 51 ++++++++++++++++++++++++++++++++++-----------------
1 file changed, 34 insertions(+), 17 deletions(-)
diff --git a/README.md b/README.md
index 95974bd2..bd92aab6 100644
--- a/README.md
+++ b/README.md
@@ -9,10 +9,11 @@ disc into a native executable — MIPS R3000A translated to C, compiled to x64,
linked against a hardware-accurate runtime. Not an emulator: the game becomes a
program your CPU runs directly.
-Eight titles have been brought up on it so far, seven in this ecosystem and one
-by the community. They ship as standalone builds with widescreen, mods, and a
-launcher — and, thanks to a bundled open-source BIOS, most need no BIOS dump at
-all.
+Titles brought up on it ship as standalone builds with widescreen, mods, live
+language switching and a launcher — and, thanks to a bundled open-source BIOS,
+most need no BIOS dump at all. The framework is general-purpose: bringing up a
+new game is a matter of configuration and reverse engineering, not new engine
+work.
@@ -44,7 +45,7 @@ yet fully validated end to end.
| *Mega Man X4* | [MegaManX4Recomp](https://github.com/mstan/MegaManX4Recomp) | [releases](https://github.com/mstan/MegaManX4Recomp/releases/latest) | Playable; 2D widescreen. |
| *Mega Man X5* | [MegaManX5Recomp](https://github.com/mstan/MegaManX5Recomp) | [releases](https://github.com/mstan/MegaManX5Recomp/releases/latest) | Playable; 2D widescreen. |
| *Mega Man X6* | [MegaManX6Recomp](https://github.com/mstan/MegaManX6Recomp) | [releases](https://github.com/mstan/MegaManX6Recomp/releases/latest) | Playable; stages, controller, save/load; 2D widescreen to 21:9. |
-| *Tsumu Light* | [TsumuLightRecomp](https://github.com/mstan/TsumuLightRecomp) | [releases](https://github.com/mstan/TsumuLightRecomp/releases/latest) | Japanese-only title (SLPS-02253); first consumer of [on-the-fly translation](#play-a-japanese-only-game-in-english). |
+| *Tsumu Light* | [TsumuLightRecomp](https://github.com/mstan/TsumuLightRecomp) | [releases](https://github.com/mstan/TsumuLightRecomp/releases/latest) | Japanese-only title (SLPS-02253); first consumer of [live language switching](#swap-language-on-the-fly). |
| *Xenogears* — **community** | [OpokXeno/xenogears-recomp](https://github.com/OpokXeno/xenogears-recomp) | — | Independent project by [@OpokXeno](https://github.com/OpokXeno), who also contributed widescreen cull-site work upstream. |
Each game repo carries its own build/run instructions, keyboard/controller
@@ -127,10 +128,15 @@ Not a stretch and not a crop — a genuinely **wider field of view**, computed a
recompile time by widening the game's own projection and culling maths. 4:3
output stays byte-identical when widescreen is off.
-Six of the seven titles support it, across both 3D and 2D engines. 2D is the
-harder case: a sprite engine has no camera to widen, so the background tile
-ring, streamer and packet budget all have to be widened in step with the
-renderer.
+This is framework tooling, not a per-game bolt-on. Any project built on
+PSXRecomp can enable it from a `[widescreen]` block in its `game.toml` — the
+generic cull-widening, FOV and aspect machinery lives here, and bringing up a
+new title is a matter of locating that game's cull sites rather than writing new
+rendering code.
+
+It works on both 3D and 2D engines. 2D is the harder case: a sprite engine has
+no camera to widen, so the background tile ring, streamer and packet budget all
+have to be widened in step with the renderer.
 |
@@ -169,16 +175,27 @@ Tomba! ships three today — widescreen, skip-FMV, and a warp debug menu that
re-enables the developers' own hidden menu. Full format in
[`docs/MOD_PACKAGES.md`](docs/MOD_PACKAGES.md).
-## Play a Japanese-only game in English
+## Swap language on the fly
-A reusable localization layer captures the game's own strings out of memory and
-substitutes translated bytes on the fly, so menus, tutorials and dialogue render
-in a target language the original never shipped. It is multilingual by design —
-English is simply the first target — and driven by `translations/*.toml` with a
-language picker in the launcher.
+A general localization layer captures the game's own strings out of memory and
+substitutes translated bytes as it runs. Any source language to any target — the
+mechanism has no built-in notion of a "default" language, so a Japanese-only
+release can be played in English just as readily as an English one can be played
+in another language.
-*Tsumu Light* (SLPS-02253) is the first consumer. See
-[`docs/STRING_TRANSLATION.md`](docs/STRING_TRANSLATION.md).
+Switching is live. Tables are human-editable TOML under `translations/`, one
+column per language, hot-reloaded while the game is running — and the launcher
+carries a language picker. A translator can edit a line and see it in-game
+without rebuilding anything.
+
+The hard part is glyphs, not strings. Substituted text is drawn through the
+game's *own* glyph routine with per-character proportional advances calibrated
+by measuring the real ink width of each glyph tile in VRAM, plus auto-fit
+condensing so longer translations still fit a box sized for the original. That
+means no engine changes and no regeneration to add a language.
+
+See [`docs/STRING_TRANSLATION.md`](docs/STRING_TRANSLATION.md); *Tsumu Light*
+(SLPS-02253) is the first title using it.
## Renderers