[PlayStation]Fainaru Fantajii IX Việt ngữ

Thảo luận trong 'Tin tức - Giới thiệu - Thảo luận chung về game' bắt đầu bởi asm65816, 1/4/15.

  1. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,139
    Mới add thoại map 1 thôi, chưa có làm hết.
    Chơi map 1 thì được, từ những map sau trở đi sẽ bị đứng hình.
    Mỗi nhân vật một thoại bựa.
    Cái này làm cho vui thôi. Nếu là fan PW cũng đừng chửi nha.

    https://www.mediafire.com/file/kb9qi85cwmxxblp/ranger.sfc/file
     
  2. badbaby_000

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

    Tham gia ngày:
    7/5/06
    Bài viết:
    1,664
    Nơi ở:
    Hà nội
    Em thấy lạ lạ vì có thoại nên xin bác chơi thử thôi chứ có phải fan đâu có là tốt rồi,đợi bác làm full
     
  3. BadPlayBoy

    BadPlayBoy Dante, the strongest Demon Slayer Lão Làng GVN

    Tham gia ngày:
    7/4/05
    Bài viết:
    14,090
    Tôi cần hướng dẫn cách làm ấy chứ mấy cái này chỉ là showcase kết quả xem cho biết thôi rồi cũng không học được gì.
    Tôi cũng không muốn can thiệp vào game (mấy cái như hack dmg hack tiền, hack chỉ số...) tôi chỉ muốn sửa text sẵn có thôi.
    Còn về việc học nguyên cái kiến thức assembly thì tôi không đủ khôn để học, đọc thử 1 số tài liệu xong chẳng hiểu gì cả.
    Còn xem hướng dẫn kiểu này là hiểu bắt chước làm theo được liền chẳng cần phải học assembly làm gì

    Nhưng cái video này chỉ hướng dẫn cách vẽ lại font chữ và thay đổi text chứ không có hướng dẫn thay đổi độ rộng chữ và kéo dài text.
     
    Chỉnh sửa cuối: 4/1/25 lúc 13:46
  4. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,139
    [/QUOTE]

    Không có công thức chung cho tất cả mọi game, mà chỉ có cách duy nhất là áp dụng kiến thức Assembly thôi, và cần nhiều thời gian debug để hiểu về cấu trúc của game.
    Cái video HM bên trên cũng là kết quả cả quá trình debug chứ không phải tự dưng một phát ra ngay được đâu.
    Quá trình dẫn tới kết quả đó là quá trình debug và áp dụng kiến thức Assembly thôi, không có gì đặc biệt và cũng không phải ngoại lệ.

    Cái mà bạn thấy dễ hiểu dễ bắt chước theo chính là cái kết quả. Nhìn vào kết quả thì ai cũng bắt chước được, nhưng để tới được kết quả đó thì không có cách nào khác ngoài debug. Không có công thức chung.

    P/S: nếu đọc mỗi tài liệu Assembly thôi thì không hiểu là đúng rồi, vì nó chỉ là cái vỏ thôi.
    Cái cốt lõi là chức năng của phần cứng. Đây mới là thứ quan trọng. Khi tìm hiểu về chức năng của phần cứng rồi quay lại đọc Asm thì sẽ thấy dễ hiểu hơn.
     
  5. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,139

    Trả lời lại từng ý cho rõ ràng hơn.

    [1] Độ rộng của font
    Có 2 loại font, là mono-space (fixed width) và proportional (variable width), dịch ra tiếng Việt là font có độ rộng bất biến và loại có độ rộng khả biến.
    Tất cả mọi game từng được sản xuất đều có font thuộc một trong số hai loại font này, không có loại khác.

    Đối với loại đầu, font có độ rộng cố định thì cần debug để tìm hiểu cách mà CPU đọc bộ font đó như thế nào, rồi từ đó viết thêm code để khi CPU render từng ký tự thì phải tham chiếu đến bảng dữ liệu độ rộng mà ta thêm vào.
    Chẳng hạn game gốc sử dụng độ rộng cố định là 8 pixel cho mỗi ký tự. Khi đó ta cần vẽ bộ font mới với các chữ cái lần lượt có kích thước
    a= 7 pixel
    b= 6 pixel
    i = 3 pixel

    Tiếp đến, phải code lại để khi CPU render ký tự "a" thì nó đọc dữ liệu 7 pixel, để rồi bất cứ ký tự nào được render sau "a" sẽ đứng cách vị trí của "a" là 7 pixel.

    Hầu hết các bản dịch game ăn thua nhau ở khoảng này.

    Còn đối với bộ font có độ rộng khả biến sẵn thì mọi việc đơn giản hơn. Lúc này ta không cần code thêm gì cả. Việc duy nhất cần làm là debug để xem CPU đọc dữ liệu độ rộng từ đâu, rồi chỉnh lại (mod/modify) dữ liệu đó cho hợp với nhu cầu, với bộ font mới.

    Chẳng hạn game gốc có độ rộng của "a" = 7 pixel nhưng ta vẽ bộ font mới nhỏ hơn, thì chỉ cần chỉnh lại dữ liệu đó thành con số nhỏ hơn 7 là được.

    Dù game có dùng loại font nào đi nữa, độ rộng của từng ký tự là cố định hay khả biến đi nữa thì độ cao của ký tự luôn là bất biến.
    Tuy nhiên, ta hoàn toàn có thể chỉnh sửa độ cao của ký tự bằng Assembly.

    [​IMG]

    [2] Thêm font/thay font

    Đầu tiên cần debug để biết CPU đọc font tại vị trí nào trong Rom.
    Khi đã biết địa chỉ Rom thì mọi việc còn lại đơn giản thôi. Vẽ bộ font mới rồi chèn vào vị trí đó.
    Hoặc cũng có thể chèn vào bất kỳ vị trí nào khác trong Rom, rồi chỉnh lại code để CPU load font đúng chỗ.
    Một số game tiếng Anh có số slot ký tự trong bộ font rất ít, không đủ slot chứa toàn bộ ký tự có dấu của tiếng Việt thì làm cách này.

    Sau khi biết được cách mà CPU load font thì ta có thể chèn thêm bao nhiêu loại font vào cùng một game cũng được.
    Lúc đó chỉ cần đặt flag cho từng loại font là được. Chẳng hạn, có thể buộc CPU trước khi load font thì phải đọc giá trị ở một vị trí Ram nào đó, rồi từ đó chọn loại font tùy vào giá trị của địa chỉ đó.

    [3] Kích thước thoại
    Hầu hết các bản dịch đều có kích thước thoại phình to hơn so với bản gốc, nên sẽ nảy sinh vấn đề không gian.
    Bản dịch dài hơn thì sẽ lấn vào vùng dữ liệu khác có thể khiến đơ game.
    Còn nếu cố gắng viết sao cho bản dịch nằm gọn trong vùng không gian có sẵn thì bản dịch bị gò bó tù túng, nhiều khi sai lệch ngữ nghĩa vốn có.

    Để giải quyết vấn đề này thì cần phải chuyển khối text sang vị trí trống mới, hoặc cắt nó thành nhiều phần, bố trí vào nhiều nơi khác nhau.
    Trong Rom luôn có những vùng trống không chứa dữ liệu mà ta có thể tận dụng.
    Hoặc giả không còn bất kỳ chỗ trống nào thì ta vẫn có thể mở rộng Rom để tăng thêm không gian trống.
    Lúc này cần chỉnh lại vị trí mà CPU load text là được.
    Dĩ nhiên, để chỉnh được thì cần phải debug để hiểu cách mà CPU load như thế nào.

    Để đọc được debug thì cần phải hiểu đặc thù phần cứng + ngôn ngữ máy của nó. Không có cách nào khác.
     
    BadPlayBoy thích bài này.
  6. Hakbit

    Hakbit You Must Construct Additional Pylons Lão Làng GVN

    Tham gia ngày:
    3/1/07
    Bài viết:
    8,954
    Nơi ở:
    Hanoi
    Chắc ý bác playboy là muốn dịch kiểu xài tools đơn giản chỉ dịch thôi chứ không ham hố đọc thêm về phần cứng phần mềm =v. Mà hình như vụ này từ ngày xưa đã không thể đơn giản được rồi.

    Nhớ ngày trước mọi người dịch thì dính vụ phải vẽ lại font, fix được font thì lại dính vụ giới hạn kí tự nên hầu hết mấy con game snes, gba, ps1 thời đó toàn là dịch không dấu với lại tìm cách thu gọn chữ cái cho khít với ô - viền. Chỉ có cách như bác thớt là can thiệp sâu mới có thể sửa được hoàn chỉnh.
     
  7. BadPlayBoy

    BadPlayBoy Dante, the strongest Demon Slayer Lão Làng GVN

    Tham gia ngày:
    7/4/05
    Bài viết:
    14,090
    Vậy bác hướng dẫn tiếp cái harvest moon kia để tôi bắt chước được không? Hoặc làm 1 số ví dụ mà bác cảm thấy được sử dụng thông dụng nhất. Game nào hên giống thì áp dụng, không thì thôi bỏ qua. Chứ giờ mà học thêm mấy cái kiến thức phần cứng nữa thì nổ não mất, bác học bao nhiêu năm mới được như vậy chứ tôi chịu thua không nhớ được.
    [1]Text trong game Nhật thường luôn xài font có độ rộng cố định, nên nếu muốn dịch game tiếng Nhật thì rất là phiền và việc sửa font là bắt buộc (vẽ lại font rất xấu, câu chữ thì ngắn ngủn do 1 từ kanji của nó chỉ nằm gọn trong 1 ô còn chữ latinh mỗi ký tự là 1 ô). Còn game tiếng Anh thì miễn cưỡng vẫn xài được bộ font cũ của nó (bỏ đi mấy ký tự không có trong tiếng Việt như f, w, z...hoặc tận dụng các dấu ít xài như ;, `, ~ để vẽ tiếng việt vào).

    Cái số [2] thì không quan trọng lắm, biết thêm thì tốt không thì bỏ qua (như nói ở mục [1]).

    [3] Cái này thì tôi biết vị trí trống trong rom thường là mấy chỗ có giá trị hex giống nhau với số lượng lớn (ví dụ 0000000000 hoặc FFFFFFFFFFFFF). Tất nhiên tùy game mà mấy giá trị hex đó có thể dùng làm text hoặc code đặc biệt, nhưng nói chung là tôi nhận biết được chỗ trống là gì. Nếu bác có thể làm ví dụ cái harvest moon kia cách chuyển text sang vị trí trống thì tốt, còn việc mở rộng rom có vẻ phức tạp, cũng không quá cần thiết ví hầu hết game nào cũng có nhiều vị trí trống.

    Hồi xưa tôi được 1 bác chỉ cho trong rom có 1 dãy hex quy định vị trí mà game sẽ load text, từ đó chỉ cần thay đổi giá trị hex đó để nó dẫn đến 1 vị trí mới rồi viết lại text vào vị trí mới, nhưng bác đó không hướng dẫn cách tìm dãy hex đó (bác ấy bảo đoán mò thôi không biết có thật không).

    Với bác xem hộ có thể tìm được text của game này không?

    Bác chuyên về SNES nên không biết có rành về GBA không, nhưng mà đây là 1 game mà ngày xưa tôi cực thích. Tiếc là không có ai hướng dẫn dịch rom GBA cả.
    Không, dùng tool rất gò bó vì không thể áp dụng được cho tất cả, mỗi tool nó chỉ dùng cho riêng game của nó, tôi muốn học cách đơn giản để có thể áp dụng cho nhiều game (nhưng không quá phức tạp đến mức áp dụng cho mọi game vì không thể tiếp thu được lượng kiến thức đó).
    Ví dụ xem cái video harvest moon kia thì hiểu được cách game đó load text như thế nào, cách tìm vị trí bằng mấy cái lệnh assembly dù bản thân không biết gì về assembly, có hình ảnh trực quan+giải thích thì nó dễ hiểu hơn là đọc mấy cái hướng dẫn toàn chữ và mấy cái kiến thức chuyên sâu.
     
    Chỉnh sửa cuối: 4/1/25 lúc 17:47
    Hakbit thích bài này.
  8. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,139
    Có một nguyên tắc chung mà ta có thể áp dụng cho tất cả mọi game trong cùng hệ máy. Đó là quy tắc về đặc điểm phần cứng và ngôn ngữ của nó.
    Mọi game đều theo những ràng buộc về mặt phần cứng, và đó cũng chính là cánh cổng để ta hack/chỉnh sửa và làm mọi trò trong game.

    Về [1] thì không phải game tiếng Nhật nào cũng dùng font mono-space. Rất nhiều game RPG dùng proportional font mà nhà sản xuất đã code sẵn độ rộng của từng ký tự.
    Phần dịch text chính của game là cái phần đơn giản nhất.
    Còn một thứ phức tạp hơn, là text trong menu.
    Lý do cũng dễ hiểu: nó thường liên quan tới thiết kế khung bảng biểu trong game.
    Nhiều khi cần phải vẽ lại cả cái menu, thiết kế lại khung bảng cho phù hợp với bản dịch. Dĩ nhiên để làm được thì cũng cần đến kiến thức phần cứng + Assembly.

    [​IMG]
    [​IMG]

    Về con HM thì OK. Khi nào có thời gian sẽ làm vài video. Con game này không có gì phức tạp.
    Mấy năm trước có cậu tác giả bản dịch HM trên GBA nhờ hướng dẫn hack con HM trên SFC. Vừa mới bắt đầu được ít lâu thì quit đến giờ chả thấy động tĩnh gì.

    Về GBA: vốn không ưa hệ máy này do phần cứng củ chuối và đậm tính mỳ ăn liền của nó (dù mạnh hơn SFC rất nhiều) nên trước giờ không quan tâm đến nó.
    Nhưng nếu muốn thì cũng chẳng có gì khó. Trước đã từng đọc qua tài liệu kỹ thuật của GBA. Cách lập trình của nó đơn giản hơn lập trìn FC/SFC rất nhiều.
     
    BadPlayBoy thích bài này.

Chia sẻ trang này