[PlayStation]Fainaru Fantajii IX Việt ngữ

  • Thread starter Thread starter asm65816
  • Ngày gửi Ngày gửi
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
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
 
Tất cả những cái bạn nói đều được giải quyết bằng kiến thức.
Kiến thức gì?
Kiến thức game đã được lập trình ra sao?
Dĩ nhiên chúng ta không có source code, nên để biết được game đã được lập trình ra sao thì không có cách nào khác ngoài việc debug.
Mà để debug được thì cần có kiến thức về phần cứng của hệ máy mà ta đang làm việc, cùng với kiến thức về ngôn ngữ phần mềm của hệ máy đó, tức Assembly.

Một vài ví dụ dùng debugger để làm đủ mọi trò trong game.
Con game Power Rangers vốn không có thoại, nhưng đã được thêm font thêm thoại bằng kỹ thuật Assembly.

Về cách tạo font chữ/độ rộng thì cũng không khác, cần một số kiến thức về phần cứng.

Đại khái, muốn chuyển font có kích thước cố định thành font có kích thước khả biến thì cần render nó trong thời gian thực.

Hãy xem cách mà CPU vẽ từng chữ cái qua từng dòng lệnh trong thời gian thực như thế nào.
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:
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 rồi cũng không học được gì.
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ì
[/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.
 
Tôi xem mấy cái video hướng dẫn của bác về cách dịch rom SNES tiếng Nhật thì biết cách tìm font, vẽ lại font, thay đổi text, nhưng có điều font gốc tiếng Nhật nó dùng khung font hình vuông trong khi font chữ latinh là hình chữ nhật đứng, cho nên nếu vẽ lại trực tiếp từ font tiếng Nhật thì các ký tự nó bị giãn khoảng cách chứ không nằm sát nhau, ngoài ra có một số game nó dùng font chữ rất to nếu chuyển qua ký tự latinh nhìn sẽ rất xấu. [1]

Tôi thấy trong bản hướng dẫn dịch FF9 có nhắc đến việc có thể thay đổi độ rộng ký tự nhưng không có hướng dẫn cụ thể, bác có video nào hướng dẫn cách thay hoặc thêm font khác vào rom không? [2]


Với lại text trong rom gốc có giới hạn cố định số ký tự trong 1 câu, thường khi dịch 1 câu tiếng Nhật sang tiếng Việt thì sẽ rất dài không đủ để viết, nhưng rom bác dịch thấy câu từ rất thoải mái không có giới hạn này, bác có video hướng dẫn cách viết text dài không?[3]


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.

n8UZljF.png


[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.
 
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ắ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.
 
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.
Đố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.
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.

[3] Kích thước thoại
Để 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.

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.
[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ả.
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.
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:
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.

2plqpbb.png

8uNzmZY.png


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.
 
FF có mấy cái bí mật kiểu này bác có dùng cách hack mò ra được không?

Có, debug sẽ ra hết. Các event trong game xảy ra với các điều kiện phân nhánh: nếu có abc thì xảy ra event xyz. Thường thì khi chơi bình thường, ta chỉ thấy được một vài cái event xảy ra ở một vài điều kiện. Nhưng khi debug thì thấy được tổng quát toàn bộ mọi thứ về nó, lần theo những nhánh điều kiện khác nhau thì sẽ tìm được nhiều thứ mà chơi bình thường không gặp được.
 
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.

2plqpbb.png

8uNzmZY.png


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.
Cái 4 còn vướng gì nữa thầy ơi?
 
Cái 4 còn vướng gì nữa thầy ơi?

Vướng mỗi thì gian.
Game này dùng kiểu text render sẵn trong mọi tình huống, có nhược điểm là độ rộng của các chữ đều nhau, chỉ hợp với tiếng Nhật/Trung.
Bản dịch phải code lại thành kiểu render từng chữ cái trong thời gian thật để cho độ rộng biến thiên. Nhưng phần này làm cho thoại chính thì OK, chứ làm cho text menu thì rất nặng, mỗi lần load menu hơi lâu.
Cho nên phải code lại phần menu thành kiểu render sẵn cho từng đoạn text menu để bảo đảm độ rộng biến thiên.

Cách này có ưu điểm là cho độ rộng biến thiên, hiển thị được nhiều loại font trên một màn hình, load nhanh nhưng có nhược điểm là ngốn nhiều thời gian của coder để render sẵn.
Trong game có cả nghìn đoạn text menu nên mất nhiều thời gian thôi.
 
Vướng mỗi thì gian.
Game này dùng kiểu text render sẵn trong mọi tình huống, có nhược điểm là độ rộng của các chữ đều nhau, chỉ hợp với tiếng Nhật/Trung.
Bản dịch phải code lại thành kiểu render từng chữ cái trong thời gian thật để cho độ rộng biến thiên. Nhưng phần này làm cho thoại chính thì OK, chứ làm cho text menu thì rất nặng, mỗi lần load menu hơi lâu.
Cho nên phải code lại phần menu thành kiểu render sẵn cho từng đoạn text menu để bảo đảm độ rộng biến thiên.

Cách này có ưu điểm là cho độ rộng biến thiên, hiển thị được nhiều loại font trên một màn hình, load nhanh nhưng có nhược điểm là ngốn nhiều thời gian của coder để render sẵn.
Trong game có cả nghìn đoạn text menu nên mất nhiều thời gian thôi.
Khởi động Dragon quest chưa bác? worry-99
 
2024-12-14srw4162.png
ráng về đích trước Tây Lông nha thầy
2024-12-14srw4157.png
2021-03-10srw4095.png
 
Dự định năm nay sẽ làm một trong hai con này.

mEGfsoE.png




Dù trước hay sau thì bản tiếng Việt cũng sẽ có nhiều tính năng mà bản Tây lông không có.
Tại sao bác không dịch con thracia vậy ?
 
2024-12-14srw4162.png
ráng về đích trước Tây Lông nha thầy
2024-12-14srw4157.png
2021-03-10srw4095.png
Trong khi chờ em đang chơi hai bản z2 trên PSP tiếc là chỉ dịch menu với skill
 
Mới dứt em DSi XL, build khác bọt hẳn con New 2DS XL ghẻ lỡ. Chơi NDS, GBA cũng ko nhoè như chơi giả lập Switch (mặc dù đã chỉnh 800 cái shader).
c988b932-19ef-4bf6-a1b8-d1e938d70df0.jpg
 
Tại sao bác không dịch con thracia vậy ?

Thật ra là có, nhưng không phải dạng ưu tiên vì bản Thracia kém 2 bản còn lại trên SFC về nhiều mặt. Nội dung nhợt nhạt, nét vẽ kém sắc, âm nhạc cũng không hứng. Gameplay nặng nề.

 
Mới dứt em DSi XL, build khác bọt hẳn con New 2DS XL ghẻ lỡ. Chơi NDS, GBA cũng ko nhoè như chơi giả lập Switch (mặc dù đã chỉnh 800 cái shader).
c988b932-19ef-4bf6-a1b8-d1e938d70df0.jpg

Trong các đời 3DS thì con New 3DS có màn sắc nét, sáng nhất. Mấy con khác không bằng được.
 
Back
Top