[Hướng dẫn]Dịch Mộc đế 5 (Thracia 776)

Thảo luận trong 'Fire Emblem - Mộc đế' bắt đầu bởi asm65816, 29/4/15.

  1. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
    Hướng dẫn dịch Fire Emblem 5 (Thracia 776)


    © Asm65816 2015​


    Bài viết này hướng dẫn về phương diện kỹ thuật của quá trình dịch game Fire Emblem (FE) Thracia 776 cho hệ máy Super Famicom sang tiếng Việt.



    I.Chuẩn bị


    + Rom FE5 không có 200 byte header. Nếu có thì xóa đi (dùng hex editor).
    + Kiến thức cơ bản về hệ nhị phân, hệ thập lục phân.
    + Phần mềm YY-CHR hay bất cứ phần mềm biên tập tile nào.
    + Phần mềm chèn text vào Rom: ở đây dùng Atlas (tải từ www.romhacking.net)
    + Phần mềm dump text từ Rom ra file văn bản: ở đây dùng Catographer (tải từ www.romhacking.net)
    + Hex editor: dùng Windhex (cố định), Stirling (tùy nghi)
    + Phần mềm biên tập ảnh dạng pixel. Ở đây dùng Pixelformer.
    + Phần mềm soạn văn bản: khuyên dùng EmEditor. Không có thì dùng notepad cũng được.
    + Phần mềm Lunar Address (tải từ www.romhacking.net)
    + Phần mềm giả lập cho Super Famicom. Ở đây dùng Snes9X.
    + Phần mềm debugger cho giả lập Super Famicom. Ở đây dùng debugger của Snes9X.
    + Phần mềm tìm kiếm tương đối Search Relative.


    II. Xác định, chỉnh sửa bộ font



    Đầu tiên ta cần xác định bộ font của FE5 có những đặc tính như thế nào. Bật giả lập, load Rom và chơi một đoạn cho tới khi thấy chữ xuất hiện trên màn hình. Sau đó dùng chức năng chụp màn hình (save screen) lúc chữ xuất hiện. Chú ý chỉ chụp bằng chức năng của giả lập, không chụp bằng chức năng của Windows hay máy ảnh để có hình ảnh trung thực nhất.
    Độ phân giải của FE5 cho Super Famicom là 256x224 pixel, khá nhỏ so với những game console đương đại như PlayStation 3 hay Xbox. Cũng dễ hiểu thôi, Super Famicom xuất hiện từ thế kỷ trước, cách PS3 hơn 20 năm mà.
    Ví dụ như thế này.

    [​IMG]

    Rồi dùng phần mềm biên tập ảnh, phóng to phần chữ.

    [​IMG]

    Khi phóng to, ta thấy chữ có 2 màu trắng và xám. Điều này nói rằng font chữ hội thoại của FE5 là kiểu 2 bit plane hay 2 bpp. Bpp là viết tắt của chữ bit per pixel. 2 bpp nghĩa là 2 bit cho mỗi pixel ảnh. Mỗi byte gồm 8 bit, như vậy mỗi byte dữ liệu sẽ là 4 pixel ảnh.

    Vd: giả sử font chữ 1bpp, có chiều cao và chiều rộng là 8x8 pixel. Ta xem những ô trống là 0 (không hiển thị ảnh), những ô có hiển thị ảnh là 1 thì chữ “a” sẽ như sau.

    [​IMG]

    Đổi chuỗi này sang hệ thập lục, ta được $387EC6C6C6C67F3B. Đây là giá trị cho chữ “a” nếu ta xem bằng Hex editor. Còn khi máy tính (Super Famicom) hoạt động, nó chỉ hiểu được chuỗi
    11100001111110110001101100011011000110110001100111111100111011 mà thôi.

    Trên đây là ví dụ về font chữ 1bpp. Còn FE5 lại dùng 2bpp. Thực chất, 2 bpp là dạng triển khai của 1 bpp, trong đó có 1 bit plane thể hiện phần thịt của chữ, 1 bit plane còn lại thể hiện phần bóng mờ của chữ. Nếu font càng sử dụng nhiều bit plane thì nó sẽ có nhiều cấp độ bóng mờ. Nhiều game console sau này sử dụng font nhiều bit plane để tạo ra hiệu ứng đổ bóng nhiều màu, nhiều cấp độ để việc hiển thị chữ được đẹp hơn, rõ ràng hơn so với việc chỉ dùng 1 bit plane (chỉ gồm phần thịt của chữ, không có bóng).
    Hãy hình dung font 2 bpp là sự kết hợp lồng ghép của phần thịt chữ và phần bóng. Lấy lại ví dụ chữ “a” bên trên.


    [​IMG][​IMG]


    Lồng ghép vào nhau


    [​IMG]


    Đã biết font hội thoại của FE5 là 2 bpp. Giờ ta bật YY-CHR, load Rom, chỉnh chế độ xem là 2Bpp GB. Di chuyển xuống địa chỉ từ $340000 đến $353EE0 sẽ thấy font.


    [​IMG]


    Để chắc chắn, ta thử thay đổi chữ け xuất hiện trong đoạn thoại đầu game, xem thay đổi trong game thế nào.

    Thay đổi trong game

    [​IMG]

    Vậy đã chắc chắn từ $340000 đến $353EE0 là font hội thoại. Việc tiếp theo là thay thế font chữ Nhật bằng font chữ Việt bằng cách chỉnh sửa bằng YY-CHR hay bất cứ phần mềm biên tập nào khác.

    Sau khi thay font, ta sẽ thấy tình trạng như thế này. Dân trong nghề gọi là “tiếng mọi” (cave speak). Bởi trật tự sắp xếp của chữ vẫn còn tuân theo trật tự của tiếng Nhật.

    [​IMG]

    Việc tiếp theo cần làm là sắp xếp trật tự của câu chữ thành trật tự tiếng Việt. Nhưng trước đó phải làm một số việc khác.
     
    Chỉnh sửa cuối: 7/6/15
    MacroRTS and Icy_angel like this.
  2. Hoursea

    Hoursea Mayor of SimCity Lão Làng GVN

    Tham gia ngày:
    31/12/09
    Bài viết:
    4,376
    Hỏi ngoài lề: Em thì ít chơi Mộc Đế lắm nhưng em nhớ FE5 là trên gameboy cơ mà? Và đồ hoạ cũng khác cái này nhiều lắm. Tức là thế nào?
     
  3. wontak

    wontak Mega Man Lão Làng GVN

    Tham gia ngày:
    1/7/08
    Bài viết:
    3,102
    Nhớ nhầm rồi.
     
  4. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
    FE 3, 4, 5 đều trên SFC hết.
     
  5. Hoursea

    Hoursea Mayor of SimCity Lão Làng GVN

    Tham gia ngày:
    31/12/09
    Bài viết:
    4,376
    Aha. Hoá ra nhớ nhầm. FE8 trên GBA! Đấy, bác dịch bản đấy cho hay. FE thì càng về sau càng hay mà. (ko tính mấy bản DS cùi mía)
     
  6. eliwood17

    eliwood17 Mario & Luigi

    Tham gia ngày:
    8/9/05
    Bài viết:
    750
    Không đâu bạn mình thấy FE mấy bản đầu mới là hay nhất đó theo thứ tự thì phải là FE 4 3 5 tất cả là phiên bản trên SFC còn mấy phiên bản 6,7,8 trên GBA thì đc đồ họa và hỉnh ảnh đẹp hơn thôi nhưng cốt truyện và nội dung thì thua xa , phiên bản mới nhất thì chỉ có FE 10 và 2 bản mới nhất là 13, 14 trên 3DS được gọi là nổi trội thôi .Với mình thì dòng FE 4 ,5 đến giờ gần 20 năm mình vẫn còn chơi lại mà không biết chán dù đã mua máy 3DS chơi FE 13 ,14 rùi
     
  7. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
    Hình ảnh trên GBA thấy nản. Nhảy qua nhảy về là xong, cái cảnh nền cũng nghèo nàn. Thấy 2 bản đầu trên FC còn hay hơn.
     
  8. titytity

    titytity Mario & Luigi

    Tham gia ngày:
    3/4/06
    Bài viết:
    815
    Nơi ở:
    HCM
    đang hóng phần tiếp theo từ asm65816 ; làm sao để ráp lại thành 01 câu hoàn chỉnh !
     
  9. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
    Máy tính của mình đang tòi mất màn hình, chắc phải đợi một thời gian nữa mới tiếp tục hướng dẫn lại.

    Ma...

     
  10. battle2

    battle2 The Warrior of Light Lão Làng GVN

    Tham gia ngày:
    6/3/06
    Bài viết:
    2,493
    dịch sh4 thì ngon , cái đó vừa hay vừa sợ
     
  11. tugay

    tugay Mario & Luigi Lão Làng GVN

    Tham gia ngày:
    15/2/05
    Bài viết:
    849
    Nơi ở:
    Hà Nội
    hóng bản việt :D
     
  12. Narga

    Narga Youtube Master Race

    Tham gia ngày:
    24/1/03
    Bài viết:
    68
    em cũng đang ngóng phần tiếp theo
     
  13. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
  14. Fenris

    Fenris C O N T R A Lão Làng GVN

    Tham gia ngày:
    18/5/09
    Bài viết:
    1,990
    Nơi ở:
    Sài Gòn , Q 10
    tin vui muốn khóc T_T
     
  15. MacroRTS

    MacroRTS Youtube Master Race

    Tham gia ngày:
    19/11/11
    Bài viết:
    63
    Chia buồn với bác :'(
     
  16. 11110

    11110 Sonic the Hedgehog

    Tham gia ngày:
    10/3/07
    Bài viết:
    4,642
    bác asm ở đâu mà bị trộm miết X_X
     
  17. Narga

    Narga Youtube Master Race

    Tham gia ngày:
    24/1/03
    Bài viết:
    68
    Mình đang có ý định dịch Breath of Fire 2 và Romance of Three Kingdom IV - Wall of Fire trên SNES, bạn @asm65816 có thể gợi ý cho mình các tài liệu cần thiết không?
     
  18. haman

    haman Mayor of SimCity Lão Làng GVN

    Tham gia ngày:
    26/6/04
    Bài viết:
    4,422
    Nơi ở:
    Axis
    sao mình xác định được $340000 đến $353EE0 là phần hội thoại vậy T_T
     
  19. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
    Bạn xem trong chữ ký của mình.

    Ở bước này chưa xác định được thoại nằm ở đâu cả. Để xác định thì cần phải qua bước lậ table.
    Và rom FE5 có 2 loại, trong bài này dùng ROM version.
     
  20. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
    III. Lập table


    Table là một kiểu file text liệt kê các ký tự sử dụng trong game được encode với giá trị gì. Đối với PC, trong kiểu encode ANSI thì khi ta gõ chữ “a” trên bàn phím thì phím sẽ truyền một tín hiệu với tần suất là xxx vào trung tâm xử lý, tại đây sẽ phát ra dữ liệu có giá trị là $61, và màn hình thể hiện ra chữ “a”. Tương tự, bất cứ khi nào cần thể hiện chữ ra màn hình, nếu PC đọc được dữ liệu $61 thì nó sẽ cho ra chữ “a”, $62 ra chữ “b”, cứ thế mà tiếp tục, $6B cho chữ “k”.
    Hầu như tất cả mọi kiểu encode ký tự đều có giá trị tương đương nhau đối với 26 chữ cái La Tinh, trừ một số bộ font đặc biệt. Tuy nhiên đối với các ký tự có dấu trong tiếng Việt thì giá trị khác nhau tùy thuộc vào kiểu encode. Chẳng hạn với kiểu encode UTF-7 thì chữ “á” có giá trị $2B414F452D, với kiểu UTF-8 without signature thì “á” có giá trị $C3A1, UTF-8 with signature lại có giá trị $EFBBBFC3A1 cho chữ “á”,….

    Còn đối với các game console từ thế hệ PlayStation 2 trở về trước thì đa phần đều không tuân theo các chuẩn encode ký tự của PC, do đó khi load game bằng Hex editor thì chỉ thấy được một loạt giá trị Hex chứ không thấy được phần text có nghĩa tương ứng ở cột bên phải của Hex editor.

    Bằng cách lập table, ta biết được giá trị hex nào tương đương với ký tự nào trong game. Việc này có 3 ý nghĩa: giúp xác định text trong Hex editor, giúp dump (trích xuất) text từ Rom và giúp chèn lại text vào Rom.
    Hình dưới đây là Rom FE5 trong Hex editor tại vị trí $AA490 trở đi, bên phải là cột hiển thị text nhưng hiện tại vẫn chưa thấy được text đúng.

    [​IMG]

    Như vậy, ta cần phải lập table xác định ký tự nào trong game tương ứng với giá trị nào.
    Ở đây ta dùng phương pháp tìm kiếm tương đối va các bước như sau:

    1. Chạy game cho tới khi thấy được text. Chọn một cụm từ không quá dài và phải mang tính đặc trưng, ít bị lặp lại trong game. Như hình dưới đây chọn cụm từ “karakumo” vì đây là cụm từ hơi đặc biệt, tần số sử dụng trong hội thoại tiếng Nhật khá ít nên kết quả tìm cũng sẽ được chắt lọc hơn những từ phổ thông.

    [​IMG]

    2. Mở bảng font của game để xác định vị trí tương đối của từng ký tự. Nếu cho “ka” là vị trí số 1 thì “ku” là số 3, “ke” là số 4, “ko” là số 5. Cũng có thể đặt số 1 cho chữ “a”, khi đó thì “ka” trở thành số 6. Đây chỉ là những vị trí tương đối cho biết chữ này cách chữ kia bao nhiêu chữ thôi, chẳng hạn chữ “e” trong bảng chữ cái La Tinh cách chữ “c” 1 chữ, nên nếu “c” là 1 thì “d” là 2 và “e” là 3.

    [​IMG]

    Vậy ở đây ta thấy “karakumo” có vị trí 1 đối với “ka”, 34 với “ra”, 3 với “ku” và 30 với “mo”. Ghi nhớ “karakumo” = 1, 34, 3, 30.

    3. Đặt file Rom vào cùng thư mục với phần mềm dò tìm tương đối, chạy file RELSEARC.EXE và một giao diện hiện lên, đòi nhập tên file cần tìm và nhập vị trí các ký tự trong chuỗi cần tìm.

    [​IMG]

    Kết quả tìm kiếm chuỗi 1-34-3-30 (karakumo) cho ra tại địa chỉ $1484B (chữ h sau cùng cho biết chuỗi số trước đó ở hệ thập lục). Vì chuỗi ta tìm khá độc đáo nên chỉ có một kết quả. Trong trường chuỗi cần tìm không quá độc đáo thì dẫn đến nhiều kết quả, và khi đó cần phải thử các kết quả để biết chắc chắn.
    Trong hình trên thì trình dò tìm tương đối báo rằng tại $1484B có chuỗi hex thỏa mãn các điều kiện: ký tự 2 cách 1 là 33 đơn vị, 3 cách 1 là 2 đơn vị và 4 cách 1 là 29 đơn vị. Nói cách khác, cụm từ ta cần tìm đang ở vị trí $1484B.
    Trong cửa sổ Windhex, nhấn Ctrl + G và nhập địa chỉ 1484B, Enter để nhảy đến vị trí này. Tại đây ta thấy các giá trị 16-36-17-32….
    Thử kiểm chứng: $36 - $16= $20 = (32+1)=33, $17-$16=$1=(1+1)=2,
    $32-$16= $1C = (28+1) =29. Hoàn toàn khớp với điều kiện đặt ra.

    [​IMG]

    Thử thay đổi 16 thành 17, save Rom và chạy game xem có thay đổi gì không.

    [​IMG]

    Ta tăng từ $16 lên $17 và kết quả chữ “ka” đã biến thành “ki”. Vậy có thể chắc chắn rằng $16 là giá trị của chữ “ka”, và $17 là giá trị của chữ “ki”. Đối với các chữ cái khác, có thể dùng lại phương pháp tìm kiếm tương đối này để dò, hay đơn giản hơn là dùng phương pháp tăng dần hay giảm dần đối với các ký tự đứng trước/sau chữ cái gốc. Vì ta chọn “ka” làm gốc và có giá trị $15 nên đứng ngay trước “ka” là “u” nên “u” có giá trị “$14”.
    Khi biết được hết các giá trị này, ta lập file có phần mở rộng .tbl như sau

    [​IMG]

    Nhớ lưu file ở dạng encode Shift-Jis để đọc trong Windhex. Còn đối với mục đích dump (xuất) hay Insert (chèn) text thì lưu ở bất cứ định dạng nào hỗ trợ ký tự Nhật là được.
    Lưu ý là ngoài bộ chữ Kana chiếm 1 byte mỗi ký tự thì FE5 còn sử dụng bộ chữ Hán chiếm 2 byte mỗi ký tự. Vì chữ Hán chiếm 2 byte nên không thể dùng phần mềm dò tìm tương đối để tìm mà chỉ có thể tìm bằng cách sửa đổi các giá trị hex chưa biết trong một đoạn text đã xác định được (vì đã biết hết Kana), xem chữ thay đổi trong game ra sao rồi từ đó dựa vào vị trí của các chữ Hán trong bảng font mà tính.

    [​IMG]

    Trở lại vị trí $AA490 trong Windhex, load file table đã lập và giờ đây ta có thể thấy được text đã hiển thị đúng trong cột bên phải.
    Để tìm vị trí một đoạn text bất kỳ trong game khi đã lập xong table, hãy nhấn Control + K và chọn ký tự Kana cần tìm.
    Sau khi lập xong table để đọc và dump (tiếng Nhật) thì cần phải lập một table khác dành cho việc chèn text sau khi dịch vào Rom. Table thứ hai này có cùng các giá trị với table đầu tiên, chỉ thay đổi các ký tự Kana thành các ký tự La Tinh tương ứng mà ta đã chỉnh sửa trong bộ font.
     

Chia sẻ trang này