Chia sẻ đam mê công nghệ
Phần mềm

The Wind Waker chạy native trên New 3DS XL, nhưng CPU còn quá tải

Một bản thử nghiệm đưa The Legend of Zelda: The Wind Waker lên New Nintendo 3DS XL bằng cách biên dịch mã game thay vì giả lập CPU GameCube. Game đã hiện được hình ảnh và vào phần mở đầu, nhưng chi phí dịch lệnh đồ họa vẫn khiến tốc độ thấp và gây treo máy.

Tóm tắt nhanh

  • The Wind Waker đã khởi động được trên New Nintendo 3DS XL bằng một bản port native, không phải giả lập CPU GameCube.
  • Bản thử nghiệm đã render được bầu trời, thuyền và logo, nhưng vẫn chậm và có thể đứng hình; đây chưa phải bản chơi hoàn chỉnh.
  • Chi phí dịch lệnh đồ họa đang dồn lên CPU: mỗi khung hình mất khoảng 40 ms ở nhân chính và 100 ms ở nhân phụ, trong khi GPU cần khoảng 25 ms.
  • Dự án không phát hành sẵn dữ liệu game; quy trình build yêu cầu người dùng có đĩa GameCube của mình.

The Legend of Zelda: The Wind Waker đã vượt qua một cột mốc kỹ thuật trên New Nintendo 3DS XL: game khởi động và hiển thị được một phần đồ họa, nhưng hiệu năng còn xa mức chơi ổn định. Điểm đáng chú ý không nằm ở việc một máy cầm tay đời cũ “chạy được Zelda”, mà ở cách nhóm thử nghiệm đang chuyển mã GameCube sang phần cứng 3DS và phần việc xử lý đồ họa vẫn đè nặng lên CPU.

Port native bỏ mô phỏng CPU, nhưng vẫn phải chuyển lệnh đồ họa

Màn hình New Nintendo 3DS XL hiển thị logo The Legend of Zelda: The Wind Waker
Màn hình logo đã render được trên New 3DS XL, nhưng đây mới là cột mốc khởi động chứ chưa phải dấu hiệu game chạy ổn định.
Video thử nghiệm thực tế The Wind Waker khởi động trên New Nintendo 3DS XL do Bryan Adams chia sẻ.

Đây là hướng port native dựa trên mã nguồn được cộng đồng dịch ngược, không phải cách chạy nguyên máy GameCube trong một trình giả lập. Dự án SwitchWaker cho biết mã game được biên dịch từ bản decompilation và không dùng mô phỏng CPU; nền tảng đó tạo cơ sở để chuyển game sang phần cứng khác. Với bản thử nghiệm trên 3DS, logic game được biên dịch cho CPU ARM11 bằng toolchain devkitARM.

Phần đồ họa lại không thể bê nguyên sang máy mới. The Wind Waker phát lệnh theo cách của GPU GameCube, còn New 3DS XL dùng GPU PICA200. Một lớp chuyển đổi phải dịch các lệnh GX sang lệnh mà phần cứng 3DS xử lý được, thông qua thư viện đồ họa citro3d. Vì vậy, “native” ở đây mô tả cách chạy mã CPU; nó không có nghĩa là mọi lệnh đồ họa GameCube được GPU 3DS hiểu trực tiếp.

Phân biệt này giải thích vì sao bỏ giả lập CPU vẫn chưa đem lại tốc độ tốt. Mỗi khung hình, hệ thống còn phải đọc và chuyển đổi danh sách lệnh vẽ của các model. Theo số đo của nhà phát triển, khâu dịch tốn khoảng 40 ms trên nhân CPU chính và khoảng 100 ms trên nhân phụ dành cho vẽ, trong khi GPU cần khoảng 25 ms. Khi CPU còn bận chuẩn bị lệnh lâu hơn thời gian GPU dựng hình, tăng tốc GPU đơn thuần không giải quyết được nút thắt.

Chi phí dịch lệnh, không phải sức vẽ của GPU, đang ghìm tốc độ

Những con số này cho thấy phần việc nặng nhất hiện tại nằm trước lúc GPU bắt đầu vẽ: game lưu model dưới dạng danh sách lệnh đồ họa GameCube, rồi port phải giải mã và dịch lại các lệnh ấy liên tục. Nếu quy trình lặp ở từng khung hình, chi phí CPU sẽ tích lũy ngay cả khi bản thân PICA200 đã hoàn tất phần dựng hình tương đối sớm.

Trong bản demo ban đầu, chế độ an toàn để CPU xử lý các phép tính 3D cho kết quả ổn định hơn nhưng chậm. Khi chuyển sang chế độ dùng GPU, máy từng treo ở màn hình chọn file vì PICA200 gặp vấn đề với tọa độ texture do GPU GameCube tự sinh, vốn được dùng cho một số hiệu ứng phản chiếu và ánh sáng. Nhà phát triển chuyển riêng nhóm lệnh này sang CPU để vượt qua màn hình chọn file và vào phần mở đầu; đổi lại, CPU phải gánh thêm việc.

RAM cũng chưa phải nguyên nhân chính theo thông tin hiện có: game vừa đủ trong chế độ bộ nhớ mở rộng của New 3DS. Hướng tối ưu được đặt ra là chia việc tốt hơn cho các nhân CPU phụ và chuyển đổi model một lần khi nạp thay vì dịch lại mỗi khung hình. Đây là thay đổi kiến trúc có thể giảm phần việc lặp, nhưng chưa có kết quả chứng minh bản thử nghiệm đã đạt tốc độ chơi được.

Cột mốc này đáng chú ý với kỹ thuật port, chưa phải bản Zelda để tải về

Video demo cho thấy bầu trời, con thuyền và logo đã xuất hiện sau giai đoạn lỗi đồ họa, nhưng chính nhà phát triển mô tả đây là tiến triển thử nghiệm chứ chưa phải bản phát hành chơi được. Tốc độ còn thấp và game vẫn đóng băng ở một số đoạn. Hiện không có ngày phát hành được công bố, nên người dùng New 3DS XL chưa thể xem đây là một lựa chọn để chơi The Wind Waker.

Điểm có giá trị với người quan tâm homebrew nằm ở bài toán chuyển đổi: dịch ngược giúp biên dịch logic game sang CPU mới, nhưng đường đi của đồ họa vẫn cần một lớp tương thích và tối ưu riêng. Việc New 3DS có phần cứng xử lý mạnh hơn đời 3DS trước không tự động loại bỏ chi phí đó; tài liệu Nintendo từng mô tả dòng máy mới có nâng cấp sức xử lý, song đây vẫn là phần cứng cầm tay với giới hạn CPU và GPU riêng.

Khâu build cũng không đi kèm dữ liệu trò chơi. Các kho mã nguồn liên quan nêu rõ không chứa tài sản game; người dùng cần tự có đĩa GameCube phù hợp để tạo dữ liệu cần thiết. Vì vậy, dự án hiện phù hợp để theo dõi tiến độ port hơn là tìm một gói cài đặt sẵn.

Nguồn tham khảo: Bryan Adams; SwitchWaker; zeldaret/tww; citro3d; Aurora; Nintendo.

Bài viết mới nhất