Skip to content

champyen/sango2_tc_patch

Repository files navigation

吞食天地2 同能網版本 正體中文化

正體化流程

  1. 建立 ROM 內用字列表
    透過 font_view.c 觀察 0x90910 ~ 0x99010 間存放的字
    存檔為 char_list.txt

    檔案格式為:
起始位置(16進位),個數-1
依照個數指定的文字


然而要將檔案轉存為 UTF-16LE 才可以使用

  1. 產生 11x11 字型檔案
    目前找到的點陣字型有兩個
    俐方體 - https://github.com/ACh-K/Cubic-11
    螢火飛新宋 - http://www.study-area.org/apt/firefly-font/
    字型必須要轉換為 bdf 這個 bitmap 格式來使用
    linux 上可以透過 otf2bdf 這個程式,

    預先處理的 BDF 字型生成方式:
    otf2bdf Cubic_11_1.100_R.ttf -p 11 -r 80 -o cubic11_11_80.bdf
    otf2bdf fireflysung.ttf -p 11 -r 80 -o firefly_11_80.bdf
    pcf2bdf -o wqysong9.bdf wqy-bitmapsong/wenquanyi_9pt.pcf

  2. 產生 16x16 字型, 位置在 0x1D810 ~ 0x20010 之間

  3. (optional) 從日版擷取 CAPCOM 起始畫面

  4. 轉換 2. 當中的 bdf 字型寫到 ROM 對應的位置
    這主要透過 rom_patch.c 這支程式

  5. 關於 ROM 當中 11x11 的存放方式
    基本上文字的點是以 raster scan 的次序連續存放在 16 bytes (128b) 中, 比較不直覺的是每個 byte 是從 low bit 到 high bit 的次序存放, 而非 NES 1BPP/2BPP 常見的 high bit to low bit 的次序

  6. 關於 ROM 當中對白的存放方式
    對白的存放位置請參考 Zeven 大的筆記
    對白的上下位指向的位置存放著對白的資訊, 由文章中可以得知 0xFx 使用為對白命令
    在 5. 當中提到的 11x11 文字存放的起始位置為 0x90010
    在 0x90010 ~ 0x90E00 對白中是直接透過 1 BYTE (0x00 ~ 0xDF) 來直接取用
    在 0x91010 ~ 0x9xxxx 區間的部份, 會透過 2 BYTEs 來取得位值
    BYTE 0: 數值範圍 0xE0 ~ 0xEx - 來選擇 0x910F0 ~ 0x9F010 的區間
    BYTE 1: 數值範圍 0x00 ~ 0xDF - 來選擇 0x9x010 ~ 0x9xE00 存放字
    那麼如果每個區間的 index 為 0xE0 ~ 0xFF(對白中的指令/控制碼), 有可能造成對白上的解讀問題
    所以可以觀察到在每段 0x1000 的區間中 0xE00~0xFFF 都不使用, 就不會產生 00
    以下為主要對白存放位置:

  • 劇情對白:
    第一部份 0x54410 ~ 0x56C10
    第二部份 0x58410 ~ 0x592D8
    第三部份 0x5C410 ~ 0x5D51B
    第四部份 0x60410 ~ 0x61BF6
  • 戰鬥對白
    第一部份 0x80410 ~ 0x81185
    第二部份 0x84410 ~ 0x86E1B
    第三部份 0x88410 ~ 0x8A0D5
    第四部份 0x8C410 ~ 0x8D779
  • 請求標注錯誤/錯字
    勘誤表
  1. 對白修正
    透過的檔案是 replace.txt
    檔案格式為:
原始字串:替換字串


然而要將檔案轉存為 UTF-16LE 才可以使用

檔案說明:

  1. source code
  • Makefile - make project file
  • font_view.c - font viewer
  • font16_ext.c - 16x16 Trad. Chinese font extractor
  • rom_patch.c - ROM patcher
  • bdf_fix.c - BDF font center / fixed size BITMAP
  • msg_dump.c - message dumper
  1. 吞食天地2 ROM 檔案
  • 同能網 - sango2_chs.nes
  • 豪華中文版 - sango2_cht_pal.nes
  1. 原始字型檔案與其授權
  1. 預先處理字型檔案
  • cubic11_11_80.bdf - Cubic_11_1.100_R.ttf 轉換編修而成的 BDF 字型
  • fusion-pixel-11px-monospaced-zh_hant.bdf - 編修自 12px BDF 版本
  • fireflyR12.bdf - 原始 fireflyR12.bdf 編修並轉換而成的 BDF 字型
  • zpix.bdf - 由 zpix.bdf 轉換而成的 BDF 字型
  • wqysong9.bdf - wqy-bitmapsong/wenquanyi_9pt.pcf 轉換編修而成的 BDF 字型

模擬器推荐

建議使用 FCEUX or FCEUmm 來遊玩, 主要是人物/物品一多還是會有閃爍的情況
使用 FCEUX/FCEUmm 能夠使用 PPU 超頻功能, 開啟的方式為:
選單 Options > Timing Configurations > Overclocking 請勾選, 並在 Vblank Scanlines 數值填入 2

字型效果

俐方體11號
俐方體11號
縫合怪字型
縫合怪字型
螢火飛宋體
螢火飛宋體
最像素
最像素

20250715

更新ROM 檔案, 改採用中文數字取代羅馬數字
主要臨摹自全小素精品點陣體8x8

特別感謝字詞校正

EdgeHwang (ptt)
protect6090 (ptt)
jizang (ptt)
呂礎
Nijop0423
Shouhwei Li
Pi Li
匿名

About

任天堂 吞食天地2 - 諸葛孔明傳 同能網版 繁體中文化 / 正體中文化 專案

Resources

Stars

Watchers

Forks

Packages

No packages published