SPC700
Dragon Quest
- 1/10/20
Trang phân tích mọi khía cạnh kỹ thuật của Final Fantasy VIII (FF8) do Square Soft phát triển cho máy chơi game Sony PlayStation (PSX), được phát hành ra thị trường vào năm 1999. Phần này được biên soạn lại từ những ghi chú cá nhân trong quá trình debug bản PSX sau khi hoàn thiện bản dịch tiếng Việt cho phiên bản FF8 PC vào năm 2014.
STONE BOAT - FINAL FANTASY VIII (google.com)
Những phân tích trong trang này dựa trên đối tượng là Rom bản tiếng Nhật. Bản Âu-Mỹ có thể khác đôi chút, nhưng những nét chính thì vẫn giống vậy.
1. Các kiểu thoại
Phần thoại (text) xuất hiện trong các phiên bản Final Fantasy, không riêng gì FF8, đều nằm ở ba tình huống với cách gọi tên như bên dưới.
Khi mở Rom FF8 bằng các phần mềm chuyên đọc CD-Rom như CDMage thì sẽ thấy cả 4 disc của FF8 đều có cấu trúc giống nhau, gồm có 3 file như dưới đây.
SYSTEM.CNF là file chứa các tham số liên quan tới lệnh khởi động máy PSX, còn SLPS_018.8ZZZ (ZZZ là 0 với Disc1, là 1 với Disc2,....) là file thực thi (exe) của máy PSX, chứa mã máy để thực thi game. Các lệnh chính của game đều được chứa trong file này. File FF8DISCZZZ.IMG (ZZZ là 1 với Disc1, là 2 với Disc2,...) là nơi chứa dữ liệu hình ảnh, các loại texture, dữ liệu video/âm thanh, các loại pointer, dữ liệu hội thoại và một phần lệnh thi hành.
Dữ liệu text trong Menu và World Map được DMA từ CD-ROM (từ file FF8DISCZZZ.IMG) vào Ram ngay sau khi khởi động máy, nên máy có thể truy cập vào những đoạn text này vào bất cứ lúc nào khi người chơi nhấn nút bật Menu. Còn với dữ liệu text của Field và Battle chỉ được DMA vào Ram khi vào trận đánh hoặc vào Field tương ứng.
Dữ liệu thoại của Menu, World Map, Battle đều ở dạng không nén, còn dữ liệu thoại của Field thì được nén theo kiểu lzss. Mỗi khối dữ liệu thoại trong Field bao gồm: góc camera trong field đó, các event điều khiển nhân vật qua lại/cử chỉ khi nói chuyện, đường đi trong field, pointer dẫn tới dữ liệu thoại, dữ liệu thoại, font chữ Kanji đặc biệt (không được dùng tới trong bản Âu-Mỹ).
Mỗi khối thoại trong Field được đặt tên theo từng Field + vị trí trong Field. Những câu thoại được kích hoạt trong cùng một khu vực được xếp chung trong một khối dữ liệu. Chẳng hạn, lời thoại ở các khu vực trên tầng 2 của Balamb Garden, gồm phòng học, hành lang,... được xếp vào các khối dữ liệu có tên: bg2f_1, bg2f_11, bg2f_21, bg2f_4,... Trong đó "bg" là viết tắt của Balamb Garden. Lưu ý là những từ viết tắt này chủ yếu là của tiếng Nhật, ít khi là viết tắt của từ tiếng Anh. Chẳng hạn, các khối thoại xảy ra trong phòng y tế của Balamb Garden gồm có: bghoke_1, bghoke_2, bghoke_3 trong đó "hoke" là viết tắt của "hokenshitsu" (保健室 - phòng y tế) hay những khối thoại xảy ra ở khu vực nhà dân ở Timber gồm có: timin1, timin21, timin22.... Trong đó "ti" là viết tắt của "Timber", còn "min" là viết tắt của "minke" trong tiếng Nhật (民家-nhà dân). Trong một số ít trường hợp thì tên của khối dữ liệu được đặt theo tiếng Anh, chẳng hạn như tipub1 là những đoạn thoại xảy ra trong quán rượu ở Timber.
Có thể dò tìm vị trí của từng khối dữ liệu bằng cách dùng Binary editor (Hex editor) để tìm những từ khóa (định dạng Ascii) như trên đối với file Ram dump, hoặc với FF8DISCZZZ.IMG. Tuy nhiên, đối với file IMG thì khối dữ liệu ở dạng đã nén (lzss) nên đôi khi sẽ không tìm thấy từ khóa cần thiết. Còn với file Ram dump, do ở dạng không nén nên kết quả dò tìm luôn trúng.
STONE BOAT - FINAL FANTASY VIII (google.com)
Những phân tích trong trang này dựa trên đối tượng là Rom bản tiếng Nhật. Bản Âu-Mỹ có thể khác đôi chút, nhưng những nét chính thì vẫn giống vậy.
1. Các kiểu thoại
Phần thoại (text) xuất hiện trong các phiên bản Final Fantasy, không riêng gì FF8, đều nằm ở ba tình huống với cách gọi tên như bên dưới.
- Battle: những đoạn text xuất hiện trong trận đấu, chẳng hạn như khi Quistis nhắc Squall nhấn L1 để đánh nổ bằng Gunblade ở đầu Disc 1, trong trận đánh đầu tiên.
- World Map: những đoạn text xuất hiện khi nhân vật lang thang trên World Map, chẳng hạn như khi gặp event ném viên đá trên mặt hồ.
- Menu: phần text xuất hiện khi truy cập Menu bằng cách nhấn nút tam giác (mặc định bản Âu-Mỹ là nút tròn), chẳng hạn như text giải thích Item, tên nhân vật,....
- Field: là các địa điểm mà khi vào đó, góc Camera sẽ cố định và không xảy ra những trận đánh ngẫu nhiên. Balamb Garden, thành phố Timber, thành phố Galbadia, khu di tích Centra,... đều là các Field. FF8 có số lượng lời thoại nhiều kinh khủng, trong đó phần thoại xuất hiện trong các Field chiếm phần lớn. Phần text ở Field là đối tượng được quan tâm nhất trong các bản dịch ngôn ngữ khác.
Khi mở Rom FF8 bằng các phần mềm chuyên đọc CD-Rom như CDMage thì sẽ thấy cả 4 disc của FF8 đều có cấu trúc giống nhau, gồm có 3 file như dưới đây.
- FF8DISCZZZ.IMG
- SLPS_018.8ZZZ
- SYSTEM.CNF
SYSTEM.CNF là file chứa các tham số liên quan tới lệnh khởi động máy PSX, còn SLPS_018.8ZZZ (ZZZ là 0 với Disc1, là 1 với Disc2,....) là file thực thi (exe) của máy PSX, chứa mã máy để thực thi game. Các lệnh chính của game đều được chứa trong file này. File FF8DISCZZZ.IMG (ZZZ là 1 với Disc1, là 2 với Disc2,...) là nơi chứa dữ liệu hình ảnh, các loại texture, dữ liệu video/âm thanh, các loại pointer, dữ liệu hội thoại và một phần lệnh thi hành.
Dữ liệu text trong Menu và World Map được DMA từ CD-ROM (từ file FF8DISCZZZ.IMG) vào Ram ngay sau khi khởi động máy, nên máy có thể truy cập vào những đoạn text này vào bất cứ lúc nào khi người chơi nhấn nút bật Menu. Còn với dữ liệu text của Field và Battle chỉ được DMA vào Ram khi vào trận đánh hoặc vào Field tương ứng.
Dữ liệu thoại của Menu, World Map, Battle đều ở dạng không nén, còn dữ liệu thoại của Field thì được nén theo kiểu lzss. Mỗi khối dữ liệu thoại trong Field bao gồm: góc camera trong field đó, các event điều khiển nhân vật qua lại/cử chỉ khi nói chuyện, đường đi trong field, pointer dẫn tới dữ liệu thoại, dữ liệu thoại, font chữ Kanji đặc biệt (không được dùng tới trong bản Âu-Mỹ).
Mỗi khối thoại trong Field được đặt tên theo từng Field + vị trí trong Field. Những câu thoại được kích hoạt trong cùng một khu vực được xếp chung trong một khối dữ liệu. Chẳng hạn, lời thoại ở các khu vực trên tầng 2 của Balamb Garden, gồm phòng học, hành lang,... được xếp vào các khối dữ liệu có tên: bg2f_1, bg2f_11, bg2f_21, bg2f_4,... Trong đó "bg" là viết tắt của Balamb Garden. Lưu ý là những từ viết tắt này chủ yếu là của tiếng Nhật, ít khi là viết tắt của từ tiếng Anh. Chẳng hạn, các khối thoại xảy ra trong phòng y tế của Balamb Garden gồm có: bghoke_1, bghoke_2, bghoke_3 trong đó "hoke" là viết tắt của "hokenshitsu" (保健室 - phòng y tế) hay những khối thoại xảy ra ở khu vực nhà dân ở Timber gồm có: timin1, timin21, timin22.... Trong đó "ti" là viết tắt của "Timber", còn "min" là viết tắt của "minke" trong tiếng Nhật (民家-nhà dân). Trong một số ít trường hợp thì tên của khối dữ liệu được đặt theo tiếng Anh, chẳng hạn như tipub1 là những đoạn thoại xảy ra trong quán rượu ở Timber.
Có thể dò tìm vị trí của từng khối dữ liệu bằng cách dùng Binary editor (Hex editor) để tìm những từ khóa (định dạng Ascii) như trên đối với file Ram dump, hoặc với FF8DISCZZZ.IMG. Tuy nhiên, đối với file IMG thì khối dữ liệu ở dạng đã nén (lzss) nên đôi khi sẽ không tìm thấy từ khóa cần thiết. Còn với file Ram dump, do ở dạng không nén nên kết quả dò tìm luôn trúng.