Chinese main menu: font atlas + GB2312 tables + Strings translation
- build_cjk.py: 2048x1024 UI atlas (original ASCII at 0,0 + full GB2312 at 12px) and cjk_glyph/cjk_metric tables. - cn_strings.py + make_cn_strings.py: escape-aware GB2312 rewrite of Strings.dat (46 entries). - install_cjk.py: one-shot deploy/restore (exe patch, atlas loose+res, strings). - apply_cjk.py: fix metrics cave code byte order (was (second<<8)|first) so CJK width measures correctly and centred labels are no longer flushed right. - docs: DEVLOG + patch notes for the atlas and the fix.
This commit is contained in:
@@ -3,6 +3,34 @@
|
||||
Working log for the *The I of the Dragon* localization / HD project.
|
||||
Newest entries on top.
|
||||
|
||||
## 2026-09-20 — Chinese in the main menu (first playable)
|
||||
|
||||
- Built `tools/build_cjk.py`: renders the full GB2312 set (7445 double-byte codes) as **12x12**
|
||||
glyphs with simsun (crisp/binary, matching the game's pixel font) into a **2048x1024** TGA.
|
||||
The original 256x128 ASCII artwork is copied to (0,0), so all existing `Fonts.dat` rects keep
|
||||
working unchanged (verified byte-identical). Also emits `cjk_glyph.bin` / `cjk_metric.bin`.
|
||||
Advance/height = 12 (the UI font cap height is ~11-12px), drawn 1px up to fit the cell.
|
||||
- `tools/cn_strings.py` + `tools/make_cn_strings.py`: translate the `English` column of
|
||||
`Strings.dat` to GB2312 (46 entries; escape-aware so `\"%s\"` formats survive).
|
||||
- `tools/install_cjk.py`: one-shot deploy/restore (backs up exe/res/strings; rebuilds `Textures.res`
|
||||
with the new atlas, drops the loose atlas, patches the exe and the strings).
|
||||
- **Result**: the main menu renders Chinese — 开始新游戏 / 载入游戏 / 选项 / 教程 / 制作人员 / 退出 /
|
||||
载入上次存档:"…" — confirmed by the user on screen.
|
||||
|
||||
### Fixed a byte-order bug in the metrics cave
|
||||
|
||||
The draw cave decoded the code as `(first<<8)|second`, but the metrics cave used
|
||||
`movzx eax,al; mov ah,[ebx+1]` which produced `(second<<8)|first`. Every CJK width measured as 0,
|
||||
so centred labels (the "Start New Game" button) were flushed right. Fixed to
|
||||
`movzx eax,al; shl eax,8; mov al,[ebx+1]`. Centring is now correct.
|
||||
|
||||
### Notes / next
|
||||
|
||||
- The menu button labels *are* dynamic (`Strings.dat`) — the earlier suspicion of baked button
|
||||
images was wrong; the layer confusion came from the animated particle background.
|
||||
- Remaining UI text that is baked into textures (credits, tutorial pics) still needs redrawing.
|
||||
- Next: translate the rest of `Strings.dat`, scripts and `*Description.dat`; then HD textures.
|
||||
|
||||
## 2026-09-20 — Double-byte font patch proven
|
||||
|
||||
- Reverse-engineered the whole text pipeline (see `patch-notes.md`).
|
||||
|
||||
Reference in New Issue
Block a user