Cách một lập trình viên dịch ngược game N64 Snowboard Kids chỉ trong 84 ngày

Dịch ngược một tựa game Nintendo 64 sang mã C sạch từng tốn hàng năm trời. Một nhóm vừa hoàn thành Snowboard Kids chỉ trong vỏn vẹn 84 ngày.
Lập trình viên Chris Lewis vừa thông báo tựa game N64 ra mắt năm 1997 Snowboard Kids đã được dịch ngược 100%. Toàn bộ 2.145 hàm của game giờ đây đều có mã C tương ứng, biên dịch ra đúng chính xác từng byte mã máy của bản băng gốc. Dự án này chỉ mất 1/7 thời gian so với phần hai (Snowboard Kids 2), nhờ kinh nghiệm làm từ trước, sự hỗ trợ từ cộng đồng và các AI agent tự động xử lý phần mã thư viện đơn giản.
Vì sao lại quan trọng: Dân speedrun giờ đây có thể xem chính xác công thức đường đi của CPU và logic tốc độ nhân vật. Ngoài việc đào xới dữ liệu, bộ mã nguồn sạch này trao cho dân mod game bản thiết kế chuẩn để port trực tiếp lên PC hoặc tái biên dịch tĩnh (static recompilation).
Dịch ngược không chỉ là đọc mã assembly, mà còn là cuộc vật lộn với trình biên dịch độc quyền IDO 5.3 của SGI. Vì IDO thay đổi mã rất mạnh tay qua các bước tối ưu hóa, một chỉnh sửa nhỏ ở mã C thường làm hỏng hoàn toàn kết quả đầu ra. Điều này buộc các chuyên gia phải nhảy vào xử lý thủ công trong khoảng 4,8% số commit khớp mã.
AI có thể nhai gọn đống mã SDK tiêu chuẩn của Nintendo, nhưng để trị những trò quái gở của một trình biên dịch mã nguồn đóng từ những năm 90 thì vẫn cần đến kinh nghiệm của con người.
Nguồn
- Decompiling a Nintendo 64 game in 84 days — https://blog.chrislewis.au/decompiling-a-nintendo-64-game-in-84-days/
- Hacker News Discussion — https://news.ycombinator.com/item?id=49466006

