Files
dragon-hd/README.md
T

58 lines
3.0 KiB
Markdown

# The I of the Dragon — fan tools (localization + HD)
Reverse-engineering and localization tooling for *The I of the Dragon* (Topware / Primal Software).
This repository tracks **only our own tools and documentation**. It does **not** contain the game,
its assets, or any cracked distribution — those are regenerated/produced locally from a legit copy.
## Layout
```
tools/ Python tooling (unpack, repack, preprocess, font patch, decoders)
docs/ DEVLOG, format specs, patch notes
```
Working data (not tracked): `original/`, `png/`, `report/`, `patch/`, `crack/`.
## Current localization status
The complete tutorial translation and Chinese font fixes were accepted in game
by the user on 2026-09-20. All 57 tutorial display literals are translated using
42 mappings. Tooltip wrapping, option-title centering, intro alignment, and the
Chinese full-stop baseline are fixed. The latest targeted regression run passes
39 tests; tutorial event logic remains byte-identical outside display strings.
See [教程汉化:构建、验证与恢复](docs/tutorial-localization.md) for reproducible
commands, accepted behavior, and the remaining project queue.
## Tooling
| script | purpose |
|---|---|
| `tools/res_unpack.py` | extract a `.res` archive (index + raw blobs, 16-byte aligned) |
| `tools/res_repack.py` | rebuild a `.res` byte-identically from a directory |
| `tools/preprocess.py` | convert textures to PNG + build classification report |
| `tools/make_plan.py` | build an HD upscale plan from the report |
| `tools/decode_dat.py` | decode/encode the XOR-obfuscated `Fonts.dat` / `*Description.dat` |
| `tools/fontparse.py` | parse `Fonts.dat` into font blocks and glyph rects |
| `tools/add_section.py` | add an executable section to the game PE |
| `tools/apply_cjk.py` | apply the double-byte font-rendering patch |
| `tools/build_cjk.py` | build the 2048x1024 UI font atlas + `cjk_glyph`/`cjk_metric` tables |
| `tools/cn_strings.py` | simplified-Chinese translation table (`Id` -> text) |
| `tools/make_cn_strings.py` | patch the `English` column of `Strings.dat` to GB2312 |
| `tools/install_cjk.py` | deploy/restore the whole patch into the game folder |
| `tools/script_text.py` | translate tutorial display strings without changing event code |
| `tools/tutorial_cn.json` | complete tutorial translation mapping |
| `tools/verify_tutorial_step1.py` | verify the complete tutorial against the pinned original (historical filename) |
| `tools/fix_full_stop.py` | lower U+3002 pixels in an existing atlas without changing other glyphs |
| `tools/xrefs.py` | find call/jmp xrefs in the game executable |
See `docs/` for the reverse-engineered formats and addresses.
Implementation history and remaining work:
[tutorial acceptance and subsequent small batches](docs/superpowers/plans/2026-09-20-high-impact-simple-first.md).
## Legal
No game data is distributed here. Patches are produced by the user against their own copy.